# Baltique OS 2.10.1 — wdrożenie poprawki zbiorczej

## Cel

Ta wersja naprawia niespójność, w której pliki aplikacji były nowsze niż `app_settings.core_version`, uzupełnia brakującą warstwę 2.8.0, przywraca Szpital na żywo, porządkuje Lokalizację danych i dodaje wznawialny import oficjalnych rejestrów leków oraz hurtowni.

## Przed wdrożeniem

1. Wykonaj pełną kopię bazy danych, plików aplikacji i katalogu `storage` poza hostingiem.
2. Najpierw wykonaj całą procedurę na kopii testowej.
3. Zachowaj własne `app/config.php`, klucze prywatne, sekrety integracji i katalog `storage`.
4. Zaplanuj okno serwisowe. Import RPL tworzy około 69 tys. wariantów opakowań i może potrwać kilka–kilkanaście minut zależnie od bazy.

## Instalacja zalecana

1. Rozpakuj `Baltique_OS_2_10_1_REV6_CUMULATIVE_HOTFIX_OVERLAY.zip`.
2. Wgraj zawartość katalogu `Baltique_OS_2_10_1_OVERLAY` do katalogu aplikacji, zachowując strukturę folderów i nadpisując starsze pliki.
3. Wyczyść OPcache/PHP cache w panelu hostingu albo zrestartuj usługę PHP-FPM.
4. Zaloguj się jako administrator i otwórz `/upgrade_2_10_1.php`.
5. Zaznacz oba potwierdzenia i uruchom aktualizację.
6. Aktualizacja rdzenia, schematu i pomieszczeń zakończy się niezależnie od dużego importu. Instalator nie uruchamia już ciągłej pętli obciążającej hosting.
7. Otwórz `/system_official_registry_updates_2101.php`. Najpierw wybierz „Przetwórz jedną porcję”. Jeżeli hosting odpowiada prawidłowo, możesz włączyć „Tryb spokojny”; między porcjami jest 20 sekund przerwy. Kartę można zamknąć i wrócić później bez utraty postępu.
8. Opcjonalnie skonfiguruj na hostingu `cron/official_registry_import_2101.php` nie częściej niż raz na 5 minut. Każde uruchomienie wykonuje tylko jedną małą porcję; nie uruchamiaj równolegle workera i trybu spokojnego.
9. Po osiągnięciu 100% dla bieżących RPL i RHF otwórz `/system_runtime_preflight.php`, wykonaj nowy skan i sprawdź, czy wersja bazy to co najmniej 2.10.1.

### Gdy core 2.10.1 jest już zainstalowany, a import utknął

Nie uruchamiaj ponownie całej aktualizacji tylko po to, aby wznowić RPL/RHF. Wgraj overlay REV6, wyczyść OPcache/PHP cache, zamknij starą kartę instalatora i otwórz `/system_official_registry_updates_2101.php`. Dotychczasowy licznik, przesunięcie pliku i przyjęte rekordy pozostają w bazie. Zacznij od jednego kliknięcia „Przetwórz jedną porcję”; dopiero po prawidłowej odpowiedzi hostingu użyj trybu spokojnego.

## Późniejsze wydania RPL i RHF

1. Pobierz pełny plik CSV bezpośrednio z oficjalnej strony w domenie `gov.pl`.
2. Przy pierwszym użyciu wybierz „Włącz późniejsze aktualizacje plików”. Jest to lekka, jednorazowa zmiana struktury, niezależna od pełnego instalatora.
3. W centrum aktualizacji wybierz RPL albo RHF, wpisz datę danych i wklej adres strony źródłowej.
4. Wskaż plik. Podczas samego przesyłania pozostaw kartę otwartą; system wysyła plik częściami po 512 KB, sprawdza nagłówek i zapisuje SHA-256 poza katalogiem publicznym.
5. Po komunikacie „Plik sprawdzony i zarejestrowany” możesz zamknąć kartę. Importuj jedną porcją, trybem spokojnym albo przez worker hostingu.
6. Po 100% wykonaj nowy Runtime Preflight i lokalną kontrolę farmaceutyczną. Nowszy rejestr nie zatwierdza automatycznie formularza lekowego ani relacji handlowych.

## Kontrole obowiązkowe

- Szpital na żywo otwiera się bez `Call to undefined function balt260_in()`.
- Zmiana Lokalizacji danych nie pokazuje rekordów zarchiwizowanych ani powtórzonych identycznych nazw.
- Po zmianie lokalizacji lista pięter i widok operacyjny dotyczą wybranego miejsca.
- Patient AI ma `external_enabled=0`; przy braku zatwierdzonej wiedzy lokalne automatyczne odpowiedzi są również wyłączone.
- Wyniki Runtime Preflight są pokazane w ograniczonym, przewijanym oknie z rozwijanymi grupami; przycisk czyszczenia usuwa starszą historię, pozostawiając najnowszy wynik.
- Katalog kliniczny dzieli rekordy na grupy funkcjonalne, strony 100/200/500 i pierwszy znak; administrator może dodawać, edytować i bezpiecznie archiwizować produkty oraz dostawców.
- Rejestr leków jest wyłącznie referencyjny: automatyczne przepisywanie i zamawianie pozostają wyłączone.
- Hurtownia z RHF nie jest dostawcą kontraktowym, dopóki personel nie zatwierdzi umowy, adresu zamówień i warunków handlowych.
- Otwórz `/system_master_data_duplicate_review_2101.php`; sprawdź, czy personel widzi wyłącznie kategorie właściwe dla swojej roli i czy niejednoznaczne karty pacjentów/personelu nie są scalane automatycznie.
- Otwórz `/system_hospital_assortment_2101.php`; wybierz produkt testowy, zatwierdź go lokalnie i ustaw próg dla testowej lokalizacji najpierw w trybie „Tylko alert”.
- Sprawdź, czy ręczna kontrola progu tworzy pojedynczy alert, a tryb „Alert + projekt zamówienia” tworzy wyłącznie projekt wymagający zatwierdzenia.
- Dopiero po tych testach włącz kontrolę automatyczną i skonfiguruj na hostingu uruchamianie `cron/hospital_reorder_cron_ovh.php` raz na godzinę.

## Wycofanie

W razie błędu przerwij import, przywróć komplet plików i bazę z tej samej kopii czasowej. Nie cofaj wyłącznie `core_version` i nie mieszaj bazy po aktualizacji z plikami 2.7.x.

## Uwaga produkcyjna

Paczka jest kandydatem wdrożeniowym, ale przed realną pracą z pacjentem nadal wymaga lokalnych testów akceptacyjnych, przeglądu bezpieczeństwa i prywatności, walidacji kopii/odtwarzania oraz zatwierdzenia procedur klinicznych przez uprawnione osoby.
