Skip to content

Funkcjonalność umożliwiająca wykonanie testu laboratoryjnego COVID-19 dla osób z wysokim ryzykiem kontaktu z osobą chorą z Exposure Notification oraz występującymi objawami COVID-19 #244

@pkleczko

Description

@pkleczko

Wkrótce aplikacja dołączy do kanałów umożliwiających zapisanie się na test medyczny na COVID-19. Nowa funkcjonalność została zapowiedziana w tym tygodniu przed departament cyfryzacji KPRM. Zapis jest możliwy kiedy moduł analizy kontaktów Exposure Notification [EN] wskaże wysokie ryzyko kontaktu z COVID-19 oraz Test Oceny Ryzyka wskazuje na występowanie objawów COVID-19.

legenda:
EN - Exposure Notifications, moduł Google & Apple
WGR - Wysoka Grupa Ryzyka (Stan nadawany przez EN i/lub TOR)
TOR - Test Oceny Ryzyka (funkcjonalność testu samooceny ryzyka objawów COVID-19 na podstawie ankiety MZ/GIS)
PIN - służy do wysyłki kluczy [TEK]
PINT (PIN testu) - służy do autoryzacji w trakcie procesu zapisu na test medyczny na COVID-19
TEK - Temporary Exposure Keys (anonimowe klucze, którymi przedstawiają się aplikacje)
MZ - Ministerstwo Zdrowia
GIS - Generalny Inspektorat Sanitarny
Cloud Backend - umowny zestaw funkcji chmurowych i usług składowania danych stanowiący zaplecze aplikacji
SafetyNet - weryfikacja autentyczności aplikacji w ekosystemie Google
DeviceCheck - weryfikacja autentyczności aplikacji w ekosystemie Apple

Jak wygląda proces zapisu na test?

I CZĘŚĆ - która odbywa się w aplikacji STOP COVID - ProteGO Safe

  1. Funkcjonalność jest dostępna tylko wtedy kiedy moduł analizy kontaktów Exposure Notification wskazuje wysokie ryzyko kontaktu z COVID-19.
  2. Po uzyskaniu Wysokiej Grupy Ryzyka [WGR] z EN użytkownik będzie proszony o wypełnienie Testu Oceny Ryzyka [TOR] (lub regularne wypełnianie do momentu utrzymywania się WGR z EN - jeżeli wynik TOR nie wskazuje na występowanie objawów). Jeżeli Test Oceny Ryzyka wskazuje na objawy charakterystyczne dla COVID-19, użytkownik widzi na ekranie głównym informację o możliwości zapisu na test (“Odbierz test na COVID-19”). Po kliknięciu w przycisk z informacją o możliwości zapisu na test użytkownik przechodzi do procesu zapisu na test.
    [ Jeśli użytkownik nie wypełnił Testu Oceny Ryzyka na ekranie głównym pojawi mu się sugestia jego wypełnienia (“Sprawdź swoje objawy i zobacz, czy kwalifikujesz się do testu na COVID-19”). Użytkownik może przejść stąd bezpośrednio do Testu Oceny Ryzyka. Jeśli na podstawie ankiety, analiza wykaże występowanie objawów COVID-19, na podsumowaniu Testu będzie dostępny przycisk prowadzący do procesu zapisu na test. ]
  3. W ramach procesu weryfikacji użytkownik musi zadzwonić na infolinię (Centrum Kontaktu) (222 500 115), przekazać konsultantowi informację o tym, że aplikacja pozwala mu na zapis i poprosić o wygenerowanie PIN-u do potwierdzający spełnienie warunków uprawniających do wykonania testu [PIN].
  4. Konsultant generuje w systemie nowy, losowy, jednorazowy i tymczasowy (ważny 30 minut) kod PINT, który przez telefon przekazuje użytkownikowi.
  5. Użytkownik wprowadza PINT w aplikacji, który po zatwierdzeniu przesyłany jest na serwer systemu.
  6. Po otrzymaniu informacji w aplikacji, że PINT został poprawnie przesłany, użytkownik informuje konsultanta o tym fakcie. Od tego momentu jego aplikacja nie będzie pozwalała na ponowne wprowadzenie PINT (aż do wygaśnięcia wysokiego ryzyka kontaktu z modułu EN i jego ponownego wystąpienia).

