Metodická dokumentace projektu: architektura systému I-COP – integrace datových zdrojů – implementace datových skladů

Otevřít PDF (2,9 MB)

3. I-COP Agent

I-COP Agent je komponenta, která je provozována na serveru uvnitř spolupracující nemocnice a je zodpovědná za zpracování primárních dat nemocnice, které mohou obsahovat osobní údaje. I-COP Agent je používán k nevratné de-identifikaci záznamů.

3.1. Architektura I-COP Agent

I-COP Agent se skládá z několika základních částí. Jádrem celého systému je databáze, která provádí většinu procesu zpracování primárních nemocničních dat a jejich de-identifikaci. Doplněna je sadou obslužných knihoven v PHP, Linux/Windows shell skriptů, archivačním programem pro zabezpečené ukládání citlivých dat atd.

3.1.1. Databáze

Použita je databáze MySQL licencovaná jako open-source a free, která je standardem při používání v nekomerčních projektech.

3.1.1.1. Schémata

Pro funkcionalitu I-COP Agenta jsou potřeba v databázi 3 databázová schémata:

3.1.1.1.1. icop_dw1_koc_import

Slouží pro zpracování primární dat nemocnice, která obsahují osobní údaje pacientů. Má do ní přístup pouze uživatel pověřeného pracovníka nemocnice (obvykle “root”) za účelem zpracování nových dat. Všechna data obsahující osobní údaje se po skončení importu nových dat (jednou ročně) mažou.

3.1.1.1.2. icop_dw1_koc_import_anonym

Slouží pro uložení výsledku iniciálního zpracování nemocničních dat, která již neobsahují žádné osobní údaje pacientů. Jsou přístupná I-COP týmu.

3.1.1.1.3. icop_access

Schéma sloužící k uchování parametrů procesu importu nových dat, archivaci logů z průběhu jejich zpracování apod. Neobsahuje ani žádná primární data nemocnice, ani žádné osobní nebo jiné citlivé údaje. Je přístupná pověřenému pracovníkovi nemocnice i I-COP týmu.

3.1.1.2. ERD schématu icop_dw1_koc_import

ER diagram zachycující základní komponenty I-COP Agenta s daty obsahujícími osobní údaje

3.1.1.3. Popis datového modelu

3.1.1.3.1. pacient_hash

Slouží jako převodník mezi číslem pojištěnce a jeho šifrou. Ke každému číslu pojištěnce je přiřazena odpovídající šifra. Po každém použití je vždy archivován v zašifrovaném archivu na disku nemocnice (pod kontrolou pracovníka nemocnice) a z databáze je nevratně smazán. Analytický tým I-COP nemá žádnou možnost identifikovat osobu pacienta.

Název

Datový typ

Integritní omezení

Popis

rodne_cislo

varchar(10)

NN, PK

Číslo pojištěnce

rodne_cislo_hash

varchar(64)

NN, U

Šifra pacienta vzniklá jednosměrnou šifrovací funkcí

3.1.1.3.2. psw

Ukládá otisk hesla (soli), které se používá pro šifrování čísel pojištěnců při procesu de-identifikace. Slouží jako kontrola hesla, aby nedošlo k šifrování různými hesly, které by znemožnily jednoznačné přiřazení pacientů mezi různými importy dat. Plně pod kontrolou pracovníků nemocnice.

Název

Datový typ

Integritní omezení

Popis

id

int

NN, PK, AI

Surrogate key

psw

varchar(32)

NN, U

Otisk hesla (soli) používaný při šifrování čísel pojištěnců

3.1.1.3.3. pacient_pzp, pacient_presk, pacient_psc, pacient_nor, pacient_zemreli

Tyto tabulky mají stejnou strukturu. Uchovávají v primárních datech nemocnice základní údaje o pacientech, kteří byli dohledáni v primárních datech nemocnice. Tyto údaje jsou odvozeny z čísla pojištěnce. Z něj jsou odvozeny údaje o datu narození, pohlaví a státní příslušnosti. V opačném případě jsou tyto údaje neznámé.

Název

Datový typ

Integritní omezení

Popis

id

Int

NN, PK, AI

Surrogate key

rodne_cislo

varchar(10)

NN, U

Číslo pojištěnce dohledané v primárních datech

rodne_cislo_hash

varchar(64)

 

Šifra čísla pojištěnce po procesu de-identifikace

pohlavi

char(1)

 

0 = muž, 1 = žena, 2 = neznámo

datum_narozeni

varchar(10)

 

Datum narození ve formátu YYYYMMDD

je_cizinec

char(1)

 

0 = ne, 1 = ano, 2 = neznámo

3.1.1.3.4. pzp_dictionary

Slovník pro identifikaci známých typů vět v datech pojišťoven. Obsahuje informaci pro rozpoznání typu věty podle počátečního písmene a délky řádku. Dále obsahuje údaj o případném obsahu osobních údajů v daném typu věty – jaké údaje se zde nacházejí a na jaké pozici v řádku. Tyto údaje pak slouží v procesu de-identifikace pod kontrolou pracovníků nemocnice.

Název

Datový typ

Integritní omezení

Popis

id_sys

int

NN, PK, AI

Surrogate key

firstchar

varchar(1)

NN

První znak na řádku věty

sentencelength

smallint

NN

Délka věty v počtu znaků

begin

smallint

 

Počáteční pozice případného osobního údaje v tomto typu věty

length

smallint

 

Koncová pozice případného osobního údaje v tomto typu věty

flag

varchar(1)

 

Typ případného osobního údaje (N=nic, R=číslo pojištěnce, D=jiný osobní údaj)

notice

varchar(255)

 

Poznámka

3.1.1.3.5. pzp, pzp_anonym

Obsahuje záznam pro každý načtený řádek primárních dat vykázaných zdravotní pojišťovně. Kromě vlastního znění řádku obsahuje již odvozené údaje pro identifikaci typu věty, nadřazených záznamů (dávka, doklad) a identifikace konkrétního spuštění procesu importu primárních dat.

Název

Datový typ

Integritní omezení

Popis

id_sys

int

NN, PK, AI

Surrogate key

radka

varchar(400)

NN

Celý obsah řádku věty PZP v původním znění; v případě tabulky pzp_anonym jsou všechna osobní data v atributu radka vymazána

kod_vety

char(1)

 

Úvodní znak řádku určující typ věty

delka_vety

tinyint

 

Délka řádku věty určující typ věty

kod_dokladu

char(2)

 

Výsledná klasifikace typu věty dle typu a délky

davka

varchar(50)

 

Identifikátor dávky, ve které byl řádek vykázán

doklad

varchar(30)

 

Identifikátor dokladu, ve kterém byl řádek vykázán

doklad_subs

varchar(30)

 

Část identifikátoru dokladu

nadrazeny_doklad

varchar(30)

 

Pro podřízené doklady (03 – zvlášť účtovaná léčiva a materiál) odkazuje na nadřízený doklad (01, 02, 06)

id_pacient

int

FK -> pacient_pzp (id_pacient)

Identifikátor pacienta, ke kterému byl doklad vykázán

zz_importu

char(10)

NN

Identifikátor zařízení, ze kterého pocházejí primární data

datum_importu

datetime

NN

Čas zahájení importu primárních dat

flag

tinyint

 

Příznak dohledání typu věty ve slovníku známých typů vět (pzp_dictionary)

rok_uzavreni

smallint

 

Rok uzavření dokladu

mesic_uzavreni

tinyint

 

Měsíc uzavření dokladu

3.1.1.3.6. tmp_pzp_bid

Slouží k vytvoření asociace mezi řádkem záznamu v tabulce pzp a identifikátorem pacienta. Obsahuje záznam pro každý řádek tabulky PZP, kde se číslo pojištěnce vyskytuje a je používána ke snadnému dohledání a nahrazení těchto identifikátorů při procesu de-identifikace.

Název

Datový typ

Integritní omezení

Popis

id_sys

Int

NN, PK, FK -> pzp (id_sys)

Odkaz na řádek v tabulce PZP

bid

varchar(64)

NN, PK, FK -> pacient_pzp (rodne_cislo)

Odkaz na řádek v tabulce Pacient_PZP; po provedení anonymizace je číslo pojištěnce nahrazeno šifrou

3.1.1.3.7. presk, presk_anonym

Obsahuje jeden záznam pro každé předepsané léčivo nebo materiál, evidované v NIS. Vztahuje se ke konkrétnímu pacientovi pro daný typ léčiva v daném dni na daném oddělení. V tabulce presk_anonym je sloupec rc nahrazen sloupcem rc_hash, který obsahuje šifru čísla pojištěnce.

Název

Datový typ

Integritní omezení

Popis

