|
|
return: text
|
|
|
lang: plpgsql
|
|
|
src: |
|
|
|
DECLARE
|
|
|
result TEXT;
|
|
|
BEGIN
|
|
|
RAISE NOTICE '%' , 'Creation table de travail';
|
|
|
DROP TABLE IF EXISTS w_rss_ipa
|
|
|
;
|
|
|
CREATE TEMP TABLE w_rss_ipa
|
|
|
(
|
|
|
rss_id bigint,
|
|
|
ipa_id bigint,
|
|
|
est_maitre character(1),
|
|
|
nb_ipa bigint DEFAULT 1
|
|
|
)
|
|
|
;
|
|
|
CREATE INDEX w_rss_ipa_i1 ON w_rss_ipa USING btree (rss_id);
|
|
|
CREATE INDEX w_rss_ipa_i2 ON w_rss_ipa USING btree (ipa_id);
|
|
|
----------------------- **
|
|
|
RAISE NOTICE '%' , '** : Sejours Hors PMSI = Sejours sans GHM';
|
|
|
INSERT INTO w_rss_ipa
|
|
|
SELECT
|
|
|
p_rss.oid AS rss_id,
|
|
|
t_ipa.oid AS ipa_id,
|
|
|
'1'::character(1) AS maitre
|
|
|
FROM pmsi.p_rss
|
|
|
JOIN base.t_ipa ON t_ipa.code = '**'
|
|
|
WHERE date_sortie >= '20110101' AND ghm_id = 0
|
|
|
;
|
|
|
DROP TABLE IF EXISTS w_rss_presta
|
|
|
;
|
|
|
CREATE TEMP TABLE w_rss_presta AS
|
|
|
SELECT
|
|
|
rss_id,
|
|
|
MAX(CASE WHEN t_prestations.code IN ('D09', 'D11', 'D12', 'D13', 'D15', 'D16') OR t_ghs.code = 9605 THEN 1 ELSE 0 END) AS prestation_d091112131516,
|
|
|
MAX(CASE WHEN t_prestations.code IN ('D09', 'D11', 'D12', 'D13', 'D14', 'D15', 'D16') OR (t_prestations.code = 'D11' AND t_ghs.code = 9605) THEN 1 ELSE 0 END) AS prestation_d09111213141516,
|
|
|
MAX(CASE WHEN t_prestations.code IN ('D12', 'D13', 'D14','D15', 'D16') THEN 1 ELSE 0 END) AS prestation_d1213141516,
|
|
|
MAX(CASE WHEN t_prestations.code IN ('D10') OR t_ghs.code = 9617 THEN 1 ELSE 0 END) AS prestation_d10,
|
|
|
MAX(CASE WHEN t_prestations.code IN ('D17','D18','D19','D20','D21','D24') OR t_ghs.code IN (9602,9603,9604) THEN 1 ELSE 0 END) AS prestation_c08oqn,
|
|
|
MAX(CASE WHEN t_prestations.code IN ('NN1', 'NN2', 'NN3') THEN 1 ELSE 0 END) AS prestation_nnx
|
|
|
FROM pmsi.p_rsf_detail
|
|
|
JOIN pmsi.t_prestations ON p_rsf_detail.prestation_id = t_prestations.oid
|
|
|
JOIN pmsi.t_ghs on p_rsf_detail.ghs_id = t_ghs.oid
|
|
|
WHERE (
|
|
|
t_prestations.code = ANY(Array['D09', 'D10', 'D11', 'D12', 'D13', 'D14', 'D15', 'D16', 'D17', 'D18', 'D19', 'D20', 'D21', 'D24', 'NN1', 'NN2', 'NN3']) OR
|
|
|
t_ghs.code = ANY(Array[9602,9603,9604,9605,9617])
|
|
|
) AND
|
|
|
p_rsf_detail.est_ligne_rss = '1'
|
|
|
GROUP BY 1
|
|
|
|
|
|
;
|
|
|
CREATE INDEX w_rss_presta_i1 ON w_rss_presta USING btree (rss_id)
|
|
|
;
|
|
|
|
|
|
----------------------- *01
|
|
|
RAISE NOTICE '%' , '*01 : Séjours en erreurs sauf dialyses exOQN';
|
|
|
-- Séjours avec CM 90, sauf pour les séjours de dialyse en
|
|
|
-- centre des établissements privés (RSA repérés à partir des RSFA par les codes actes D09, D11,
|
|
|
-- D12, D13, D15 et D16
|
|
|
DROP TABLE IF EXISTS w_tmp
|
|
|
;
|
|
|
CREATE TEMP TABLE w_tmp AS
|
|
|
SELECT
|
|
|
p_rss.oid AS rss_id
|
|
|
FROM pmsi.p_rss
|
|
|
JOIN w_rss_presta ON p_rss.oid = w_rss_presta.rss_id AND prestation_d09111213141516 = 1
|
|
|
JOIN base.t_finess ON p_rss.finess = t_finess.code AND t_finess.type_etablissement = '1'
|
|
|
GROUP BY 1
|
|
|
;
|
|
|
CREATE INDEX w_tmp_i1 ON w_tmp USING btree (rss_id)
|
|
|
;
|
|
|
|
|
|
INSERT INTO w_rss_ipa
|
|
|
SELECT
|
|
|
p_rss.oid AS rss_id,
|
|
|
t_ipa.oid AS ipa_id,
|
|
|
CASE WHEN w_rss_ipa.rss_id IS NULL THEN '1' ELSE '0' END AS maitre
|
|
|
FROM pmsi.p_rss
|
|
|
JOIN base.t_ipa ON t_ipa.code = '*01'
|
|
|
JOIN pmsi.t_ghm ON p_rss.ghm_id = t_ghm.oid AND t_ghm.code LIKE '90%'
|
|
|
LEFT JOIN w_rss_ipa ON p_rss.oid = w_rss_ipa.rss_id AND est_maitre = '1'
|
|
|
LEFT JOIN w_tmp ON p_rss.oid = w_tmp.rss_id
|
|
|
WHERE date_sortie >= '20110101' AND
|
|
|
w_tmp.rss_id IS NULL AND
|
|
|
w_rss_ipa.ipa_id IS DISTINCT FROM t_ipa.oid
|
|
|
;
|
|
|
----------------------- *02
|
|
|
RAISE NOTICE '%' , '*02 : Sejours d''IVG dans le secteur exDG';
|
|
|
-- GHM 14Z08Z
|
|
|
INSERT INTO w_rss_ipa
|
|
|
SELECT
|
|
|
p_rss.oid AS rss_id,
|
|
|
t_ipa.oid AS ipa_id,
|
|
|
CASE WHEN w_rss_ipa.rss_id IS NULL THEN '1' ELSE '0' END AS maitre
|
|
|
FROM pmsi.p_rss
|
|
|
JOIN base.t_ipa ON t_ipa.code = '*02'
|
|
|
JOIN pmsi.t_ghm ON p_rss.ghm_id = t_ghm.oid AND t_ghm.code = '14Z08Z'
|
|
|
LEFT JOIN w_rss_ipa ON p_rss.oid = w_rss_ipa.rss_id AND est_maitre = '1'
|
|
|
WHERE date_sortie >= '20110101' AND
|
|
|
w_rss_ipa.ipa_id IS DISTINCT FROM t_ipa.oid
|
|
|
;
|
|
|
----------------------- *03
|
|
|
-- Exclusions supprimée depuis la version d'avril 2012 des IPA
|
|
|
-- Les séances d'entraînement à la dialyse sont désormais intégrées dans l'indicateur C08
|
|
|
|
|
|
-- GHM 28Z01, 28Z02 et 28Z03
|
|
|
----------------------- *04
|
|
|
RAISE NOTICE '%' , '*04 : Prestations inter etablissements';
|
|
|
-- Mode d'entrée et de sortie = 0
|
|
|
INSERT INTO w_rss_ipa
|
|
|
SELECT
|
|
|
p_rss.oid AS rss_id,
|
|
|
t_ipa.oid AS ipa_id,
|
|
|
CASE WHEN w_rss_ipa.rss_id IS NULL THEN '1' ELSE '0' END AS maitre
|
|
|
FROM pmsi.p_rss
|
|
|
JOIN base.t_ipa ON t_ipa.code = '*04'
|
|
|
LEFT JOIN w_rss_ipa ON p_rss.oid = w_rss_ipa.rss_id AND est_maitre = '1'
|
|
|
WHERE date_sortie >= '20110101' AND
|
|
|
mode_entree = '0' AND
|
|
|
mode_sortie = '0' AND
|
|
|
w_rss_ipa.ipa_id IS DISTINCT FROM t_ipa.oid
|
|
|
;
|
|
|
----------------------- *05
|
|
|
RAISE NOTICE '%' , '*05 : Morts-nes';
|
|
|
-- GHM 15Z10E
|
|
|
INSERT INTO w_rss_ipa
|
|
|
SELECT
|
|
|
p_rss.oid AS rss_id,
|
|
|
t_ipa.oid AS ipa_id,
|
|
|
CASE WHEN w_rss_ipa.rss_id IS NULL THEN '1' ELSE '0' END AS maitre
|
|
|
FROM pmsi.p_rss
|
|
|
JOIN base.t_ipa ON t_ipa.code = '*05'
|
|
|
JOIN pmsi.t_ghm ON p_rss.ghm_id = t_ghm.oid AND t_ghm.code = '15Z10E'
|
|
|
LEFT JOIN w_rss_ipa ON p_rss.oid = w_rss_ipa.rss_id AND est_maitre = '1'
|
|
|
WHERE date_sortie >= '20110101' AND
|
|
|
w_rss_ipa.ipa_id IS DISTINCT FROM t_ipa.oid
|
|
|
;
|
|
|
----------------------- *06
|
|
|
|
|
|
RAISE NOTICE '%' , '*06 : Sejours de chirurgie esthetique et de confort';
|
|
|
-- GHM 09Z02A, 09Z02B, 09Z02Z (Chirurgie esthétique) et 23Z03Z (Interventions de confort et autres
|
|
|
-- interventions non prises en charge par l'assurance maladie obligatoire)
|
|
|
INSERT INTO w_rss_ipa
|
|
|
SELECT
|
|
|
p_rss.oid AS rss_id,
|
|
|
t_ipa.oid AS ipa_id,
|
|
|
CASE WHEN w_rss_ipa.rss_id IS NULL THEN '1' ELSE '0' END AS maitre
|
|
|
FROM pmsi.p_rss
|
|
|
JOIN base.t_ipa ON t_ipa.code = '*06'
|
|
|
JOIN pmsi.t_ghm ON p_rss.ghm_id = t_ghm.oid AND t_ghm.code IN ('09Z02A', '09Z02B', '09Z02Z', '23Z03Z')
|
|
|
LEFT JOIN w_rss_ipa ON p_rss.oid = w_rss_ipa.rss_id AND est_maitre = '1'
|
|
|
WHERE date_sortie >= '20110101' AND
|
|
|
w_rss_ipa.ipa_id IS DISTINCT FROM t_ipa.oid
|
|
|
;
|
|
|
----------------------- *07
|
|
|
|
|
|
RAISE NOTICE '%' , '*07 : Sejours realises integralement en UHCD';
|
|
|
-- séjours d'un RUM dont l'UM à l'autorisation 07 (Unité d'hospitalisation de courte durée)
|
|
|
INSERT INTO w_rss_ipa
|
|
|
SELECT
|
|
|
p_rss.oid AS rss_id,
|
|
|
t_ipa.oid AS ipa_id,
|
|
|
CASE WHEN w_rss_ipa.rss_id IS NULL THEN '1' ELSE '0' END AS maitre
|
|
|
FROM pmsi.p_rss
|
|
|
JOIN base.t_ipa ON t_ipa.code = '*07'
|
|
|
JOIN pmsi.t_unites_medicales ON p_rss.unite_medicale_principale_id = t_unites_medicales.oid AND t_unites_medicales.type_autorisation LIKE '07%'
|
|
|
LEFT JOIN w_rss_ipa ON p_rss.oid = w_rss_ipa.rss_id AND est_maitre = '1'
|
|
|
WHERE date_sortie >= '20110101' AND
|
|
|
p_rss.nb_rum = 1 AND
|
|
|
w_rss_ipa.ipa_id IS DISTINCT FROM t_ipa.oid
|
|
|
;
|
|
|
|
|
|
----------------------- A01
|
|
|
RAISE NOTICE '%' , 'A01 : Diagnostic prenatal';
|
|
|
INSERT INTO w_rss_ipa
|
|
|
SELECT
|
|
|
p_rss.oid AS rss_id,
|
|
|
t_ipa.oid AS ipa_id,
|
|
|
CASE WHEN w_rss_ipa.rss_id IS NULL THEN '1' ELSE '0' END AS maitre
|
|
|
FROM pmsi.p_rss
|
|
|
JOIN base.t_ipa ON t_ipa.code = 'A01'
|
|
|
LEFT JOIN w_rss_ipa ON p_rss.oid = w_rss_ipa.rss_id AND est_maitre = '1'
|
|
|
WHERE date_sortie >= '20110101' AND
|
|
|
p_rss.diagnostic_principal_id = ANY (ARRAY
|
|
|
(
|
|
|
SELECT t_listes_contenu.to_id
|
|
|
FROM pmsi.t_listes
|
|
|
JOIN pmsi.t_listes_contenu ON t_listes_contenu.liste_id = t_listes.oid
|
|
|
WHERE t_listes.code = 'CTIIPAA01D'
|
|
|
)::bigint[]) AND
|
|
|
w_rss_ipa.ipa_id IS DISTINCT FROM t_ipa.oid
|
|
|
GROUP BY 1, 2, 3
|
|
|
;
|
|
|
----------------------- A02
|
|
|
RAISE NOTICE '%' , 'A02 : Obstetrique hors IVG';
|
|
|
INSERT INTO w_rss_ipa
|
|
|
SELECT
|
|
|
p_rss.oid AS rss_id,
|
|
|
t_ipa.oid AS ipa_id,
|
|
|
CASE WHEN w_rss_ipa.rss_id IS NULL THEN '1' ELSE '0' END AS maitre
|
|
|
FROM pmsi.p_rss
|
|
|
JOIN base.t_ipa ON t_ipa.code = 'A02'
|
|
|
LEFT JOIN w_rss_ipa ON p_rss.oid = w_rss_ipa.rss_id AND est_maitre = '1'
|
|
|
WHERE date_sortie >= '20110101' AND
|
|
|
p_rss.ghm_id = ANY (ARRAY
|
|
|
(
|
|
|
SELECT t_listes_contenu.to_id
|
|
|
FROM pmsi.t_listes
|
|
|
JOIN pmsi.t_listes_contenu ON t_listes_contenu.liste_id = t_listes.oid
|
|
|
WHERE t_listes.code = 'CTIIPAA02G'
|
|
|
)::bigint[]) AND
|
|
|
w_rss_ipa.ipa_id IS DISTINCT FROM t_ipa.oid
|
|
|
GROUP BY 1,2,3
|
|
|
;
|
|
|
----------------------- A03
|
|
|
-- Désactivé depuis 2014, semble ne plus être pris en compte
|
|
|
|
|
|
----------------------- A04
|
|
|
RAISE NOTICE '%' , 'A04 : Neonatalogie et reanimation neonatale';
|
|
|
INSERT INTO w_rss_ipa
|
|
|
SELECT
|
|
|
p_rss.oid AS rss_id,
|
|
|
t_ipa.oid AS ipa_id,
|
|
|
CASE WHEN w_rss_ipa.rss_id IS NULL THEN '1' ELSE '0' END AS maitre
|
|
|
FROM pmsi.p_rss
|
|
|
JOIN base.t_ipa ON t_ipa.code = 'A04'
|
|
|
JOIN pmsi.t_ghm ON p_rss.ghm_id = t_ghm.oid AND t_ghm.code LIKE '15%'
|
|
|
LEFT JOIN w_rss_ipa ON p_rss.oid = w_rss_ipa.rss_id AND est_maitre = '1'
|
|
|
WHERE date_sortie >= '20110101' AND
|
|
|
w_rss_ipa.ipa_id IS DISTINCT FROM t_ipa.oid
|
|
|
GROUP BY 1, 2, 3
|
|
|
;
|
|
|
INSERT INTO w_rss_ipa
|
|
|
SELECT
|
|
|
p_rss.oid AS rss_id,
|
|
|
t_ipa.oid AS ipa_id,
|
|
|
CASE WHEN w_rss_ipa.rss_id IS NULL THEN '1' ELSE '0' END AS maitre
|
|
|
FROM pmsi.p_rss
|
|
|
JOIN base.t_ipa ON t_ipa.code = 'A04'
|
|
|
JOIN w_rss_presta ON p_rss.oid = w_rss_presta.rss_id AND prestation_nnx = 1
|
|
|
LEFT JOIN w_rss_ipa ON p_rss.oid = w_rss_ipa.rss_id AND est_maitre = '1'
|
|
|
WHERE date_sortie >= '20110101' AND
|
|
|
w_rss_ipa.ipa_id IS DISTINCT FROM t_ipa.oid
|
|
|
GROUP BY 1, 2, 3
|
|
|
;
|
|
|
----------------------- A05
|
|
|
RAISE NOTICE '%' , 'A05 : Activite clinique d''assistance medicale a la procreation';
|
|
|
INSERT INTO w_rss_ipa
|
|
|
SELECT
|
|
|
p_rss.oid AS rss_id,
|
|
|
t_ipa.oid AS ipa_id,
|
|
|
CASE WHEN w_rss_ipa.rss_id IS NULL THEN '1' ELSE '0' END AS maitre
|
|
|
FROM pmsi.p_rss
|
|
|
JOIN base.t_ipa ON t_ipa.code = 'A05'
|
|
|
LEFT JOIN w_rss_ipa ON p_rss.oid = w_rss_ipa.rss_id AND est_maitre = '1'
|
|
|
WHERE date_sortie >= '20110101' AND
|
|
|
p_rss.diagnostic_principal_id = ANY (ARRAY
|
|
|
(
|
|
|
SELECT t_listes_contenu.to_id
|
|
|
FROM pmsi.t_listes
|
|
|
JOIN pmsi.t_listes_contenu ON t_listes_contenu.liste_id = t_listes.oid
|
|
|
WHERE t_listes.code = 'CTIIPAA05D'
|
|
|
)::bigint[]) AND
|
|
|
w_rss_ipa.ipa_id IS DISTINCT FROM t_ipa.oid
|
|
|
GROUP BY 1,2,3
|
|
|
;
|
|
|
----------------------- B01
|
|
|
RAISE NOTICE '%' , 'B01 : Greffes d''organes';
|
|
|
INSERT INTO w_rss_ipa
|
|
|
SELECT
|
|
|
p_rss.oid AS rss_id,
|
|
|
t_ipa.oid AS ipa_id,
|
|
|
CASE WHEN w_rss_ipa.rss_id IS NULL THEN '1' ELSE '0' END AS maitre
|
|
|
FROM pmsi.p_rss
|
|
|
JOIN base.t_ipa ON t_ipa.code = 'B01'
|
|
|
JOIN pmsi.t_ghm ON p_rss.ghm_id = t_ghm.oid AND t_ghm.code LIKE '27%'
|
|
|
LEFT JOIN w_rss_ipa ON p_rss.oid = w_rss_ipa.rss_id AND est_maitre = '1'
|
|
|
WHERE date_sortie >= '20110101' AND
|
|
|
w_rss_ipa.ipa_id IS DISTINCT FROM t_ipa.oid
|
|
|
GROUP BY 1, 2, 3
|
|
|
;
|
|
|
----------------------- B02
|
|
|
RAISE NOTICE '%' , 'B02 : Neurochirurgie';
|
|
|
INSERT INTO w_rss_ipa
|
|
|
SELECT
|
|
|
p_rss.oid AS rss_id,
|
|
|
t_ipa.oid AS ipa_id,
|
|
|
CASE WHEN w_rss_ipa.rss_id IS NULL THEN '1' ELSE '0' END AS maitre
|
|
|
FROM pmsi.p_rss
|
|
|
JOIN pmsi.p_rss_actes ON p_rss_actes.rss_id = p_rss.oid
|
|
|
JOIN base.t_ipa ON t_ipa.code = 'B02'
|
|
|
LEFT JOIN w_rss_ipa ON p_rss.oid = w_rss_ipa.rss_id AND est_maitre = '1'
|
|
|
WHERE date_sortie >= '20110101' AND
|
|
|
p_rss_actes.acte_id = ANY (ARRAY
|
|
|
(
|
|
|
SELECT t_listes_contenu.to_id
|
|
|
FROM pmsi.t_listes
|
|
|
JOIN pmsi.t_listes_contenu ON t_listes_contenu.liste_id = t_listes.oid
|
|
|
WHERE t_listes.code = 'CTIIPAB02A'
|
|
|
)::bigint[]) AND
|
|
|
w_rss_ipa.ipa_id IS DISTINCT FROM t_ipa.oid
|
|
|
GROUP BY 1, 2, 3
|
|
|
;
|
|
|
----------------------- B03
|
|
|
RAISE NOTICE '%' , 'B03 : Chirurge cardiaque - GHM';
|
|
|
INSERT INTO w_rss_ipa
|
|
|
SELECT
|
|
|
p_rss.oid AS rss_id,
|
|
|
t_ipa.oid AS ipa_id,
|
|
|
CASE WHEN w_rss_ipa.rss_id IS NULL THEN '1' ELSE '0' END AS maitre
|
|
|
FROM pmsi.p_rss
|
|
|
JOIN base.t_ipa ON t_ipa.code = 'B03'
|
|
|
LEFT JOIN w_rss_ipa ON p_rss.oid = w_rss_ipa.rss_id AND est_maitre = '1'
|
|
|
WHERE date_sortie >= '20110101' AND
|
|
|
p_rss.ghm_id = ANY (ARRAY
|
|
|
(
|
|
|
SELECT t_listes_contenu.to_id
|
|
|
FROM pmsi.t_listes
|
|
|
JOIN pmsi.t_listes_contenu ON t_listes_contenu.liste_id = t_listes.oid
|
|
|
WHERE t_listes.code = 'CTIIPAB03G'
|
|
|
)::bigint[]) AND
|
|
|
w_rss_ipa.ipa_id IS DISTINCT FROM t_ipa.oid
|
|
|
GROUP BY 1, 2, 3
|
|
|
;
|
|
|
RAISE NOTICE '%' , 'B03 : Chirurge cardiaque - Actes';
|
|
|
INSERT INTO w_rss_ipa
|
|
|
SELECT
|
|
|
p_rss.oid AS rss_id,
|
|
|
t_ipa.oid AS ipa_id,
|
|
|
CASE WHEN w_rss_ipa.rss_id IS NULL THEN '1' ELSE '0' END AS maitre
|
|
|
FROM pmsi.p_rss
|
|
|
JOIN pmsi.p_rss_actes ON p_rss_actes.rss_id = p_rss.oid
|
|
|
JOIN base.t_ipa ON t_ipa.code = 'B03'
|
|
|
JOIN pmsi.t_ghm ON t_ghm.oid = p_rss.ghm_id AND t_ghm.code ILIKE '05C06%'
|
|
|
LEFT JOIN w_rss_ipa ON p_rss.oid = w_rss_ipa.rss_id AND est_maitre = '1'
|
|
|
WHERE date_sortie >= '20110101' AND
|
|
|
p_rss_actes.acte_id != ALL (ARRAY
|
|
|
(
|
|
|
SELECT t_listes_contenu.to_id
|
|
|
FROM pmsi.t_listes
|
|
|
JOIN pmsi.t_listes_contenu ON t_listes_contenu.liste_id = t_listes.oid
|
|
|
WHERE t_listes.code = 'CTIIPAB03A'
|
|
|
)::bigint[]) AND
|
|
|
w_rss_ipa.ipa_id IS DISTINCT FROM t_ipa.oid
|
|
|
GROUP BY 1, 2, 3
|
|
|
;
|
|
|
----------------------- B04
|
|
|
RAISE NOTICE '%' , 'B04 : Grands brules';
|
|
|
-- racine GHM 22Z02 ou racine GHM 22Z03 et diag Princ. dans la liste D-2202
|
|
|
INSERT INTO w_rss_ipa
|
|
|
SELECT
|
|
|
p_rss.oid AS rss_id,
|
|
|
t_ipa.oid AS ipa_id,
|
|
|
CASE WHEN w_rss_ipa.rss_id IS NULL THEN '1' ELSE '0' END AS maitre
|
|
|
FROM pmsi.p_rss
|
|
|
JOIN base.t_ipa ON t_ipa.code = 'B04'
|
|
|
JOIN pmsi.t_diagnostics ON p_rss.diagnostic_principal_id = t_diagnostics.oid
|
|
|
JOIN pmsi.t_ghm ON p_rss.ghm_id = t_ghm.oid
|
|
|
LEFT JOIN w_rss_ipa ON p_rss.oid = w_rss_ipa.rss_id AND est_maitre = '1'
|
|
|
WHERE date_sortie >= '20110101'
|
|
|
AND ( t_ghm.code LIKE '22Z02%'
|
|
|
OR (t_ghm.code LIKE '22Z03%'
|
|
|
AND p_rss.diagnostic_principal_id = ANY (ARRAY
|
|
|
(
|
|
|
SELECT t_listes_contenu.to_id
|
|
|
FROM pmsi.t_listes
|
|
|
JOIN pmsi.t_listes_contenu ON t_listes_contenu.liste_id = t_listes.oid
|
|
|
WHERE t_listes.code = 'CTIIPAB04D'
|
|
|
)::bigint[])
|
|
|
)
|
|
|
)
|
|
|
AND w_rss_ipa.ipa_id IS DISTINCT FROM t_ipa.oid
|
|
|
GROUP BY 1,2,3
|
|
|
;
|
|
|
----------------------- B05
|
|
|
RAISE NOTICE '%' , 'B05 : Neuro-radiologie';
|
|
|
INSERT INTO w_rss_ipa
|
|
|
SELECT
|
|
|
p_rss.oid AS rss_id,
|
|
|
t_ipa.oid AS ipa_id,
|
|
|
CASE WHEN w_rss_ipa.rss_id IS NULL THEN '1' ELSE '0' END AS maitre
|
|
|
FROM pmsi.p_rss
|
|
|
JOIN pmsi.p_rss_actes ON p_rss_actes.rss_id = p_rss.oid
|
|
|
JOIN base.t_ipa ON t_ipa.code = 'B05'
|
|
|
LEFT JOIN w_rss_ipa ON p_rss.oid = w_rss_ipa.rss_id AND est_maitre = '1'
|
|
|
WHERE date_sortie >= '20110101' AND
|
|
|
p_rss_actes.acte_id = ANY (ARRAY
|
|
|
(
|
|
|
SELECT t_listes_contenu.to_id
|
|
|
FROM pmsi.t_listes
|
|
|
JOIN pmsi.t_listes_contenu ON t_listes_contenu.liste_id = t_listes.oid
|
|
|
WHERE t_listes.code = 'CTIIPAB05A'
|
|
|
)::bigint[]) AND
|
|
|
w_rss_ipa.ipa_id IS DISTINCT FROM t_ipa.oid
|
|
|
GROUP BY 1, 2, 3
|
|
|
;
|
|
|
----------------------- C01
|
|
|
|
|
|
RAISE NOTICE '%' , 'C01 : Cardiologie interventionnelle';
|
|
|
INSERT INTO w_rss_ipa
|
|
|
SELECT
|
|
|
p_rss.oid AS rss_id,
|
|
|
t_ipa.oid AS ipa_id,
|
|
|
CASE WHEN w_rss_ipa.rss_id IS NULL THEN '1' ELSE '0' END AS maitre
|
|
|
FROM pmsi.p_rss
|
|
|
JOIN pmsi.p_rss_actes ON p_rss_actes.rss_id = p_rss.oid
|
|
|
JOIN base.t_ipa ON t_ipa.code = 'C01'
|
|
|
LEFT JOIN w_rss_ipa ON p_rss.oid = w_rss_ipa.rss_id AND est_maitre = '1'
|
|
|
WHERE date_sortie >= '20110101' AND
|
|
|
p_rss_actes.acte_id = ANY (ARRAY
|
|
|
(
|
|
|
SELECT t_listes_contenu.to_id
|
|
|
FROM pmsi.t_listes
|
|
|
JOIN pmsi.t_listes_contenu ON t_listes_contenu.liste_id = t_listes.oid
|
|
|
WHERE t_listes.code = 'CTIIPAC01A'
|
|
|
)::bigint[]) AND
|
|
|
w_rss_ipa.ipa_id IS DISTINCT FROM t_ipa.oid
|
|
|
GROUP BY 1, 2, 3
|
|
|
;
|
|
|
----------------------- C02
|
|
|
RAISE NOTICE '%' , 'C02 : Cancer - Chirurgie sejours';
|
|
|
-- GHM EN C ayant pour diagnostic principal C00 à C97, D00 à D09 ou D37 à D48
|
|
|
INSERT INTO w_rss_ipa
|
|
|
SELECT
|
|
|
p_rss.oid AS rss_id,
|
|
|
t_ipa.oid AS ipa_id,
|
|
|
CASE WHEN w_rss_ipa.rss_id IS NULL THEN '1' ELSE '0' END AS maitre
|
|
|
FROM pmsi.p_rss
|
|
|
JOIN base.t_ipa ON t_ipa.code = 'C02'
|
|
|
LEFT JOIN w_rss_ipa ON p_rss.oid = w_rss_ipa.rss_id AND est_maitre = '1'
|
|
|
WHERE date_sortie >= '20110101' AND
|
|
|
p_rss.ghm_id = ANY (ARRAY
|
|
|
(
|
|
|
SELECT t_listes_contenu.to_id
|
|
|
FROM pmsi.t_listes
|
|
|
JOIN pmsi.t_listes_contenu ON t_listes_contenu.liste_id = t_listes.oid
|
|
|
WHERE t_listes.code = 'CTIIPAC02G'
|
|
|
)::bigint[]) AND
|
|
|
p_rss.diagnostic_principal_id = ANY (ARRAY
|
|
|
(
|
|
|
SELECT t_listes_contenu.to_id
|
|
|
FROM pmsi.t_listes
|
|
|
JOIN pmsi.t_listes_contenu ON t_listes_contenu.liste_id = t_listes.oid
|
|
|
WHERE t_listes.code = 'CTIIPAC05D'
|
|
|
)::bigint[]) AND
|
|
|
w_rss_ipa.ipa_id IS DISTINCT FROM t_ipa.oid
|
|
|
GROUP BY 1, 2, 3
|
|
|
;
|
|
|
----------------------- C03
|
|
|
RAISE NOTICE '%' , 'C03 : Cancer - Chimiotherapie sejours';
|
|
|
-- Racines GHM 17M05 et 17M06
|
|
|
INSERT INTO w_rss_ipa
|
|
|
SELECT
|
|
|
p_rss.oid AS rss_id,
|
|
|
t_ipa.oid AS ipa_id,
|
|
|
CASE WHEN w_rss_ipa.rss_id IS NULL THEN '1' ELSE '0' END AS maitre
|
|
|
FROM pmsi.p_rss
|
|
|
JOIN base.t_ipa ON t_ipa.code = 'C03'
|
|
|
LEFT JOIN w_rss_ipa ON p_rss.oid = w_rss_ipa.rss_id AND est_maitre = '1'
|
|
|
WHERE date_sortie >= '20110101' AND
|
|
|
p_rss.ghm_id = ANY (ARRAY
|
|
|
(
|
|
|
SELECT t_listes_contenu.to_id
|
|
|
FROM pmsi.t_listes
|
|
|
JOIN pmsi.t_listes_contenu ON t_listes_contenu.liste_id = t_listes.oid
|
|
|
WHERE t_listes.code = 'CTIIPAC03G'
|
|
|
)::bigint[]) AND
|
|
|
w_rss_ipa.ipa_id IS DISTINCT FROM t_ipa.oid
|
|
|
GROUP BY 1, 2, 3
|
|
|
;
|
|
|
----------------------- C04
|
|
|
RAISE NOTICE '%' , 'C04 : Cancer - Chimiotherapie seances';
|
|
|
-- Racine GHM 28Z07
|
|
|
INSERT INTO w_rss_ipa
|
|
|
SELECT
|
|
|
p_rss.oid AS rss_id,
|
|
|
t_ipa.oid AS ipa_id,
|
|
|
CASE WHEN w_rss_ipa.rss_id IS NULL THEN '1' ELSE '0' END AS maitre
|
|
|
FROM pmsi.p_rss
|
|
|
JOIN base.t_ipa ON t_ipa.code = 'C04'
|
|
|
LEFT JOIN w_rss_ipa ON p_rss.oid = w_rss_ipa.rss_id AND est_maitre = '1'
|
|
|
WHERE date_sortie >= '20110101' AND
|
|
|
p_rss.ghm_id = ANY (ARRAY
|
|
|
(
|
|
|
SELECT t_listes_contenu.to_id
|
|
|
FROM pmsi.t_listes
|
|
|
JOIN pmsi.t_listes_contenu ON t_listes_contenu.liste_id = t_listes.oid
|
|
|
WHERE t_listes.code = 'CTIIPAC04G'
|
|
|
)::bigint[]) AND
|
|
|
w_rss_ipa.ipa_id IS DISTINCT FROM t_ipa.oid
|
|
|
GROUP BY 1, 2, 3
|
|
|
;
|
|
|
----------------------- C05
|
|
|
RAISE NOTICE '%' , 'C05 : Cancer - Radiotherapie sejours';
|
|
|
-- Racine GHM 17K04, 17K05 et 17K06
|
|
|
INSERT INTO w_rss_ipa
|
|
|
SELECT
|
|
|
p_rss.oid AS rss_id,
|
|
|
t_ipa.oid AS ipa_id,
|
|
|
CASE WHEN w_rss_ipa.rss_id IS NULL THEN '1' ELSE '0' END AS maitre
|
|
|
FROM pmsi.p_rss
|
|
|
JOIN base.t_ipa ON t_ipa.code = 'C05'
|
|
|
JOIN pmsi.t_diagnostics dp ON p_rss.diagnostic_principal_id = dp.oid AND dp.code IN ('Z5100', 'Z5101')
|
|
|
LEFT JOIN w_rss_ipa ON p_rss.oid = w_rss_ipa.rss_id AND est_maitre = '1'
|
|
|
WHERE date_sortie >= '20110101' AND
|
|
|
p_rss.ghm_id = ANY (ARRAY
|
|
|
(
|
|
|
SELECT t_listes_contenu.to_id
|
|
|
FROM pmsi.t_listes
|
|
|
JOIN pmsi.t_listes_contenu ON t_listes_contenu.liste_id = t_listes.oid
|
|
|
WHERE t_listes.code = 'CTIIPAC05G'
|
|
|
)::bigint[]) AND
|
|
|
p_rss.diagnostic_relie_id = ANY (ARRAY
|
|
|
(
|
|
|
SELECT t_listes_contenu.to_id
|
|
|
FROM pmsi.t_listes
|
|
|
JOIN pmsi.t_listes_contenu ON t_listes_contenu.liste_id = t_listes.oid
|
|
|
WHERE t_listes.code = 'CTIIPAC05D'
|
|
|
)::bigint[]) AND
|
|
|
w_rss_ipa.ipa_id IS DISTINCT FROM t_ipa.oid
|
|
|
GROUP BY 1, 2, 3
|
|
|
;
|
|
|
----------------------- C06
|
|
|
RAISE NOTICE '%' , 'C06 : Cancer - Cancer - Radiotherapie seances';
|
|
|
-- Racine GHM 28Z10, 28Z11, 28Z18, 28Z19, 28Z20, 28Z21, 28Z22, 28Z23, 28Z24, 28Z25
|
|
|
INSERT INTO w_rss_ipa
|
|
|
SELECT
|
|
|
p_rss.oid AS rss_id,
|
|
|
t_ipa.oid AS ipa_id,
|
|
|
CASE WHEN w_rss_ipa.rss_id IS NULL THEN '1' ELSE '0' END AS maitre
|
|
|
FROM pmsi.p_rss
|
|
|
JOIN base.t_ipa ON t_ipa.code = 'C06'
|
|
|
JOIN pmsi.t_diagnostics dp ON p_rss.diagnostic_principal_id = dp.oid AND dp.code IN ('Z5100', 'Z5101')
|
|
|
LEFT JOIN w_rss_ipa ON p_rss.oid = w_rss_ipa.rss_id AND est_maitre = '1'
|
|
|
WHERE date_sortie >= '20110101' AND
|
|
|
p_rss.ghm_id = ANY (ARRAY
|
|
|
(
|
|
|
SELECT t_listes_contenu.to_id
|
|
|
FROM pmsi.t_listes
|
|
|
JOIN pmsi.t_listes_contenu ON t_listes_contenu.liste_id = t_listes.oid
|
|
|
WHERE t_listes.code = 'CTIIPAC06G'
|
|
|
)::bigint[]) AND
|
|
|
p_rss.diagnostic_relie_id = ANY (ARRAY
|
|
|
(
|
|
|
SELECT t_listes_contenu.to_id
|
|
|
FROM pmsi.t_listes
|
|
|
JOIN pmsi.t_listes_contenu ON t_listes_contenu.liste_id = t_listes.oid
|
|
|
WHERE t_listes.code = 'CTIIPAC05D'
|
|
|
)::bigint[]) AND
|
|
|
w_rss_ipa.ipa_id IS DISTINCT FROM t_ipa.oid
|
|
|
GROUP BY 1, 2, 3
|
|
|
;
|
|
|
----------------------- C07
|
|
|
RAISE NOTICE '%' , 'C07 : IRC - Activites dans le champ IPA';
|
|
|
-- exOQN prestations D09 D11 D12 D13 D14 D15 et D16
|
|
|
INSERT INTO w_rss_ipa
|
|
|
SELECT
|
|
|
p_rss.oid AS rss_id,
|
|
|
t_ipa.oid AS ipa_id,
|
|
|
CASE WHEN w_rss_ipa.rss_id IS NULL THEN '1' ELSE '0' END AS maitre
|
|
|
FROM pmsi.p_rss
|
|
|
JOIN base.t_ipa ON t_ipa.code = 'C07'
|
|
|
JOIN w_rss_presta ON p_rss.oid = w_rss_presta.rss_id AND prestation_d09111213141516 = 1
|
|
|
JOIN base.t_finess ON p_rss.finess = t_finess.code AND t_finess.type_etablissement = '1'
|
|
|
LEFT JOIN w_rss_ipa ON p_rss.oid = w_rss_ipa.rss_id AND est_maitre = '1'
|
|
|
WHERE date_sortie >= '20110101' AND
|
|
|
w_rss_ipa.ipa_id IS DISTINCT FROM t_ipa.oid
|
|
|
GROUP BY 1, 2, 3
|
|
|
;
|
|
|
-- exOQN prestations GHS 9605 et CMD 28
|
|
|
INSERT INTO w_rss_ipa
|
|
|
SELECT
|
|
|
p_rss.oid AS rss_id,
|
|
|
t_ipa.oid AS ipa_id,
|
|
|
CASE WHEN w_rss_ipa.rss_id IS NULL THEN '1' ELSE '0' END AS maitre
|
|
|
FROM
|
|
|
pmsi.p_rss
|
|
|
JOIN base.t_ipa ON t_ipa.code = 'C07'
|
|
|
JOIN pmsi.t_ghs on p_rss.ghs_id = t_ghs.oid AND t_ghs.code = '9605'
|
|
|
JOIN pmsi.t_ghm ON t_ghm.oid = p_rss.ghm_id
|
|
|
JOIN pmsi.t_cmd ON t_cmd.oid = t_ghm.cmd_id AND t_cmd.code = '28'
|
|
|
JOIN base.t_finess ON p_rss.finess = t_finess.code AND t_finess.type_etablissement = '1'
|
|
|
LEFT JOIN w_rss_ipa ON p_rss.oid = w_rss_ipa.rss_id AND est_maitre = '1'
|
|
|
WHERE
|
|
|
date_sortie >= '20110101' AND
|
|
|
w_rss_ipa.ipa_id IS DISTINCT FROM t_ipa.oid
|
|
|
GROUP BY 1, 2, 3
|
|
|
;
|
|
|
|
|
|
-- Pour les GHS 9605, il faut en fait compmter leur nombre et non pas le nombre de séjours avec ce GHS
|
|
|
UPDATE w_rss_ipa SET
|
|
|
nb_ipa = subview.nb_ipa
|
|
|
FROM (
|
|
|
SELECT
|
|
|
p_rss.oid as rss_id,
|
|
|
count(p_rsf_detail.ghs_id) as nb_ipa
|
|
|
FROM
|
|
|
pmsi.p_rss
|
|
|
JOIN pmsi.p_rsf_detail ON p_rsf_detail.rss_id = p_rss.oid
|
|
|
JOIN pmsi.t_ghs ON t_ghs.oid = p_rsf_detail.ghs_id
|
|
|
WHERE 1=1
|
|
|
AND p_rss.ghm_id <> 0
|
|
|
AND date_sortie >= '20110101'
|
|
|
AND t_ghs.code = 9605
|
|
|
GROUP BY 1
|
|
|
) subview
|
|
|
WHERE subview.rss_id = w_rss_ipa.rss_id
|
|
|
AND w_rss_ipa.ipa_id = (SELECT oid FROM base.t_ipa WHERE t_ipa.code = 'C07')
|
|
|
;
|
|
|
|
|
|
-- exDG prestations D12 D13 D14 D15 et D16
|
|
|
INSERT INTO w_rss_ipa
|
|
|
SELECT
|
|
|
p_rss.oid AS rss_id,
|
|
|
t_ipa.oid AS ipa_id,
|
|
|
CASE WHEN w_rss_ipa.rss_id IS NULL THEN '1' ELSE '0' END AS maitre
|
|
|
FROM pmsi.p_rss
|
|
|
JOIN base.t_ipa ON t_ipa.code = 'C07'
|
|
|
JOIN w_rss_presta ON p_rss.oid = w_rss_presta.rss_id AND prestation_d1213141516 = 1
|
|
|
JOIN base.t_finess ON p_rss.finess = t_finess.code AND t_finess.type_etablissement <> '1'
|
|
|
LEFT JOIN w_rss_ipa ON p_rss.oid = w_rss_ipa.rss_id AND est_maitre = '1'
|
|
|
WHERE date_sortie >= '20110101' AND
|
|
|
w_rss_ipa.ipa_id IS DISTINCT FROM t_ipa.oid
|
|
|
AND p_rss.traitement_epmsi IN ('30', '31', '32', '33')
|
|
|
GROUP BY 1, 2, 3
|
|
|
;
|
|
|
-- exDG GHM 28Z04Z et GH 9605 ou 9618
|
|
|
INSERT INTO w_rss_ipa
|
|
|
SELECT
|
|
|
p_rss.oid AS rss_id,
|
|
|
t_ipa.oid AS ipa_id,
|
|
|
CASE WHEN w_rss_ipa.rss_id IS NULL THEN '1' ELSE '0' END AS maitre
|
|
|
FROM pmsi.p_rss
|
|
|
JOIN base.t_ipa ON t_ipa.code = 'C07'
|
|
|
JOIN pmsi.t_ghm ON t_ghm.oid = p_rss.ghm_id AND t_ghm.code = '28Z04Z'
|
|
|
JOIN pmsi.t_ghs ON t_ghs.oid = p_rss.ghs_id AND t_ghs.code IN ('9605', '9618')
|
|
|
JOIN base.t_finess ON p_rss.finess = t_finess.code AND t_finess.type_etablissement <> '1'
|
|
|
LEFT JOIN w_rss_ipa ON p_rss.oid = w_rss_ipa.rss_id AND est_maitre = '1'
|
|
|
WHERE date_sortie >= '20110101' AND
|
|
|
w_rss_ipa.ipa_id IS DISTINCT FROM t_ipa.oid
|
|
|
GROUP BY 1, 2, 3
|
|
|
;
|
|
|
----------------------- C08
|
|
|
|
|
|
RAISE NOTICE '%' , 'C08 : Autres activites de dialyse (centre pour enfants et seances d''entrainement)';
|
|
|
-- exOQN prestation D10
|
|
|
INSERT INTO w_rss_ipa
|
|
|
SELECT
|
|
|
p_rss.oid AS rss_id,
|
|
|
t_ipa.oid AS ipa_id,
|
|
|
CASE WHEN w_rss_ipa.rss_id IS NULL THEN '1' ELSE '0' END AS maitre
|
|
|
FROM pmsi.p_rss
|
|
|
JOIN base.t_ipa ON t_ipa.code = 'C08'
|
|
|
JOIN w_rss_presta ON p_rss.oid = w_rss_presta.rss_id AND prestation_d10 = 1
|
|
|
JOIN base.t_finess ON p_rss.finess = t_finess.code AND t_finess.type_etablissement = '1'
|
|
|
LEFT JOIN w_rss_ipa ON p_rss.oid = w_rss_ipa.rss_id AND est_maitre = '1'
|
|
|
WHERE date_sortie >= '20110101' AND
|
|
|
w_rss_ipa.ipa_id IS DISTINCT FROM t_ipa.oid
|
|
|
GROUP BY 1, 2, 3
|
|
|
;
|
|
|
-- exDG GHM 28Z04Z
|
|
|
INSERT INTO w_rss_ipa
|
|
|
SELECT
|
|
|
p_rss.oid AS rss_id,
|
|
|
t_ipa.oid AS ipa_id,
|
|
|
CASE WHEN w_rss_ipa.rss_id IS NULL THEN '1' ELSE '0' END AS maitre
|
|
|
FROM pmsi.p_rss
|
|
|
JOIN base.t_ipa ON t_ipa.code = 'C08'
|
|
|
JOIN pmsi.t_ghm ON t_ghm.oid = p_rss.ghm_id AND t_ghm.code = '28Z04Z'
|
|
|
JOIN pmsi.t_ghs ON t_ghs.oid = p_rss.ghs_id AND t_ghs.code = '9617'
|
|
|
JOIN base.t_finess ON p_rss.finess = t_finess.code AND t_finess.type_etablissement <> '1'
|
|
|
LEFT JOIN w_rss_ipa ON p_rss.oid = w_rss_ipa.rss_id AND est_maitre = '1'
|
|
|
WHERE date_sortie >= '20110101' AND
|
|
|
w_rss_ipa.ipa_id IS DISTINCT FROM t_ipa.oid
|
|
|
GROUP BY 1, 2, 3
|
|
|
;
|
|
|
-- séances d'entrainement exDG
|
|
|
INSERT INTO w_rss_ipa
|
|
|
SELECT
|
|
|
p_rss.oid AS rss_id,
|
|
|
t_ipa.oid AS ipa_id,
|
|
|
CASE WHEN w_rss_ipa.rss_id IS NULL THEN '1' ELSE '0' END AS maitre
|
|
|
FROM pmsi.p_rss
|
|
|
JOIN base.t_ipa ON t_ipa.code = 'C08'
|
|
|
JOIN pmsi.t_ghm ON p_rss.ghm_id = t_ghm.oid AND t_ghm.code IN ('28Z01Z', '28Z02Z', '28Z03Z')
|
|
|
JOIN base.t_finess ON p_rss.finess = t_finess.code AND t_finess.type_etablissement <> '1'
|
|
|
LEFT JOIN w_rss_ipa ON p_rss.oid = w_rss_ipa.rss_id AND est_maitre = '1'
|
|
|
WHERE date_sortie >= '20110101' AND
|
|
|
w_rss_ipa.ipa_id IS DISTINCT FROM t_ipa.oid
|
|
|
;
|
|
|
-- séances d'entrainement exOQN
|
|
|
INSERT INTO w_rss_ipa
|
|
|
SELECT
|
|
|
p_rss.oid AS rss_id,
|
|
|
t_ipa.oid AS ipa_id,
|
|
|
CASE WHEN w_rss_ipa.rss_id IS NULL THEN '1' ELSE '0' END AS maitre
|
|
|
FROM
|
|
|
pmsi.p_rss
|
|
|
JOIN base.t_ipa ON t_ipa.code = 'C08'
|
|
|
JOIN w_rss_presta ON p_rss.oid = w_rss_presta.rss_id AND prestation_c08oqn = 1
|
|
|
JOIN base.t_finess ON p_rss.finess = t_finess.code AND t_finess.type_etablissement = '1'
|
|
|
LEFT JOIN w_rss_ipa ON p_rss.oid = w_rss_ipa.rss_id AND est_maitre = '1'
|
|
|
WHERE
|
|
|
date_sortie >= '20110101' AND
|
|
|
w_rss_ipa.ipa_id IS DISTINCT FROM t_ipa.oid
|
|
|
;
|
|
|
-- deuxième passe pour les séances d'entrainement exOQN pour choper les séjours sans facture par exemple ou ceux pour lesquels le GHS n'est pas dans la facture
|
|
|
|
|
|
INSERT INTO w_rss_ipa
|
|
|
SELECT
|
|
|
p_rss.oid AS rss_id,
|
|
|
t_ipa.oid AS ipa_id,
|
|
|
CASE WHEN w_rss_ipa.rss_id IS NULL THEN '1' ELSE '0' END AS maitre,
|
|
|
0
|
|
|
FROM
|
|
|
pmsi.p_rss
|
|
|
JOIN base.t_ipa ON t_ipa.code = 'C08'
|
|
|
JOIN base.t_finess ON p_rss.finess = t_finess.code AND t_finess.type_etablissement = '1'
|
|
|
JOIN pmsi.t_ghs ON t_ghs.oid = p_rss.ghs_id AND t_ghs.code = '9604'
|
|
|
LEFT JOIN w_rss_ipa ON p_rss.oid = w_rss_ipa.rss_id AND est_maitre = '1'
|
|
|
WHERE
|
|
|
date_sortie >= '20110101' AND
|
|
|
w_rss_ipa.ipa_id IS DISTINCT FROM t_ipa.oid
|
|
|
;
|
|
|
|
|
|
|
|
|
-- Pour les C08, il faut en fait compter le nombre de GHS, d'EMI et de PH8, les autres prestations doivent etre exclues (empirique)
|
|
|
UPDATE w_rss_ipa SET
|
|
|
nb_ipa = subview.nb_ipa
|
|
|
FROM (
|
|
|
SELECT
|
|
|
p_rss.oid as rss_id,
|
|
|
count(*) as nb_ipa
|
|
|
FROM
|
|
|
pmsi.p_rss
|
|
|
JOIN pmsi.p_rss_ipa ON p_rss_ipa.rss_id = p_rss.oid
|
|
|
JOIN base.t_ipa ON t_ipa.oid = p_rss_ipa.ipa_id
|
|
|
JOIN pmsi.p_rsf_detail ON p_rsf_detail.rss_id = p_rss.oid
|
|
|
JOIN pmsi.t_prestations ON t_prestations.oid = p_rsf_detail.prestation_id
|
|
|
WHERE 1=1
|
|
|
AND date_sortie BETWEEN '2014-01-01' AND '2014-04-30'
|
|
|
AND t_ipa.code = 'C08'
|
|
|
AND t_prestations.code In ('GHS', 'EMI', 'PH8')
|
|
|
GROUP BY 1
|
|
|
) subview
|
|
|
WHERE subview.rss_id = w_rss_ipa.rss_id
|
|
|
AND w_rss_ipa.ipa_id = (SELECT oid FROM base.t_ipa WHERE t_ipa.code = 'C08')
|
|
|
;
|
|
|
|
|
|
----------------------- D01
|
|
|
RAISE NOTICE '%' , 'D01 : Activite de medecine interventionnelle';
|
|
|
INSERT INTO w_rss_ipa
|
|
|
SELECT
|
|
|
p_rss.oid AS rss_id,
|
|
|
t_ipa.oid AS ipa_id,
|
|
|
CASE WHEN w_rss_ipa.rss_id IS NULL THEN '1' ELSE '0' END AS maitre
|
|
|
FROM pmsi.p_rss
|
|
|
JOIN base.t_ipa ON t_ipa.code = 'D01'
|
|
|
JOIN pmsi.t_ghm ON t_ghm.oid = p_rss.ghm_id AND t_ghm.ghm3 = 'K'
|
|
|
LEFT JOIN w_rss_ipa ON p_rss.oid = w_rss_ipa.rss_id AND est_maitre = '1'
|
|
|
WHERE date_sortie >= '20110101' AND
|
|
|
w_rss_ipa.ipa_id IS DISTINCT FROM t_ipa.oid
|
|
|
GROUP BY 1, 2, 3
|
|
|
;
|
|
|
----------------------- D02
|
|
|
RAISE NOTICE '%' , 'D02 : Medecine en hospitalisation partielle - Sejours';
|
|
|
INSERT INTO w_rss_ipa
|
|
|
SELECT
|
|
|
p_rss.oid AS rss_id,
|
|
|
t_ipa.oid AS ipa_id,
|
|
|
CASE WHEN w_rss_ipa.rss_id IS NULL THEN '1' ELSE '0' END AS maitre
|
|
|
FROM pmsi.p_rss
|
|
|
JOIN base.t_ipa ON t_ipa.code = 'D02'
|
|
|
LEFT JOIN w_rss_ipa ON p_rss.oid = w_rss_ipa.rss_id AND est_maitre = '1'
|
|
|
JOIN pmsi.t_ghm ON t_ghm.oid = p_rss.ghm_id AND t_ghm.code NOT LIKE '28%' AND t_ghm.ghm3 IN ('M', 'Z')
|
|
|
WHERE date_sortie >= '20110101' AND
|
|
|
p_rss.duree_sejour = 0 AND
|
|
|
w_rss_ipa.ipa_id IS DISTINCT FROM t_ipa.oid
|
|
|
GROUP BY 1, 2, 3
|
|
|
;
|
|
|
----------------------- D03
|
|
|
RAISE NOTICE '%' , 'D03 : Medecine en hospitalisation partielle - Seances';
|
|
|
-- transfusions, oxygénothérpaies, aphérèses et chimio hors cancer
|
|
|
INSERT INTO w_rss_ipa
|
|
|
SELECT
|
|
|
p_rss.oid AS rss_id,
|
|
|
t_ipa.oid AS ipa_id,
|
|
|
CASE WHEN w_rss_ipa.rss_id IS NULL THEN '1' ELSE '0' END AS maitre
|
|
|
FROM pmsi.p_rss
|
|
|
JOIN base.t_ipa ON t_ipa.code = 'D03'
|
|
|
LEFT JOIN w_rss_ipa ON p_rss.oid = w_rss_ipa.rss_id AND est_maitre = '1'
|
|
|
JOIN pmsi.t_ghm ON t_ghm.oid = p_rss.ghm_id AND t_ghm.code LIKE '28%' AND t_ghm.ghm3 IN ('M', 'Z')
|
|
|
WHERE date_sortie >= '20110101' AND
|
|
|
p_rss.duree_sejour = 0 AND
|
|
|
w_rss_ipa.ipa_id IS DISTINCT FROM t_ipa.oid AND
|
|
|
p_rss.ghm_id = ANY (ARRAY
|
|
|
(
|
|
|
SELECT t_listes_contenu.to_id
|
|
|
FROM pmsi.t_listes
|
|
|
JOIN pmsi.t_listes_contenu ON t_listes_contenu.liste_id = t_listes.oid
|
|
|
WHERE t_listes.code = 'CTIIPAD03G'
|
|
|
)::bigint[])
|
|
|
GROUP BY 1, 2, 3
|
|
|
;
|
|
|
-- radiothérapie hors cancer (inverse C06)
|
|
|
INSERT INTO w_rss_ipa
|
|
|
SELECT
|
|
|
p_rss.oid AS rss_id,
|
|
|
t_ipa.oid AS ipa_id,
|
|
|
CASE WHEN w_rss_ipa.rss_id IS NULL THEN '1' ELSE '0' END AS maitre
|
|
|
FROM pmsi.p_rss
|
|
|
JOIN base.t_ipa ON t_ipa.code = 'D03'
|
|
|
JOIN pmsi.t_diagnostics dp ON p_rss.diagnostic_principal_id = dp.oid AND dp.code IN ('Z5100', 'Z5101')
|
|
|
LEFT JOIN w_rss_ipa ON p_rss.oid = w_rss_ipa.rss_id AND est_maitre = '1'
|
|
|
WHERE date_sortie >= '20110101' AND
|
|
|
p_rss.ghm_id = ANY (ARRAY
|
|
|
(
|
|
|
SELECT t_listes_contenu.to_id
|
|
|
FROM pmsi.t_listes
|
|
|
JOIN pmsi.t_listes_contenu ON t_listes_contenu.liste_id = t_listes.oid
|
|
|
WHERE t_listes.code = 'CTIIPAC06G'
|
|
|
)::bigint[]) AND
|
|
|
p_rss.diagnostic_relie_id != ALL (ARRAY
|
|
|
(
|
|
|
SELECT t_listes_contenu.to_id
|
|
|
FROM pmsi.t_listes
|
|
|
JOIN pmsi.t_listes_contenu ON t_listes_contenu.liste_id = t_listes.oid
|
|
|
WHERE t_listes.code = 'CTIIPAC05D'
|
|
|
)::bigint[]) AND
|
|
|
w_rss_ipa.ipa_id IS DISTINCT FROM t_ipa.oid
|
|
|
GROUP BY 1, 2, 3
|
|
|
;
|
|
|
----------------------- D04
|
|
|
RAISE NOTICE '%' , 'D04 : Medecine en hospitalisation complete';
|
|
|
-- tous les séjours de médecine avec une nuit au moins
|
|
|
INSERT INTO w_rss_ipa
|
|
|
SELECT
|
|
|
p_rss.oid AS rss_id,
|
|
|
t_ipa.oid AS ipa_id,
|
|
|
CASE WHEN w_rss_ipa.rss_id IS NULL THEN '1' ELSE '0' END AS maitre
|
|
|
FROM pmsi.p_rss
|
|
|
JOIN base.t_ipa ON t_ipa.code = 'D04'
|
|
|
LEFT JOIN w_rss_ipa ON p_rss.oid = w_rss_ipa.rss_id AND est_maitre = '1'
|
|
|
JOIN pmsi.t_ghm ON t_ghm.oid = p_rss.ghm_id AND t_ghm.ghm3 IN ('M', 'Z')
|
|
|
WHERE date_sortie >= '20110101' AND
|
|
|
p_rss.duree_sejour > 0 AND
|
|
|
w_rss_ipa.ipa_id IS DISTINCT FROM t_ipa.oid
|
|
|
GROUP BY 1, 2, 3
|
|
|
;
|
|
|
----------------------- D05
|
|
|
|
|
|
RAISE NOTICE '%' , 'D05 : Chirurgie ambulatoire hors transferts, mutations ou deces';
|
|
|
DROP TABLE IF EXISTS w_tmp
|
|
|
;
|
|
|
CREATE TEMP TABLE w_tmp AS
|
|
|
SELECT
|
|
|
p_rss.oid AS rss_id
|
|
|
FROM
|
|
|
pmsi.p_rss
|
|
|
WHERE 1=1
|
|
|
AND (mode_sortie = 9
|
|
|
OR (mode_sortie = 7 AND destination = 6)
|
|
|
OR (mode_sortie = 7 AND destination = 2)
|
|
|
OR (mode_sortie = 7 AND destination = 4)
|
|
|
OR (mode_sortie = 6 AND destination = 6)
|
|
|
OR (mode_sortie = 6 AND destination = 2)
|
|
|
OR (mode_sortie = 6 AND destination = 4)
|
|
|
)
|
|
|
AND date_sortie >= '20110101'
|
|
|
;
|
|
|
CREATE INDEX w_tmp_i1 ON w_tmp USING btree (rss_id)
|
|
|
;
|
|
|
|
|
|
INSERT INTO w_rss_ipa
|
|
|
SELECT
|
|
|
p_rss.oid AS rss_id,
|
|
|
t_ipa.oid AS ipa_id,
|
|
|
CASE WHEN w_rss_ipa.rss_id IS NULL THEN '1' ELSE '0' END AS maitre
|
|
|
FROM pmsi.p_rss
|
|
|
JOIN base.t_ipa ON t_ipa.code = 'D05'
|
|
|
LEFT JOIN w_rss_ipa ON p_rss.oid = w_rss_ipa.rss_id AND est_maitre = '1'
|
|
|
JOIN pmsi.t_ghm ON t_ghm.oid = p_rss.ghm_id AND t_ghm.ghm3 = 'C'
|
|
|
LEFT JOIN w_tmp ON w_tmp.rss_id = p_rss.oid
|
|
|
WHERE date_sortie >= '20110101' AND
|
|
|
p_rss.duree_sejour = 0 AND
|
|
|
w_tmp.rss_id IS NULL AND
|
|
|
w_rss_ipa.ipa_id IS DISTINCT FROM t_ipa.oid
|
|
|
GROUP BY 1, 2, 3
|
|
|
;
|
|
|
----------------------- D06
|
|
|
|
|
|
RAISE NOTICE '%' , 'D06 : Chirurgie en hospitalisation complete ou sans nuitee avec transfert, mutation ou deces';
|
|
|
-- Chirurgie hospit complète
|
|
|
INSERT INTO w_rss_ipa
|
|
|
SELECT
|
|
|
p_rss.oid AS rss_id,
|
|
|
t_ipa.oid AS ipa_id,
|
|
|
CASE WHEN w_rss_ipa.rss_id IS NULL THEN '1' ELSE '0' END AS maitre
|
|
|
FROM pmsi.p_rss
|
|
|
JOIN base.t_ipa ON t_ipa.code = 'D06'
|
|
|
LEFT JOIN w_rss_ipa ON p_rss.oid = w_rss_ipa.rss_id AND est_maitre = '1'
|
|
|
JOIN pmsi.t_ghm ON t_ghm.oid = p_rss.ghm_id AND t_ghm.ghm3 = 'C'
|
|
|
WHERE date_sortie >= '20110101' AND
|
|
|
duree_sejour > 0 AND
|
|
|
w_rss_ipa.ipa_id IS DISTINCT FROM t_ipa.oid
|
|
|
GROUP BY 1, 2, 3
|
|
|
;
|
|
|
-- Chirurgie sans nuitee avec transfert, mutation ou deces
|
|
|
INSERT INTO w_rss_ipa
|
|
|
SELECT
|
|
|
p_rss.oid AS rss_id,
|
|
|
t_ipa.oid AS ipa_id,
|
|
|
CASE WHEN w_rss_ipa.rss_id IS NULL THEN '1' ELSE '0' END AS maitre
|
|
|
FROM pmsi.p_rss
|
|
|
JOIN base.t_ipa ON t_ipa.code = 'D06'
|
|
|
LEFT JOIN w_rss_ipa ON p_rss.oid = w_rss_ipa.rss_id AND est_maitre = '1'
|
|
|
JOIN pmsi.t_ghm ON t_ghm.oid = p_rss.ghm_id AND t_ghm.ghm3 = 'C'
|
|
|
LEFT JOIN w_tmp ON w_tmp.rss_id = p_rss.oid
|
|
|
WHERE date_sortie >= '20110101' AND
|
|
|
p_rss.duree_sejour = 0 AND
|
|
|
w_tmp.rss_id IS DISTINCT FROM NULL AND
|
|
|
w_rss_ipa.ipa_id IS DISTINCT FROM t_ipa.oid
|
|
|
GROUP BY 1, 2, 3
|
|
|
;
|
|
|
-- ############################################################################
|
|
|
|
|
|
TRUNCATE pmsi.p_rss_ipa;
|
|
|
INSERT INTO pmsi.p_rss_ipa
|
|
|
(
|
|
|
rss_id,
|
|
|
ipa_id,
|
|
|
est_maitre,
|
|
|
nb_ipa
|
|
|
)
|
|
|
SELECT
|
|
|
rss_id,
|
|
|
ipa_id,
|
|
|
est_maitre,
|
|
|
nb_ipa
|
|
|
FROM w_rss_ipa;
|
|
|
DROP TABLE IF EXISTS w_rss_ipa
|
|
|
;
|
|
|
DROP TABLE IF EXISTS w_tmp
|
|
|
;
|
|
|
|
|
|
RETURN 'OK';
|
|
|
END;
|