II CZĘŚĆ - która odbywa się w ramach istniejących procedur GIS/MZ (poza aplikacją, niezależnie od niej).

  1. Konsultant sprawdza w systemie czy przekazany kod PINT został oznaczony jako zweryfikowany (przesłany z aplikacji wskazującej na stan uprawniający do zapisu na test).
  2. Jeśli konsultant widzi, że kod został zweryfikowany, kontynuuje proces zapisu na test, który odbywa się już poza aplikacją.
  3. Po zapisaniu użytkownika na test, konsultant oznacza w systemie, że ten użytkownik (identyfikowany anonimowo na podstawie podanego PINT) został rzeczywiście zapisany na test.

III CZĘŚĆ - która odbywa się w aplikacji STOP COVID - ProteGO Safe

  1. Użytkownik po przesłaniu PIN-u Testu, widzi na ekranie głównym informacje o statusie zapisu na test. Dopóki konsultant nie oznaczy go jako finalnie zapisanego, użytkownik widzi informację, że jest zweryfikowany i powinien kontynuować proces z konsultantem (na wypadek gdyby rozmowa została przerwana a proces niezakończony). Jeśli użytkownik został zapisany, widzi stosowną informację oraz dodatkowe wyjaśnienie, że od tej pory aplikacja nie ma możliwości sprawdzenia wyniku testu ( w praktyce nie istnieje żadne połączenie) , więc również w przypadku otrzymania negatywnego wyniku (użytkownik laboratoryjnie potwierdził, że nie ma COVID-19) aplikacja może przez kilka dni nadal wyświetlać komunikat wysokiego zagrożenia (dopóki w aplikacji nie wygaśnie stan wysokiego ryzyka ze względu na wykryty kontakt przez moduł EN).

Szczegóły techniczne:

  1. Aplikacja w momencie wprowadzenia kodu PINT generuje losowy ciąg znaków jako unikalny identyfikator (GUID) wysokiego stanu ryzyka aplikacji związany z „subskrypcją” na test laboratoryjny.
    GUID jest usuwany z aplikacji jak tylko ryzyko związane z kontaktem z osobą zarażoną COVID-19 z modułu EN obniży się z poziomu wysokiego.
  2. Po wygenerowaniu identyfikatora jest on razem z kodem PINT przesyłany do Cloud Backend. Do zapytania dodawany jest token pobrany z serwisu SafetyNet (Android) lub DeviceCheck (Apple), w celu weryfikacji instancji aplikacji (certyfikatu jakim jest podpisana), również informacja o tym czy jest to aplikacja Android czy iOS. Przykładowe zapytanie wygląda jak niżej:
curl --location --request POST 'https://mb-dev.safesafe.app/createSubscription' \
--header 'Content-Type: application/json' \
--header 'Safety-Token: token_safetynet_or_device_check'
--header 'User-Agent: android_or_ios'
--data-raw '{
	"code" : "MPCPRY",
	"guid" : "23c713e3-2790-4f52-9e19-106a218ff779"
}'

W odpowiedzi Cloud Backend zwraca token JWT do przyszłej autoryzacji zapytań o status subskrypcji.

  1. Cloud Backend zachowuje subskrypcję na serwerze.
  2. Konsultant Centrum Kontaktu może odpytać Cloud Backend (po wygenerowanym kodzie PINT) czy istnieje subskrypcja z potwierdzonym kodem. Jeśli tak się dzieje kontynuowany jest proces zapisu na test.
  3. Po zakończeniu procesu konsultant przesyła do Cloud Backend żądanie oznaczenia subskrypcji jako zapisany na test.
  4. Aplikacja jeśli posiada subskrypcję, która jest w stanie bez potwierdzenia zapisu na test, odpytuje Cloud Backend przy każdym wejściu na dashboard (nie częściej niż raz na 60 sekund) o daną subskrypcję. Zapytanie wygląda jak niżej:
curl --location --request POST 'https://mb-dev.safesafe.app/getSubscription' \
--header 'Content-Type: application/json' \
--header 'Safety-Token: token_safetynet_or_device_check'
--header 'User-Agent: android_or_ios'
--data-raw '{
	"guid" : "23c713e3-2790-4f52-9e19-106a218ff779"
}'
  1. Jeśli stan zwróconej subskrypcji zmienia się na zapisany na test aplikacja oznacza to i nigdy więcej nie odpytuje o daną subskrypcję (GUID).
  2. Po wygaśnięciu ryzyka z EN aplikacja usuwa wszelkie informacje o subskrypcji. Przy wystąpieniu wysokiego ryzyka po raz kolejny, proces przebiega od nowa w ten sam sposób.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions