# Wdrożenie Baltique OS 2.10.0

## 1. Warunki wejściowe

1. Wyznacz właściciela wdrożenia, administratora systemu, osobę kliniczną,
   farmaceutę/osobę odpowiedzialną za leki i materiały oraz inspektora ochrony danych.
2. Wykonaj pełny backup bazy, kodu, konfiguracji i `storage` poza serwerem.
3. Odtwórz backup na odrębnym środowisku testowym i potwierdź możliwość rollbacku.
4. Włącz HTTPS, bezpieczne ciasteczka sesji, silne hasła/MFA, ograniczenie dostępu
   administracyjnego oraz monitoring logów i pojemności dysku.

## 2. Wybór paczki

- Nowa instalacja lub pełna wymiana kodu: użyj paczki `FULL_CODE_NO_DATA`. Nie zawiera
  lokalnego `app/config.php`, danych pacjentów ani `storage`.
- Aktualizacja istniejącej instalacji: użyj paczki `OVERLAY`, zachowując istniejące
  `app/config.php` i `storage`. Następnie wykonaj listę z
  `DELETE_RETIRED_MAP_MODULES_2_10_0.txt`.

## 3. Aktualizacja

1. Wgraj paczkę na staging i wyczyść cache PHP OPcache oraz cache hostingu/CDN.
2. Otwórz `/upgrade_2_10_0.php` jako administrator.
3. Potwierdź backup i staging, uruchom aktualizację jeden raz, a następnie drugi raz
   jako test idempotencji.
4. Otwórz `/system_runtime_preflight.php`, `/system_clinical_catalog_2100.php` i
   `/system_hospital_command_center.php`.
5. Jeśli kontrola Hallera nie pokazuje 2 gabinetów, 1 sali operacyjnej, 2 pokoi
   pozabiegowych i 4 łóżek, nie przechodź do produkcji.

## 4. Minimalny test akceptacyjny

### Pacjent

- rezerwacja i brak podwójnego terminu;
- identyfikacja pacjenta i kontrola duplikatu;
- formularz intake, załączniki, zgody, wersjonowanie i odwołanie zgody;
- portal pacjenta wyłącznie z poprawnym, ważnym linkiem;
- wiadomość zwrotna, preferencje komunikacji i wypisanie marketingowe;
- płatność testowa każdego dopuszczonego operatora oraz obsługa błędnej odpowiedzi;
- instrukcje przed- i pooperacyjne oraz właściwa ścieżka alarmowa.

### Recepcja i koordynacja

- utworzenie/zmiana/odwołanie wizyty, lista oczekujących i przypisanie koordynatora;
- zmiana lokalizacji oraz piętra bez zawieszenia interfejsu;
- dwa gabinety konsultacyjne w Sopocie i dwa na Hallera;
- widoczność danych ograniczona do roli i lokalizacji.

### Zespół kliniczny

- kwalifikacja, alergie, rozpoznania, leki własne pacjenta i kompletność dokumentów;
- ocena anestezjologiczna oraz ręczne decyzje GO/HOLD/NO-GO;
- checklista okołooperacyjna, przypisanie sali i zespołu;
- PACU, parametry, ból, nudności, powikłania, kryteria wypisu;
- przydział/zwolnienie łóżka z audytem i przyczyną;
- zalecenia, recepty i wypis zatwierdzone przez uprawnioną osobę.

### Apteka, magazyn i blok

- produkt, producent, kod/GTIN/UDI, opakowanie i jednostka;
- partia, termin ważności, lokalizacja, FEFO, rezerwacja do przypadku i rozchód;
- implant/etykieta, traceability i procedura recall;
- dostawca z umową i weryfikacją RHF, gdy dotyczy;
- brak możliwości zamówienia pozycji `pending_local_approval`;
- kompletność zestawu operacyjnego i kontrola braków bez automatycznej decyzji klinicznej.

### Administracja i bezpieczeństwo

- test każdej roli oraz próba niedozwolonego dostępu do cudzej lokalizacji/pacjenta;
- CSRF, wygasanie sesji, blokada konta, log audytu i eksport zdarzeń;
- backup, odtworzenie, alert pełnego dysku, niedostępność poczty/SMS i awaria bazy;
- DPIA/RODO, umowy powierzenia, retencja, procedura naruszenia i ciągłość działania.

## 5. Katalog leków i wyrobów

Nie zatwierdzaj masowo danych demonstracyjnych. Pobierz aktualny wykaz leków z URPL,
zweryfikuj hurtownie w RHF, a katalogi producentów zmapuj po kodzie producenta i
GTIN/UDI. Użyj szablonu `app/data/clinical_catalog_import_template_2100.csv` i importu
w Katalogu klinicznym. Każdy wiersz po imporcie wymaga lokalnego przeglądu.

## 6. Go-live i rollback

Przejście na produkcję wymaga podpisanego UAT, zerowej liczby krytycznych błędów,
udokumentowanego odtworzenia backupu i zgody właścicieli klinicznych. Po wdrożeniu
prowadź wzmożony monitoring przez co najmniej jedną pełną zmianę kliniczną. W razie
błędu zatrzymaj nowe wpisy, zachowaj logi, przywróć kod i bazę z tego samego punktu
czasowego oraz przejdź na zatwierdzoną procedurę pracy awaryjnej.