inscomp

varchar(3)

 

Číslo pojišťovny pacienta

datrece

varchar(10)

 

Datum předepsání léčiva

rc

varchar(10)

 

Číslo pojištěnce

drug

varchar(7)

 

Kód léčiva

quantity

varchar(10)

 

Množství předepsaného léčiva

czicz

varchar(8)

 

IČP předepisujícího oddělení

sk

varchar(1)

 

Skupina léčiv/materiálu (1=HVLP, 2=IVLP, 3=PZT, 4=STOMAG)

kc

varchar(15)

 

Vykazovaná cena předepsaného léčiva

atc

varchar(7)

 

ATC kód předepsaného léčiva

nazevatc

varchar(100)

 

Název ATC skupiny předepsaného léčiva

nazev

varchar(100)

 

Název léčiva

dg

varchar(5)

 

Diagnóza, pro kterou bylo léčivo předepsáno

jine

varchar(100)

 

Další údaje, vztahující se k preskripci

zz_importu

varchar(10)

NN

Identifikátor zařízení, ze kterého pocházejí primární data

datum_importu

datetime

NN

Čas zahájení importu primárních dat

id_pacient

Int

NN, FK -> pacient_presk (id_pacient)

Identifikátor pacienta

3.1.1.3.8. psc, psc_anonym

Obsahuje údaje o bydlišti pacienta z interního NIS nemocnice, případně další údaje. V tabulce psc_anonym je sloupec rc nahrazen sloupcem rc_hash, který obsahuje šifru čísla pojištěnce. Sloupce ulicecislo, ulice, cp, co, jmeno, krestni a prijmeni jsou smazány.

Název

Datový typ

Integritní omezení

Popis

rc

varchar(10)

NN

Číslo pojištěnce

psc

varchar(6)

 

PSČ kód bydliště

poj

varchar(3)

 

Číslo pojišťovny pacienta

ulicecislo

varchar(100)

 

Ulice a číslo domu

ulice

varchar(100)

 

Ulice

cp

varchar(10)

 

Číslo popisné

co

varchar(10)

 

Číslo orientační

obec

varchar(8)

 

Obec bydliště pacienta (statistický kód obce)

jmeno

varchar(100)

 

Jméno a příjmení pacienta

krestni

varchar(50)

 

Křestní jméno pacienta

prijmeni

varchar(50)

 

Příjmení pacienta

inicialy

varchar(2)

 

Iniciály (první písmeno křestního jména a příjmení)

jine

varchar(200)

 

Jakékoliv jiné údaje o pacientovi

zz_importu

varchar(10)

NN

Identifikátor zařízení, ze kterého pocházejí primární data

datum_importu

datetime

NN

Čas zahájení importu primárních dat

id_pacient

int

NN, FK -> pacient_psc (id_pacient)

Identifikátor pacienta

3.1.1.3.9. nor, nor_anonym

Obsahuje záznam pro každý načtený řádek primárních dat Národního onkologického registru (NOR). Obsahuje všechny záznamy pacientů dané nemocnice nahlášené do NOR. V tabulce nor_anonym je sloupec rodcis nahrazen sloupcem rodcis_hash, který obsahuje šifru čísla pojištěnce.

Název

Datový typ

Integritní omezení

Popis

id_sys

int

NN, PK, AI

Surrogate key

id_pacient

int

NN, FK -> pacient_nor (id_pacient)

Identifikátor pacienta

evcislo

varchar(14)

 

Evidenční číslo novotvaru

pocno

varchar(2)

 

Pořadové číslo novotvaru u stejného pacienta

stol

varchar(2)

 

První 2 cifry z roku narození pacienta

datnar

varchar(8)

 

Datum narození pacienta

rodcis_r

varchar(11)

 

Číslo pojištěnce

pohlav

varchar(1)

 

Pohlaví pacienta (1=muž, 2=žena, 9=neznámo)

psc

varchar(5)

 

PSČ bydliště pacienta

obce

varchar(6)

 

Statistický kód obce trvalého bydliště pacienta

obecpuv

varchar(6)

 

Statistický kód obce bydliště v době hlášení

...

...

 

Řada dalších parametrů

zz_importu

char(10)

NN

Identifikátor zařízení, ze kterého pocházejí primární data

datum_importu

datetime

NN

Čas zahájení importu primárních dat

3.1.1.3.10. zemreli, zemreli_anonym

