Podprocesorzy
Heltio korzysta z poniższych podmiotów trzecich w celu świadczenia usługi. Każdy z nich jest związany pisemną umową powierzenia (DPA) lub — w stosownych przypadkach — Standardowymi Klauzulami Umownymi UE z 2021 r. O istotnych zmianach informujemy z 30-dniowym wyprzedzeniem za pośrednictwem banera w aplikacji i wiadomości e-mail — szczegóły w pkt 6 naszej umowy powierzenia.
| Dostawca | Zakres usługi | Lokalizacja | Powierzane dane | Umowa powierzenia | Okres przechowywania |
|---|---|---|---|---|---|
Supabase Supabase Inc. (Delaware) — dane hostowane we Frankfurcie (Supabase EU) | Baza danych Postgres, Storage (S3), Realtime | Frankfurt (eu-central-1) | PII, HEALTH | DPA | Do offboardingu placówki + 30 dni okresu przejściowego |
Clerk Clerk Inc. (Delaware) Działanie: zablokowanie regionu UE w panelu Clerka — zadanie podrzędne W1.x. | Uwierzytelnianie użytkowników (login, MFA, sesje) | Region UE (do potwierdzenia przed launchem) | PII | DPA | Przez okres istnienia konta |
PowerSync PowerSync Pty Ltd | Synchronizacja offline (mobile) — podzbiór danych pacjentów / wizyt | Region UE | PII, HEALTH | DPA | Mirror źródłowej bazy |
MailerSend MailerSend (Stagetimer s.r.o.) | E-mail transakcyjny + marketing po zgodzie | Region UE | PII | DPA | 90 dni metadane / 30 dni treść |
SMSAPI LINK Mobility Poland sp. z o.o. | SMS transakcyjny + marketing po zgodzie | Polska | PII | DPA | 30 dni logi dostarczenia |
Przelewy24 Przelewy24 sp. z o.o. (PayPro S.A.) pl. Władysława Andersa 3, 17. piętro, 61-894 Poznań, Polska | Płatności pacjent → klinika (marketplace) + rozliczenia subskrypcji Heltio (SaaS) | Polska | PII, FINANCIAL | DPA | 7 lat (księgowość + AML) |
Better Stack Better Stack s.r.o. | Monitoring uptime, status page, incident management | Region UE | OPERATIONAL | DPA | 30 dni logi |
Sentry Functional Software Inc. — region UE Onboarding w fali W3.2 — wymaga włączenia regionu UE. | Monitoring błędów (po anonimizacji w `beforeSend`) | Region UE | NONE | DPA | 90 dni |
Centrum e-Zdrowia (CeZ) — P1 Centrum e-Zdrowia (administrator publiczny) CeZ jest odrębnym administratorem — addendum w docs/compliance/p1/. | Zdarzenia Medyczne, IKP, e-recepta | Polska | PII, HEALTH | — | Zgodnie z ustawą o systemie informacji w ochronie zdrowia |
DeepL DeepL SE (Kolonia) Tłumaczone są wiadomości między pacjentem a placówką medyczną — tekst swobodny, który z natury opisuje dolegliwości. To dane o zdrowiu w rozumieniu art. 9 RODO, nie samo PII; wpis mówił wcześniej wyłącznie „PII” i to była kategoria zaniżona. Region „EU-DE” wynika z planu u dostawcy, a nie z niczego w naszym kodzie — biblioteka wybiera punkt końcowy z prefiksu klucza. Tryb no-storage jest ustawieniem w panelu DeepL, którego aplikacja nie widzi i nie weryfikuje. Do 2026-08-24 ta droga nie miała ŻADNEGO wyłącznika: nie ma jej w allow-liście dostawców, nie przechodzi przez bramę AI, więc globalny `AI_MASTER_ENABLED` jej nie dotyczył. Ma teraz własny wyłącznik `TRANSLATION_ENABLED=false`. Świadomie NIE podpięto jej pod `AI_MASTER_ENABLED` — tłumaczenia to funkcja wdrożona i używana, a tamten wyłącznik jest domyślnie wyłączony, więc podpięcie wyłączyłoby żywą funkcję przy okazji zmiany zgodnościowej. Treść NIE przechodzi redakcji PHI przed wysłaniem, w odróżnieniu od wywołań tekstowych przez bramę. Szczegóły: `packages/shared/src/constants/ai-residency.ts`. | Tłumaczenia wiadomości pacjent ↔ placówka (PL ↔ EN/UK/DE) | Niemcy | PII, HEALTH | DPA | Brak (tryb no-storage) — ustawienie po stronie dostawcy |
Planowane (brak ruchu)
Kierunek już wybrany, ale żaden z tych podmiotów nie otrzymał dotąd żadnych danych. Wpis stoi tutaj, a nie na liście aktywnych, właśnie dlatego.
| Dostawca | Zakres usługi | Lokalizacja | Powierzane dane | Umowa powierzenia | Okres przechowywania |
|---|---|---|---|---|---|
AWS KMS AWS Europe (Sàrl) Do 2026-08-24 ten wpis stał w grupie AKTYWNYCH i to było nieprawdą w stronę dla nas niekorzystną: wymieniał podmiot, któremu rzekomo powierzamy zarządzanie kluczami, a produkt nie używa żadnego KMS. Dowód jest na poziomie zależności, nie komentarza — `apps/api/package.json` zawiera wyłącznie `@aws-sdk/client-s3` i `@aws-sdk/s3-request-presigner`; `@aws-sdk/client-kms` nie istnieje w drzewie. Klucz główny pochodzi ze zmiennej `FIELD_ENCRYPTION_MASTER_KEY` (`services/encryption/master-key-provider.ts`), a `resolveProviderById` obsługuje wyłącznie `providerId === "env"` i rzuca dla wszystkiego innego. Druga ścieżka nazwana „KMS”, czyli P1 (`services/p1/config/kms.ts`), to jawnie opisana atrapa czytająca `P1_KMS_LOCAL_KEY`. Wejście na prawdziwy KMS wymaga rozwiązania ograniczenia z `master-key-provider.ts`: `unwrapDek` jest SYNCHRONICZNY, bo działa w synchronicznym `compute()` rozszerzenia Prismy — czyli potrzebny jest ciepły cache DEK-ów, a nie wywołanie sieciowe na odczyt. To osobny projekt, nie usunięcie rozbieżności. | Zarządzanie kluczem głównym szyfrowania pól (Decision D6) | eu-central-1 (Frankfurt) | NONE | DPA | Nie dotyczy |
Wstrzymane / wyłączone
Wkrótce — testy wewnętrzne. Funkcje AI nie są udostępnione gabinetom: globalny wyłącznik jest domyślnie wyłączony, a żadna procedura nie pozwala placówce włączyć AI samodzielnie. Wpisy poniżej opisują podmioty, regiony i kategorie danych, które będą obowiązywać w chwili włączenia — po testach wewnętrznych i po odrębnym powiadomieniu z art. 28 ust. 2 RODO.
| Dostawca | Zakres usługi | Lokalizacja | Powierzane dane | Umowa powierzenia | Okres przechowywania |
|---|---|---|---|---|---|
Anthropic Anthropic PBC — przy transporcie `vertex`: Google Ireland Ltd (Claude on Vertex AI) Planowane; przed udostępnieniem gabinetom przewidziane są testy wewnętrzne. Poprzednia wersja wpisu mówiła „Anthropic PBC (USA)” i `dataShared: NONE`, a jednocześnie ujawnienie pokazywane gabinetowi mówiło „Anthropic (Dublin, Irlandia)” — dwa różne opisy tej samej rzeczy, z których kod nie realizuje żadnego. Stan faktyczny: `provider-gateway.ts` kieruje tu wszystko poza OCR, a `ANTHROPIC_TRANSPORT` domyślnie wybiera `direct`, gdzie kontrahentem jest Anthropic PBC i żaden region nie jest przypięty; na `vertex` kontrahentem jest Google, nie Anthropic. Poprzednia nota zapowiadała powrót „wyłącznie przez Bedrock UE” — kod zaimplementował Vertex, nie Bedrock, więc nota wskazywała drogę, która nie istnieje. Kategorie danych podniesione z NONE do PII+HEALTH: to jest to, co ta droga poniesie, gdy zostanie włączona. | Model językowy — domyślny dostawca tekstowy bramy AI | Zależny od transportu: `direct` nie przypina regionu; `vertex` przypina przez ANTHROPIC_VERTEX_REGION (UE przy `eu`) | PII, HEALTH | — | Nie dotyczy — brak ruchu |
OpenAI OpenAI LLC Planowane; testy wewnętrzne przed udostępnieniem gabinetom. Poprzednia nota mówiła „Nigdy nie aktywowane. Dopuszczalne tylko przez Azure OpenAI UE” — kod nie ma adaptera Azure; ma adapter OpenAI z opcjonalnym regionalnym `baseURL`. Sam `OPENAI_BASE_URL` nie wystarcza i sam klucz projektu UE nie wystarcza — wymagane są oba. | Model językowy — alternatywny dostawca tekstowy bramy AI | Domyślnie globalny punkt końcowy; rezydencja UE wymaga OPENAI_BASE_URL=https://eu.api.openai.com/v1 ORAZ klucza z projektu UE | PII, HEALTH | — | Nie dotyczy — brak ruchu |
Google Gemini Google — przy transporcie `vertex`: Google Ireland Ltd (Vertex AI) Rejestr w ogóle tego dostawcy nie wymieniał, mimo że adapter jest w twardej allow-liście od fali AI. Planowane; testy wewnętrzne przed udostępnieniem gabinetom. `GEMINI_TRANSPORT` domyślnie `direct`. | Model językowy — alternatywny dostawca tekstowy bramy AI | `direct` (Gemini Developer API) nie przypina regionu; `vertex` przypina przez GOOGLE_VERTEX_LOCATION (UE przy `eu`) | PII, HEALTH | — | Nie dotyczy — brak ruchu |
Google Cloud Speech-to-Text Google Ireland Ltd Rejestr tego dostawcy nie wymieniał. Ta droga niesie SUROWE NAGRANIE WIZYTY i jest jedyną, której ładunku nie da się zredagować przed wysłaniem — nie da się usunąć nazwiska z fali dźwiękowej, zanim się wie, co ta fala mówi. Dlatego kategoria to PII+HEALTH bez zastrzeżeń. Planowane; testy wewnętrzne przed udostępnieniem gabinetom. | Transkrypcja mowy (AI Scribe) — podstawowy dostawca ASR | Region z GOOGLE_STT_LOCATION buduje regionalny punkt końcowy; wartość `global` wybiera domyślny | PII, HEALTH | — | Nie dotyczy — brak ruchu |
OpenAI (transkrypcja) OpenAI LLC Rejestr tego dostawcy nie wymieniał. Jak wyżej: surowe nagranie wizyty, bez możliwości redakcji przed wysłaniem. Planowane; testy wewnętrzne przed udostępnieniem gabinetom. | Transkrypcja mowy (AI Scribe) — zapasowy dostawca ASR | Ten sam OPENAI_BASE_URL co tor tekstowy; domyślnie globalny punkt końcowy | PII, HEALTH | — | Nie dotyczy — brak ruchu |
Google Cloud Vision Google Ireland Ltd Wpis istnieje dla kompletności listy, ale mówi o drodze MARTWEJ: `providers/google-vision.ts` zwraca odrzuconą obietnicę, a `@google-cloud/vision` nie jest zainstalowany. Nic nigdy tędy nie wyszło i dziś wyjść nie może. Ujawnienie pokazywane gabinetowi opisywało tego dostawcę z regionem UE i wersją DPA, co zawyżało zestaw podmiotów, którym powierzamy dane — poprawione 2026-08-24. | OCR dokumentów (fala 2) — ADAPTER NIE JEST ZAIMPLEMENTOWANY | Nie dotyczy — brak wywołania | NONE | — | Nie dotyczy — brak ruchu |
Google Calendar Google Ireland Ltd Domyślnie wyłączone. Włączane per-klinika przy akceptacji ryzyka transferu USA. | Synchronizacja kalendarza | USA / EOG | PII | — | Nie dotyczy |
Procedura zmian
O dodaniu lub zmianie podprocesora informujemy administratorów (placówki) z 30-dniowym wyprzedzeniem. Administrator ma prawo zgłosić sprzeciw zgodnie z naszą umową powierzenia i — jeśli nie uda się ustalić rozsądnej alternatywy — wypowiedzieć umowę bez kar.