UWVA#59571 Ruimere/betere opschoning en anonimisering van bezoekers/afspraken

svn path=/Customer/trunk/; revision=48834
This commit is contained in:
Sander Schepers
2020-11-16 18:56:21 +00:00
parent 2d2c9e1cfd
commit 8bd2252ea2

View File

@@ -6623,6 +6623,7 @@ AS
----------------------------------------------------------------------------------
--
-- UWVA#29299: Allemaal cursors voor tracken van anonimisering van MLD/RES/BEZ
-- UWVA#59571: Anonimisering van BEZ aangepast
CREATE OR REPLACE PROCEDURE uwva_aftersales_anonimiseer (p_applname IN VARCHAR2,
p_applrun IN VARCHAR2,
p_filedir IN VARCHAR2,
@@ -6742,34 +6743,16 @@ AS
AND tr.fac_tracking_datum > SYSDATE - 365 --MvH toegevoegd tbv performance
ORDER BY 1;
-- Delete 'BSN' van alle bezoekers bij afspraken >31 dagen oud! (UWVA#28511)
-- Met UWVA#59571 is de opschoning vwb de bezoekers- en afspraakregistratie een stuk vereenvoudigd en daarmee deze cursor ook.
-- Of een BSN gevuld is is niet meer van toepassing, van alle bezoekers meer dan 31 dagen geleden mag er geanonimiseerd/geschoond worden.
-- De bezoekersregistratie zelf laten we wel nog staan ivm tellingen.
CURSOR c_afspraak
IS -- Afspraken met een bezoeker met een gevuld BSN-veld!
SELECT DISTINCT a.bez_afspraak_key
FROM bez_afspraak a, bez_bezoekers b, bez_kenmerkwaarde bk
WHERE a.bez_afspraak_key = b.bez_afspraak_key
AND b.bez_bezoekers_key = bk.bez_bezoekers_key
AND bk.bez_kenmerk_key = 1 --BSN
AND a.bez_afspraak_datum < SYSDATE - 31
AND a.bez_afspraak_datum > SYSDATE - 365 --MvH toegevoegd tbv performance
UNION
SELECT DISTINCT a.bez_afspraak_key
IS
SELECT DISTINCT (a.bez_afspraak_key)
FROM bez_afspraak a, bez_bezoekers b
WHERE a.bez_afspraak_key = b.bez_afspraak_key
AND (LENGTH (REPLACE (bez_afspraak_bedrijf || 'x', ' ', '')) - LENGTH (REPLACE (TRANSLATE (bez_afspraak_bedrijf || 'x', '1234567890', ' '), ' ', '')) > 5
OR LENGTH (REPLACE (bez_afspraak_naam || 'x', ' ', '')) - LENGTH (REPLACE (TRANSLATE (bez_afspraak_naam || 'x', '1234567890', ' '), ' ', '')) > 5)
WHERE a.bez_afspraak_key = b.bez_afspraak_key
AND a.bez_afspraak_datum < SYSDATE - 31
AND a.bez_afspraak_datum > SYSDATE - 365 --MvH toegevoegd tbv performance
UNION -- Afspraken bij een reservering met een gevuld BSN-veld (voordat die in c_res wordt verwijderd)!
SELECT a.bez_afspraak_key
FROM bez_afspraak a, res_rsv_ruimte r, res_kenmerkwaarde kw, res_kenmerk k
WHERE a.res_rsv_ruimte_key = r.res_rsv_ruimte_key
AND r.res_rsv_ruimte_key = kw.res_rsv_ruimte_key
AND kw.res_kenmerk_key = k.res_kenmerk_key
AND k.res_srtkenmerk_key = 3 --BSN
AND a.bez_afspraak_datum < SYSDATE - 31
AND a.bez_afspraak_datum > SYSDATE - 365 --MvH toegevoegd tbv performance
ORDER BY bez_afspraak_key;
AND a.bez_afspraak_datum > SYSDATE - 365;
-- Reserveringen met een gevuld BSN-veld (deze hebben hier geen bezoekers meer met een gevuld BSN-veld)!
CURSOR c_res
@@ -6977,7 +6960,7 @@ BEGIN
------------------------------------------------------------------------------------------------------------------------------------------------------------------
FOR rc IN c_afspraak
LOOP
-- Delete 'BSN' van alle bezoekers bij afspraken >31 dagen oud (UWVA#28511)
-- Anonimiseren van alle bezoekersregistratie > 31 dagen oud en verwijderen tracking (UWVA#59571)
DELETE FROM bez_kenmerkwaarde kw
WHERE EXISTS
(SELECT 1
@@ -6988,30 +6971,88 @@ BEGIN
-- UWVA#30245: Anonimiseren bez_bezoekers.bez_bezoekers_opmerking hoeft
-- niet, want bevat geen vertrouwelijke info!
-- Anonimiseer gegevens per bezoeker van afspraken >31 dagen oud met BSN (bij bezoeker of reservering)
-- Anonimiseer gegevens per bezoeker van afspraken >31 dagen oud (bij bezoeker of reservering)
-- Met UWVA#59571 moeten bepaalde bezoekersregistraties (KZ) naar 'Anoniem', anderen naar 'Bezoeker'
-- Dat gaat via eigen tabel 'KZ-klant zone' waarin de betreffende activiteit-key staat van de KZ activiteiten (die wijzigen minder vaak)
UPDATE bez_bezoekers
SET bez_afspraak_naam = 'Anoniem', bez_afspraak_bedrijf = NULL
WHERE bez_afspraak_key = rc.bez_afspraak_key;
WHERE bez_afspraak_key = rc.bez_afspraak_key
AND bez_afspraak_key IN
(SELECT a2.bez_afspraak_key
FROM fac_usrdata ud,
bez_afspraak a2,
res_rsv_ruimte r
WHERE r.res_activiteit_key =
fac.safe_to_number (ud.fac_usrdata_code)
AND a2.res_rsv_ruimte_key =
r.res_rsv_ruimte_key
AND ud.fac_usrdata_verwijder IS NULL
AND ud.fac_usrtab_key = 1623); -- Eigen tabel Klantzone
UPDATE bez_bezoekers
SET bez_afspraak_naam = 'Bezoeker', bez_afspraak_bedrijf = NULL
WHERE bez_afspraak_key = rc.bez_afspraak_key
AND bez_afspraak_key NOT IN
(SELECT a2.bez_afspraak_key
FROM fac_usrdata ud,
bez_afspraak a2,
res_rsv_ruimte r
WHERE r.res_activiteit_key =
fac.safe_to_number (ud.fac_usrdata_code)
AND a2.res_rsv_ruimte_key =
r.res_rsv_ruimte_key
AND ud.fac_usrdata_verwijder IS NULL
AND ud.fac_usrtab_key = 1623); -- Eigen tabel Klantzone
-- Verwijder opmerking van afspraken >31 dagen oud met BSN (bij bezoeker of reservering)
UPDATE bez_afspraak
SET bez_afspraak_opmerking = NULL
WHERE bez_afspraak_key = rc.bez_afspraak_key;
-- Met UWVA#59571 moeten de reserveringsopmerkingen ook leeg worden gemaakt voor de kz-reserveringen.
UPDATE res_rsv_ruimte
SET res_rsv_ruimte_opmerking = NULL
WHERE res_rsv_ruimte_key IN
(SELECT r.res_rsv_ruimte_key
FROM fac_usrdata ud, bez_afspraak a2, res_rsv_ruimte r
WHERE r.res_activiteit_key =
fac.safe_to_number (ud.fac_usrdata_code)
AND a2.res_rsv_ruimte_key = r.res_rsv_ruimte_key
AND a2.bez_afspraak_key = rc.bez_afspraak_key
AND ud.fac_usrdata_verwijder IS NULL
AND ud.fac_usrtab_key = 1623);
DELETE FROM fac_tracking
WHERE fac_srtnotificatie_key = 334 -- BEZUPD
AND fac_tracking_refkey = rc.bez_afspraak_key;
WHERE fac_tracking_key IN
(SELECT t.fac_tracking_key
FROM fac_srtnotificatie sn,
fac_tracking t,
bez_bezoekers b,
bez_afspraak a
WHERE t.fac_srtnotificatie_key =
sn.fac_srtnotificatie_key
AND sn.fac_srtnotificatie_xmlnode =
'bezoeker'
AND t.fac_tracking_refkey =
b.bez_bezoekers_key
AND b.bez_afspraak_key = a.bez_afspraak_key
AND t.fac_tracking_refkey =
rc.bez_afspraak_key);
DELETE FROM fac_tracking t1
WHERE t1.fac_srtnotificatie_key IN (14, 15, 61, 62, 154) -- BEZDON/BEZOUT/BEZDO2/BEZOU2/BEZBAD
AND t1.fac_tracking_oms IS NOT NULL -- Niet van belang
AND EXISTS
(SELECT 1
FROM bez_bezoekers b
WHERE b.bez_afspraak_key = rc.bez_afspraak_key
AND b.bez_bezoekers_key = t1.fac_tracking_refkey);
fac.trackaction ('#BEZUPD', rc.bez_afspraak_key, NULL, v_nu, c_txt_anoniem);
DELETE FROM fac_tracking
WHERE fac_tracking_key IN
(SELECT t.fac_tracking_key
FROM fac_srtnotificatie sn,
fac_tracking t,
bez_afspraak a
WHERE t.fac_srtnotificatie_key =
sn.fac_srtnotificatie_key
AND sn.fac_srtnotificatie_xmlnode =
'afspraak'
AND t.fac_tracking_refkey =
a.bez_afspraak_key
AND t.fac_tracking_refkey =
rc.bez_afspraak_key);
END LOOP;
COMMIT;