Obsahuje záznamy ze seznamu pacientů nemocnice doplněné o případná data úmrtí a úmrtní diagnózy. V tabulce zemreli_anonym je sloupec rc nahrazen sloupcem rc_hash, který obsahuje šifru čísla pojištěnce.

Název

Datový typ

Integritní omezení

Popis

rc

varchar(10)

NN, PK, AI

Číslo pojištěnce

den_umrti

varchar(10)

 

Datum úmrtí pacienta

dg_umrti

varchar(5)

 

Hlavní příčina úmrtí pacienta

zz_importu

char(10)

NN

Identifikátor zařízení, ze kterého pocházejí primární data

datum_importu

datetime

NN

Čas zahájení importu primárních dat

id_pacient

int

NN, FK -> pacient_nor (id_pacient)

Identifikátor pacienta

3.1.2. Další komponenty I-COP Agent

Pro správnou funkcionalitu I-COP Agent jsou zapotřebí ještě následující komponenty:

  • Skripty pro spouštění importu nových dat (shell a PHP skripty pro snadné spouštění importu)
  • Převodník čísel pojištěnců (shell a 7zip pro bezpečnou archivaci převodníků čísel pojištěnců na šifry)
  • I-COP Sync (PHP skripty a HTTPS rozhraní pro přesun de-identifikovaných dat do anonymizované databáze

3.2. Parametry vstupních dat

I-COP agent a jeho komponenty využívají parametry pro zpracování rozdílných vstupních dat. Proto se spouští v konzoli (ve verzi pro operační systém Windows také s administrátorským oprávněním). Parametry rozdělujeme na interní, která jsou uložena v konfiguračním souboru a externí, která jsou požadována při spouštění v konzoli.

Interní

Parametry jsou uložena v konfiguračních souborech agent.bat a agent.ini  . Konfigurační soubor typu bat sdružuje primárně systémová nastavení jako cesty k adresářové struktuře agenta, databáze, komprimačního nástroje a jiné. Konfigurační soubor typu .ini se zaměřuje na popis datového rozhraní primárních dat pro zpracování. Jedná se nejen o nastavení cest k datovým zdrojům, ale hlavně pro popis struktury vstupních dat. Pro soubory typu CSV například oddělovač, formát data, seznam předávaných atributů a další.
Tyto konfigurační soubory jsou uložena v adresáři etc a všechny komponenty agenta se odvolávají na data obsažena v nich.

Externí

Jedná se o parametry nutné ke spuštění komponent I-COP Agent, například o typ primárního zdroje dat (k-dávky, preskripce, nor…).

3.2.1. Doklady datového rozhraní VZP („k-dávky“)

Doklady odpovídají datovému rozhraní VZP pro individuální doklady, platné ke dni pořizování těchto dat – viz https://www.vzp.cz/poskytovatele/vyuctovani-zdravotni-pece/metodika-vyuctovani-aktualni-stav. Jejich struktura a obsah je tam přesně popsán.

3.2.2. Záznamy nemocniční preskripce

V souborech, které popisují předepsaná léčiva nebo materiál pro pacienty nemocnice, mohou obsahovat následující parametry:

Název

Popis

Datum

datum předepsání léčiva

Poj

pojišťovna pacienta

Icp

IČP předepisujícího lékaře

sk1, sk2

skupina prvního / druhého předepsaného léčivého přípravku

kod1, kod2

kód prvního / druhého předepsaného léčivého přípravku

mnoz1, mnoz2

množství prvního / druhého předepsaného léčivého přípravku

cena1, cena2

úhrada za první / druhý předepsaný léčivý přípravek

atc1, atc2

ATC skupina prvního / druhého předepsaného léčivého přípravku

nazev1, nazev2

název prvního / druhého předepsaného léčivého přípravku

latka1, latka2

účinná látka prvního / druhého předepsaného léčivého přípravku

dg1, dg2

diagnóza prvního / druhého předepsaného léčivého přípravku

j1_*, j2_*

místo * může být libovolný řetězec alfanumerických znaků nebo _) – jakýkoliv další parametr, vztahující se k prvnímu / druhému předepsanému léčivému přípravku, nesmí obsahovat osobní údaje pacientů

cokoliv jiného

jakýkoliv další parametr, vztahující se k preskripci jako celku, nepřenáší se do DB, může obsahovat osobní údaje

3.2.3. Záznamy z Národního onkologického registru (NOR)

