pour déploiement auto v2 via gitlab
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

143 lines
6.4 KiB

return: text
lang: plpgsql
src: |
DECLARE
result TEXT;
BEGIN
-- Réplication des médecins dans Base
IF EXISTS (
SELECT *
FROM pmsi.t_medecins
WHERE oid <> 0 AND COALESCE(medecin_id,0) = 0 AND
t_medecins.nom <> '' AND
oid IN (SELECT oid FROM pmsi.p_oids WHERE code_table LIKE ('medecin%'))
)
THEN
BEGIN
PERFORM base.cti_initialize_medecins();
EXCEPTION
WHEN others THEN RAISE NOTICE 'Erreur %' , 'base.cti_initialize_medecins';
END;
END IF;
-- Maintenance des spécialités absentes
UPDATE pmsi.t_medecins SET specialite_id = 0 WHERE specialite_id is null;
UPDATE pmsi.t_medecins SET specialite_interne_id = 0 WHERE specialite_interne_id is null;
-- Mise à jour table
DELETE FROM pmsi.t_medecins_c
WHERE pmsi.t_medecins_c.oid not in (select oid from pmsi.t_medecins);
UPDATE pmsi.t_medecins_c
SET
code = v_medecins_7.code,
nom = v_medecins_7.nom,
prenom = v_medecins_7.prenom,
nom_prenom = v_medecins_7.nom_prenom,
no_adeli = v_medecins_7.no_adeli,
specialite_id = v_medecins_7.specialite_id,
specialite_medecin_code = v_medecins_7.specialite_medecin_code,
specialite_medecin_texte = v_medecins_7.specialite_medecin_texte,
specialite_interne_id = v_medecins_7.specialite_interne_id,
specialite_interne_medecin_code = v_medecins_7.specialite_interne_medecin_code,
specialite_interne_medecin_texte = v_medecins_7.specialite_interne_medecin_texte,
medecin_reference_id = v_medecins_7.medecin_reference_id,
medecin_reference_code = v_medecins_7.medecin_reference_code,
medecin_reference_nom = v_medecins_7.medecin_reference_nom,
medecin_reference_prenom = v_medecins_7.medecin_reference_prenom,
medecin_reference_nom_prenom = v_medecins_7.medecin_reference_nom_prenom,
medecin_reference_no_adeli = v_medecins_7.medecin_reference_no_adeli,
specialite_medecin_reference_id = v_medecins_7.specialite_medecin_reference_id,
specialite_medecin_reference_code = v_medecins_7.specialite_medecin_reference_code,
specialite_medecin_reference_texte = v_medecins_7.specialite_medecin_reference_texte,
specialite_interne_medecin_reference_id = v_medecins_7.specialite_interne_medecin_reference_id,
specialite_interne_medecin_reference_code = v_medecins_7.specialite_interne_medecin_reference_code,
specialite_interne_medecin_reference_texte = v_medecins_7.specialite_interne_medecin_reference_texte
FROM pmsi.v_medecins_7
WHERE t_medecins_c.oid = v_medecins_7.oid AND
(
t_medecins_c.code IS DISTINCT FROM v_medecins_7.code OR
t_medecins_c.nom IS DISTINCT FROM v_medecins_7.nom OR
t_medecins_c.prenom IS DISTINCT FROM v_medecins_7.prenom OR
t_medecins_c.nom_prenom IS DISTINCT FROM v_medecins_7.nom_prenom OR
t_medecins_c.no_adeli IS DISTINCT FROM v_medecins_7.no_adeli OR
t_medecins_c.specialite_id IS DISTINCT FROM v_medecins_7.specialite_id OR
t_medecins_c.specialite_medecin_code IS DISTINCT FROM v_medecins_7.specialite_medecin_code OR
t_medecins_c.specialite_medecin_texte IS DISTINCT FROM v_medecins_7.specialite_medecin_texte OR
t_medecins_c.specialite_interne_id IS DISTINCT FROM v_medecins_7.specialite_interne_id OR
t_medecins_c.specialite_interne_medecin_code IS DISTINCT FROM v_medecins_7.specialite_interne_medecin_code OR
t_medecins_c.specialite_interne_medecin_texte IS DISTINCT FROM v_medecins_7.specialite_interne_medecin_texte OR
t_medecins_c.medecin_reference_id IS DISTINCT FROM v_medecins_7.medecin_reference_id OR
t_medecins_c.medecin_reference_code IS DISTINCT FROM v_medecins_7.medecin_reference_code OR
t_medecins_c.medecin_reference_nom IS DISTINCT FROM v_medecins_7.medecin_reference_nom OR
t_medecins_c.medecin_reference_prenom IS DISTINCT FROM v_medecins_7.medecin_reference_prenom OR
t_medecins_c.medecin_reference_nom_prenom IS DISTINCT FROM v_medecins_7.medecin_reference_nom_prenom OR
t_medecins_c.medecin_reference_no_adeli IS DISTINCT FROM v_medecins_7.medecin_reference_no_adeli OR
t_medecins_c.specialite_medecin_reference_id IS DISTINCT FROM v_medecins_7.specialite_medecin_reference_id OR
t_medecins_c.specialite_medecin_reference_code IS DISTINCT FROM v_medecins_7.specialite_medecin_reference_code OR
t_medecins_c.specialite_medecin_reference_texte IS DISTINCT FROM v_medecins_7.specialite_medecin_reference_texte OR
t_medecins_c.specialite_interne_medecin_reference_id IS DISTINCT FROM v_medecins_7.specialite_interne_medecin_reference_id OR
t_medecins_c.specialite_interne_medecin_reference_code IS DISTINCT FROM v_medecins_7.specialite_interne_medecin_reference_code OR
t_medecins_c.specialite_interne_medecin_reference_texte IS DISTINCT FROM v_medecins_7.specialite_interne_medecin_reference_texte
);
INSERT INTO pmsi.t_medecins_c(
oid,
code,
nom,
prenom,
nom_prenom,
no_adeli,
specialite_id,
specialite_medecin_code,
specialite_medecin_texte,
specialite_interne_id,
specialite_interne_medecin_code,
specialite_interne_medecin_texte,
medecin_reference_id,
medecin_reference_code,
medecin_reference_nom,
medecin_reference_prenom,
medecin_reference_nom_prenom,
medecin_reference_no_adeli,
specialite_medecin_reference_id,
specialite_medecin_reference_code,
specialite_medecin_reference_texte,
specialite_interne_medecin_reference_id,
specialite_interne_medecin_reference_code,
specialite_interne_medecin_reference_texte)
SELECT
oid,
code,
nom,
prenom,
nom_prenom,
no_adeli,
specialite_id,
specialite_medecin_code,
specialite_medecin_texte,
specialite_interne_id,
specialite_interne_medecin_code,
specialite_interne_medecin_texte,
medecin_reference_id,
medecin_reference_code,
medecin_reference_nom,
medecin_reference_prenom,
medecin_reference_nom_prenom,
medecin_reference_no_adeli,
specialite_medecin_reference_id,
specialite_medecin_reference_code,
specialite_medecin_reference_texte,
specialite_interne_medecin_reference_id,
specialite_interne_medecin_reference_code,
specialite_interne_medecin_reference_texte
FROM pmsi.v_medecins_7
WHERE oid NOT IN (SELECT oid FROM pmsi.t_medecins_c);
PERFORM base.cti_update_classes('pmsi', 't_medecins_c', 'MEDECIN','');
RETURN 'OK';
END;