Data odpovídají datovému rozhraní NOR dle metodiky, platné ke dni exportu z registru. Rozhraní je součástí předaných dat a obsahuje pro všechny záznamy exportu stejnou datovou strukturu.

3.3. Funkce I-COP Agenta

3.3.1. Import dat ze zdravotnického zařízení

3.3.1.1. Stručný souhrn procesu

Provádí

Pověřený pracovník nemocnice s oprávněním zpracování dat obsahující osobní údaje

Frekvence

Při zpracování nových dat, obvykle jednou ročně

Popis

Funkce zpracovává a načítá primární data nemocnice z textových souborů do databáze a spouští proces jejich dalšího zpracování

Vstup

Vstupem jsou připravená nemocniční data v požadovaném formátu, jejichž popis je správně nastaven v konfiguračních parametrech nástroje.

Výstup

Výsledkem procesu jsou zpracovaná nemocniční data v DB, která obsahují pouze de-identifikovaná data bez osobních údajů. Všechna ostatní dočasná data, která mohou obsahovat osobní údaje (mimo vlastních vstupních souborů), jsou bezpečně a nevratně smazána.

3.3.1.2. Podrobný popis procesu

Uvedený postup je popsán na příkladu zpracování administrativních dat nemocnice určených pro pojištovny (k-dávky, PZP). V ostatních případech je postup velmi podobný, často však výrazně jednodušší.

  1. I-COP agent se zeptá na uživatelské heslo do DB (MySQL)
  2. I-COP agent se zeptá na heslo k převodníku rodných čísel, které uloží do paměti.
  3. I-COP agent se zeptá, který z primárných datových zdrojů se bude zpracovávat:
    1. K-dávky a preskripce vykázané nemocnicí (PZP, PRESK)
    2. Data z NIS nemocnice s lokalitou bydliště (PSČ)
    3. Hlášení do Národního onkologického registru pacientů nemocnice (NOR)
  4. 7zip rozbalí z archivu pacient-hash.zip soubor pacient-hash.sql pomocí hesla z bodu II.
  5. Načte se pacient-hash.sql do tabulky icop_dw1_koc_import.pacient_hash
  6. SDELETE bezpečně smaže pacient-hash.sql
  7. Pomocí PHP skriptu se vybere jeden z primárních datových zdrojů, které uživatel označil v bodu III
  8. PHP skript projde primární zdrojová data a přetransformuje je do CSV souboru
  9. CSV soubor se nahraje do DB tabulky icop_dw1_koc_import.pzp_bulk
  10. Pustí se DB procedura pumpa_pzp (resp. PRESK, PSC, NOR, ZEM v případě jiného typu primárního datového zdroje). Víc sekce 3.3.2. Zpracování primárních dat obsahující osobní údaje v DB
  11. CSV soubor se smaže
  12. Pokud je další nezpracovaný primární zdroj, vrátí se I-COP agent na bod VII, jinak pokračuje na bod XIII
  13. Exportuje tabulku icop_dw1_koc_import.pacient_hash do souboru pacient_hash.sql
  14. Pokud neexistuje soubor pacient-hash.zip (jedná se o prvotní import), přejde I-COP agent na bod XVI
  15. Pokud soubor pacient-hash.zip existuje, zálohuje se do adresáře Archive (…)
  16. 7zip zabalí soubor pacient-hash.sql do pacient-hash.zip
  17. SDELETE bezpečně smaže soubor pacient-hash.sql
  18. V DB je smazán (truncate) obsah tabulky icop_dw1_koc_import.pacient_hash
  19. Zastaví se DB
  20. SDELETE bezpečně smaže žurnál DB
  21. Spustí se DB
  22. I-COP agent smaže všechny dočasné soubory a vypíše do konzoly závěrečné informace

3.3.2. Zpracování primárních dat obsahující osobní údaje v DB

3.3.2.1.Stručný souhrn procesu

Provádí

Pověřený pracovník nemocnice s oprávněním zpracování dat obsahující osobní údaje

Frekvence

Při zpracování nových dat, obvykle jednou ročně; spouští se automaticky v rámci procesu „Import dat ze zdravotnického zařízení“

Popis

Funkce zpracovává primární data nemocnice v rámci databáze, validuje jejich obsah, odvozuje další parametry a spouští proces jejich de-identifikace

Vstup

Vstupem jsou nemocniční data nahraná v základním tvaru do databáze

Výstup

Výsledkem procesu jsou zpracovaná nemocniční data v DB, která obsahují pouze de-identifikovaná data bez osobních údajů. Mezivýsledky v DB, které obsahují osobní údaje, jsou smazány. Jsou provedeny validační kontroly vstupních dat.

3.3.2.2. Podrobný popis procesu

Uvedený postup je popsán na příkladu zpracování administrativních dat nemocnice určených pro pojištovny (k-dávky, PZP). V ostatních případech je postup velmi podobný, často však výrazně jednodušší.

  1. Smaže se (truncate) obsah tabulek v DB icop_dw1_koc_import primárních datových zdrojů
  2. Obsah tabulky icop_dw1_koc_import.pzp_bulk se po měsíčních obdobích překopíruje do tabulky icop_dw1_koc_import.pzp
  3. Podle slovníku typů dokladů a vět jsou označeny záznamy se známou strukturou – procedura check_unknown_pzp_rows()
  4. Do převodní tabulky icop_dw1_koc_import.tmp_pzp_bid vloží ke každému nalezenému číslu pojištěnce (bid) odkaz na řádek v tabulce icop_dw1_koc_import.pzp, ve které se toto číslo nachází
  5. Pomocí procedury create_pacient_pzp() se do tabulky icop_dw1_koc_import.pacient_pzp doplní ze všech nalezených čísel pojištěnců tato data:
    1. Číslo pojištěnce
    2. Pohlaví
    3. Je_cizinec (příznak zda je pacient cizinec – podle RČ)
    4. Id_pacienta (automaticky doplněno)
  6. Doplnění tabulky icop_dw1_koc_import.pzp o id_pacienta z tabulky icop_dw1_koc_import.pacient_pzp
  7. Ověření hash hesla k převodníku rodných čísel (zadaného na začátku procesu 3.2.2.1. bod II
    1. Heslo zadané na začátku procesu se zahashuje pomocí funkce md5() a následně se porovná s obsahem tabulky icop_dw1_koc_import.psw
    2. Pokud je tabulka icop_dw1_koc_import.psw prázdná, vloží do ní záznam s hashem hesla (první spuštění agenta)
    3. Pokud je tabulka icop_dw1_koc_import.psw naplněná:
      1. Pokud se hashe neshodují, ukončí program s chybovou hláškou o nesprávném heslu k převodníku rodných čísel
      2. Pokud se hashe shodují, pokračuje dál
  8. Vytvoří tabulku icop_dw1_koc_import.pzp_anonym jako kopii tabulky PZP ale jenom těch řádků dokladů, které mají příznak známého typu věty (známé typy vět ověřené procedurou check_unknown_pzp_rows() – viz bod III)
  9. Provede se de-identifikace všech osobních údajů v primárních datech - procedury hash_patients_pzp() a anonymize_patients_pzp(). Procedury jsou popsány v části 4.2.3. De-identifikace osobních údajů
  10. Do převodní tabulky icop_dw1_koc_import.pacient_hash se přidají nově nalezené čísla pojištěnců a jejich hashe
  11. Do anonymizovaného schématu (icop_dw1_koc_import_anonym) se naplní obsah tabulek pzp, pacient_pzp a tmp_pzp_bid z původního schématu (icop_dw1_koc_import), již bez čísel pojištěnců. Primárním identifikátorem pacienta se stane rodne_cislo_hash
  12. Provedou se testy zpracování vstupních dat
  13. Smaže se obsah tabulek obsahující osobní údaje ve schématu icop_dw1_koc_import

3.3.3. De-identifikace osobních údajů

3.3.3.1. Stručný souhrn procesu

Provádí

Pověřený pracovník nemocnice s oprávněním zpracování dat obsahující osobní údaje

Frekvence

Při zpracování nově příchozích dat, obvykle jednou ročně; spouští se automaticky v rámci procesu „Zpracování primárních dat obsahující osobní údaje v DB“

Popis

Funkce provádí náhradu atributů, obsahujících osobní údaje, za jejich de-identifikované alternativy. Čísla pojištěnců jsou nahrazena bezvýznamovými identifikátory (jednosměrná šifra), další osobní údaje jsou smazány

Vstup

Vstupem jsou nemocniční data obsahující osobní údaje v DB, které jsou v nich dohledány a označeny.

Výstup

Výsledkem procesu jsou data, kde jsou osobní údaje pacientů de-identifikovány – čísla pojištěnců jsou nahrazeny bezvýznamovými identifikátory, ostatní osobní údaje jsou nevratně odstraněny.

3.3.3.2. Podrobný popis procesu

Uvedené příklady opět demonstrují funkčnost při zpracování administrativních dat nemocnice (k-dávky, PZP). Ostatní datové zdroje jsou zpracovávány analogicky.

De-identifikace čísel pojištěnců v seznamu pacientů probíhá pomocí DB procedury hash_patients_pzp(). Následující tabulka zobrazuje způsob, jakým se data s osobními údaji pacientů mapují na de-identifikované záznamy:

Mapování provádějící de-identifikaci čísel pojištěnců v seznamu pacientů na dokladech PZP

Procedura anonymize_patients_pzp() provádí náhradu čísel pojištěnců ve vlastních řádcích tabulky icop_dw1_koc_import.pzp_anonym – v tomto případě je nahradí za řetězec deseti znaků „#“. Mapování původních datových atributů tabulky icop_dw1_koc_import.pzp na atributy v tabulce icop_dw1_koc_import.pzp_anonym jsou popsány v následující tabulce.

Mapování atributů dokladů PZP na de-identifikované záznamy

Vlastní asociace řádků dokladů na pacienty v tabulce icop_dw1_koc_import.tmp_pzp_bid jsou nahrazeny hashem čísla pojištěnce, získaného procedurou hash_patients_pzp().

Mapování atributů asociační tabulky s čísly pojištěnců a řádky dokladů do de-identifikované podoby

V dalších tabulkách jsou uvedeny mapování dalších typů primárních datových zdrojů. Je v nich patrný způsob nakládání s čísly pojištěnců, resp. s dalšími osobními údaji, které se zde mohou vyskytovat.

Mapování atributů nemocničních preskripcí na de-identifikované záznamy

Mapování atributů záznamů o pacientech nemocnice na de-identifikované záznamy

3.4. Správa systému a přístupů

Za správu systému, správu přístupů, zajištění bezpečnosti a zálohování zodpovídá vždy pověřený pracovník nemocnice, na jejichž prostředcích je I-COP Agent provozován. Pracovníci dodavatele s přístupy do nemocnic jsou povinni dodržovat veškeré zásady, požadované zodpovědnými provozovateli IT v nemocnici.

3.5. Zajištění bezpečnosti osobních dat v nemocnicích

Pro zajištění bezpečnosti a ochrany osobních a jiných citlivých dat je aplikována celá řada opatření – od smluvních opatření, přes technická až po organizační pravidla. Dohromady vytvářejí velmi robustní systém ochrany nemocničních dat, který zcela vylučuje možnost jejich zneužití nebo úniku (viz kapitola 1).

3.5.1.Technická opatřeni

3.5.1.1.Přístupy ke všem datům chráněny heslem

DB MySQL rozdělena na neanonymní a anonymmní část, pro které existují dva rozdílné uživatelské účty. Zpracování vstupních dat s osobními údaji se standardně spouští pod uživatelem root (pracovníci nemocnice), který má přístup ke všem datům. Při vytváření výstupních dat a přenosu na I-COP Central se používa účet icop_admin, který má přístup jenom do anonymizované části.
Archivována data jsou zašifrovaná s heslem. Přihlášení k serveru a přístup k adresářům je řízen správou uživatelských účtů operačního systému dle politiky dané nemocnice.

3.5.1.2. Nahrazení čísel pojištěnců bezpečnou šifrou

Šifrování čísel pojištěnců je prováděno následujícím postupem.

Čísla pojištěnců, ve spojení s heslem (sůl), jsou šifrována pomocí jednosměrné šifrovací funkce SHA-1 (160-bit) na bezvýznamový identifikátor. Pro možnost zpětného dohledání čísel pojištěnců pro interní potřeby nemocnice je uchováván převodník mezi číslem pojištěnce a jeho šifrou. Způsob práce s tímto převodníkem je popsán v části 3.4.2.4.

3.5.1.3. Šifrování přenosu dat mezi I-COP Agent a I-COP Central

Při přenosu de-identifikovaných dat z nemocnice anonymizovanou databázi pro analýzy se používá zabezpečené spojení pomocí protokolu HTTPS s certifikátem, spravovaným dodavatelem. Pro komunikaci jsou povoleny pouze spojení z předem povolených IP adres jednotlivých serverů ve spolupracujících nemocnicích.

3.5.2. Organizační opatření

3.5.2.1.Smluvní ochrana osobních dat s nemocnicí

Mezi každou nemocnicí a MU je uzavřena smlouva, jejíž nedílnou součástí je dohoda o ochraně citlivých údajů nemocnice pracovníky zpracovatele a povinnost jejich mlčenlivosti.

3.5.2.2.Dohoda o mlčenlivosti zaměstnanců

Každý zaměstnanec LF MU má podepsanou dohodu o mlčenlivosti a ochraně osobních a jiných citlivých údajů, se kterými přichází při práci do kontaktu.

3.5.2.3. Bezpečná evidence přístupů do nemocnic

Evidence přístupů do nemocnic je popsána v části 2.2.

3.5.2.4. Oddělení přístupů, řízení rolí

Zpracování dat, obsahujících osobní údaje pacientů, probíhá v databázi, která je přístupná pouze pod uživatelským účtem administrátora DB (obvykle root). Zodpovědností pověřeného pracovníka nemocnice je zpřístupnění vstupních dat a jejich zpracování do podoby de-identifikovaných záznamů, které jsou již v oddělené části databáze, přístupné členům I-COP týmu. S uživatelským účtem icop_admin, který mají členové I-COP týmu k dispozici, není možné se k žádným datům s osobními údaji dostat.

3.5.2.5. Mazání a šifrování osobních dat v době, kdy nejsou třeba

Všechna data obsahující citlivé informace jsou uložena v databázi pouze po dobu nezbytně nutnou pro provedení požadovaných funkcí.
Na začátku procesu zpracování primárních dat (K-dávky, preskripce, seznam pacientů s lokalitou bydliště, atd.) se rozbalí archív převodníku čísel pojištěnců a načte do DB. Rozbalený soubor se okamžitě smaže bezpečným způsobem pomocí programu SDelete. Při procesu importu nových nemocničních dat jsou do převodníku v DB přidáni noví pacienti. Po skončení importu se soubor archívu převodníku zálohuje (přejmenuje podle aktuálního data a přesune do archívu). Následně se z DB exportuje aktualizovaný převodník do souboru, který je následně zabalen jako nový šifrovaný archív převodníku. Vstupní soubor převodníku i tabulka z databáze jsou následně bezpečně smazány.

3.5.2.6. Minimalizace práce s osobními údaji

S daty, která obsahují osobní údaje pacientů (zejména číslo pojištěnce) se manipuluje co nejméně je to možné. Primární data jsou pouze základně zpracována (načtena jejich struktura a obsah) a uložena do DB. Ihned poté jsou čísla pojištěnců zašifrována na bezvýznamový identifikátor a tímto novým identifikátorem jsou původní čísla pojištěnců nahrazena. Již jen nové identifikátory jsou pak spolu s vlastními daty nahrány do oddělené části DB, kde probíhá další zpracování. Veškerá další práce již probíhá nad de-identifikovanými daty, bez osobních údajů – tyto jsou nevratně smazány.

3.5.2.7. Vyřazení dat, která mohou obsahovat osobni údaje, z dalšího zpracování

Záznamy, které mohou obsahovat osobní údaje (jiné než číslo pojištěnce, které se bezpečně šifruje), se z dalšího zpracování vyřazují. Jedná se primárně o zpracování seznamu pacientů s lokalitou bydliště, kde je možné očekávat výskyt osobních údajů (jméno a příjmení, přesná adresa apod.). Do de-identifikované části DB se tyto údaje nepřenáší.

Při zpracování administrativních dat nemocnice (PZP) se každý doklad ověřuje přes slovník (seznam známých typů dokladů). Pokud je daný doklad ve slovníku nalezen, je označen pro další zpracování. V další části se pak zpracovávají jen doklady s tímto příznakem (jenom rozpoznané typy dokladů). Ostatní doklady jsou smazány. Tímto se zabezpečí ochrana neznámých dokladů, které by mohly obsahovat osobní údaje.

3.5.2.8. Výhradní použití de-identifikovaných dat pro analýzy

I-COP agent pro přesun dat mezi nemocnicí a databází pro analýzy využívá DB účet icop_admin. Tento účet je omezen přístupem jenom do anonymizované DB. Z tohoto důvodu nehrozí únik citlivých osobních údajů mimo nemocnici, natož pak jejich použití při analýzách.

>>> Zpět na 1. část