# Przesyłanie recepty i weryfikacja przez farmaceutę w PrestaShop: dokumentacja

> Zasada działania Ty decydujesz, które produkty są objęte regułami. Gdy klient doda taki produkt do koszyka, pod koszykiem pojawia się blok „Recepta i zatwierdzenie farmaceuty”. Klient przesyła w nim receptę…

- Strona: <https://www.datafirefly.com/pl/documentation/prescription-upload-pharmacist-validation-prestashop/>
- Język: pl
- Zaktualizowano: 2026-10-07
- Inne języki: [fr](https://www.datafirefly.com/documentation/prescription-upload-pharmacist-validation-prestashop/index.md), [en](https://www.datafirefly.com/en/documentation/prescription-upload-pharmacist-validation-prestashop/index.md), [es](https://www.datafirefly.com/es/documentation/prescription-upload-pharmacist-validation-prestashop/index.md), [de](https://www.datafirefly.com/de/documentation/prescription-upload-pharmacist-validation-prestashop/index.md), [it](https://www.datafirefly.com/it/documentation/prescription-upload-pharmacist-validation-prestashop/index.md), [nl](https://www.datafirefly.com/nl/documentation/prescription-upload-pharmacist-validation-prestashop/index.md), [pt](https://www.datafirefly.com/pt/documentation/prescription-upload-pharmacist-validation-prestashop/index.md)
- Indeks: <https://www.datafirefly.com/pl/documentation/llms.txt>

## Zasada działania

Ty decydujesz, które produkty są objęte regułami. Gdy klient doda taki produkt do koszyka, pod koszykiem pojawia się blok „Recepta i zatwierdzenie farmaceuty”. Klient przesyła w nim receptę i składa zamówienie. Zamówienie pozostaje w statusie _Oczekuje na zatwierdzenie farmaceuty_, dopóki farmaceuta nie podejmie decyzji w panelu administracyjnym. Dokumenty są szyfrowane na Twoim serwerze i nigdy nie są udostępniane bezpośrednio przez serwer WWW.

- **Wymagana recepta**: przed złożeniem zamówienia trzeba przesłać dokument.
- **Weryfikacja farmaceuty**: dokument nie jest wymagany, ale zamówienie jest sprawdzane przed wysyłką.
- **Sprzedaż bez ograniczeń**: bez zatwierdzania, obowiązuje tylko maksymalna ilość na zamówienie. Dla produktu ten tryb wyłącza go też z reguły jego kategorii.

Sprzedaż leków na receptę przez internet jest niedozwolona w kilku krajach, m.in. w Polsce i we Francji, a recepta zawiera dane o zdrowiu. Moduł dostarcza narzędzia techniczne; zezwolenie na sprzedaż i hosting pozostają w Twojej gestii.

## Wymagania

- PrestaShop od 8.0 do 9.x.
- Rozszerzenie PHP `openssl` (sprawdzane przy instalacji).
- Zadanie cron uruchamiane co godzinę, zalecane dla przypomnień, alertów i usuwania plików.
- HTTPS w sklepie.

## Instalacja

1. W _Moduły > Menedżer modułów_ kliknij _Prześlij moduł_ i wyślij plik ZIP.
2. Moduł tworzy status zamówienia _Oczekuje na zatwierdzenie farmaceuty_, szyfrowany folder przechowywania i dwa menu: _Zamówienia > Recepty_ oraz _Zamówienia > Reguły recept_.
3. Otwórz konfigurację modułu: panel _Status_ pokazuje, czy folder przechowywania jest gotowy i chroniony przed bezpośrednim dostępem.

## Wskazanie produktów objętych regułami

Menu _Zamówienia > Reguły recept_, przycisk _Dodaj regułę_:

- **Dotyczy**: produktu (wyszukiwanie po nazwie, indeksie, EAN lub ID) albo kategorii wraz z podkategoriami.
- **Tryb**: wymagana recepta, weryfikacja farmaceuty lub sprzedaż bez ograniczeń.
- **Maksymalna ilość na zamówienie**: na produkt, łącznie dla wszystkich wariantów. Powyżej przejście do kasy jest zablokowane. 0 oznacza brak limitu.

Reguła produktu zawsze ma pierwszeństwo przed regułami kategorii. Jeśli produkt należy do kilku kategorii objętych regułami, „Wymagana recepta” ma pierwszeństwo przed „Weryfikacją farmaceuty”, a obowiązuje najmniejsza maksymalna ilość.

Regułę produktu można też ustawić w zakładce _Moduły_ na stronie produktu. Zapisuje się od razu, bez zapisywania produktu.

## Ustawienia modułu

### Proces zatwierdzania

- **Po złożeniu zamówienia** (domyślnie): klient płaci, a zamówienie czeka na zatwierdzenie. Odmowa oznacza zwrot pieniędzy klientowi ze strony zamówienia.
- **Przed płatnością**: zalogowany klient wysyła koszyk do farmaceuty i może zapłacić dopiero po zatwierdzeniu. Jeśli koszyk zmieni się później, trzeba go wysłać ponownie.

### Dokumenty

- **Akceptowane typy**: PDF, JPEG, PNG, WebP. Rzeczywisty typ jest sprawdzany po sygnaturze pliku, a pliki PDF z JavaScriptem, akcjami uruchamiania lub załącznikami są odrzucane.
- **Maksymalny rozmiar pliku** (domyślnie 8 MB) i **maksymalna liczba plików na wniosek** (domyślnie 5).
- **Ponowne użycie zatwierdzonych recept**: zalogowany klient może dołączyć zatwierdzoną receptę do nowego koszyka do daty jej ważności.
- **Domyślna ważność** (90 dni): wstępnie wypełniana w formularzu zatwierdzenia.
- **Treść zgody**, dla każdego języka: klient musi zaznaczyć pole przed każdym przesłaniem.

### Kwestionariusz zdrowotny

Po włączeniu pyta o pacjenta (klient lub inna osoba), wiek, wagę, wzrost, płeć, ciążę lub karmienie piersią, alergie, bieżące leczenie i historię choroby. Przejście do kasy czeka na odpowiedzi. Są szyfrowane i wypełniane automatycznie przy kolejnym zamówieniu zalogowanego klienta.

### Przypomnienia i terminy

- **Przypomnienie dla klienta** (2 dni): e-mail, gdy klient nie odpowiedział na prośbę o informacje.
- **Automatyczne anulowanie** (10 dni): wniosek jest odrzucany z powodem „Brak odpowiedzi klienta”.
- **Alert dla farmaceuty** (24 godziny): podsumowanie wniosków i wiadomości klientów oczekujących dłużej niż ten czas.

0 wyłącza daną funkcję.

### Powiadomienia i statusy

- **Adresy e-mail powiadomień dla farmaceuty**: jeden lub kilka adresów oddzielonych przecinkami.
- **Status odrzuconych zamówień**: domyślnie Anulowane, co przywraca stany magazynowe.
- **Zapisane odpowiedzi**: jedna w wierszu i dla każdego języka, wstawiane jednym kliknięciem do wiadomości lub decyzji.

### Przechowywanie

- **Folder przechowywania**: domyślnie `var/dfprescription/`. Zalecana jest ścieżka bezwzględna poza katalogiem głównym serwera WWW. Po zapisaniu dokumentów nie można jej już zmienić.
- **Przechowywanie dokumentów** (365 dni): pliki są usuwane po tym czasie, z wyjątkiem wniosków w toku i wciąż ważnych recept. Metadane i dziennik audytu są zachowywane.

## Ścieżka klienta

1. Karta produktu pokazuje oznaczenie: wymagana recepta, weryfikacja farmaceuty lub limit na zamówienie.
2. W koszyku klient przeciąga dokumenty lub robi zdjęcie telefonem, zaznacza zgodę, w razie potrzeby wypełnia kwestionariusz i może zostawić notatkę dla farmaceuty.
3. Dopóki czegoś brakuje, linki do zamówienia są wyłączone, a bezpośrednie otwarcie strony zamówienia przekierowuje do koszyka z komunikatem.
4. Po złożeniu zamówienia strona potwierdzenia, szczegóły zamówienia i strona _Moje recepty_ na koncie pokazują status wniosku. Goście śledzą wniosek przez prywatny link wysłany e-mailem.

## Obsługa wniosku

Menu _Zamówienia > Recepty_. Lista pokazuje status, liczbę dokumentów i nieprzeczytane wiadomości, z licznikami u góry strony. Karta wniosku zawiera:

- dokumenty w podglądzie (osadzony PDF, obrazy z obracaniem i powiększaniem), z otwieraniem i pobieraniem;
- klienta, zamówienie lub zamówienia, produkty i ich reguły;
- odpowiedzi z kwestionariusza zdrowotnego z wyróżnionymi punktami ryzyka;
- wątek wiadomości z klientem;
- formularz decyzji i dziennik audytu.

### Podejmowanie decyzji

- **Zatwierdź**: ustaw datę ważności recepty. Zamówienie wraca do statusu sprzed wstrzymania, na przykład Płatność przyjęta.
- **Poproś o informacje**: wiadomość jest wymagana. Klient dostaje e-mail i odpowiada na koncie lub przez prywatny link.
- **Odrzuć**: wybierz powód. Zamówienie przechodzi do statusu ustawionego dla odmów.

Imię i nazwisko farmaceuty oraz jego numer zawodowy są zapisywane z każdą decyzją i zapamiętywane dla pracownika. Do każdego wniosku można dodać notatkę wewnętrzną, niewidoczną dla klienta.

Jeśli moduł płatności zmieni status wstrzymanego zamówienia (na przykład przez webhook płatności), moduł zapamiętuje ten status i ponownie wstrzymuje zamówienie. Ręczna zmiana wykonana przez pracownika jest respektowana i zapisywana w dzienniku.

## Wiadomości klient ↔ farmaceuta

Każdy wniosek ma własny wątek wiadomości, szyfrowany jak dokumenty. Farmaceuta odpowiada na karcie wniosku, w razie potrzeby wstawiając zapisaną odpowiedź. Klient dostaje treść e-mailem i odpowiada na stronie _Moje recepty_. Farmaceuta dostaje e-mail bez treści wiadomości, tylko z linkiem do wniosku. Klient może wysłać najwyżej 20 wiadomości dziennie na wniosek.

## Kod QR e-recept

Po otwarciu wniosku kod QR każdego dokumentu jest odczytywany w Twojej przeglądarce, z obrazów i z pierwszych 3 stron plików PDF. Blok _Kod QR e-recepty_ pokazuje:

- wykryty identyfikator i pełną zawartość kodu QR;
- alert, jeśli ta sama recepta została już przesłana w innym wniosku w sklepie, z dopiskiem „inny klient”, gdy dotyczy;
- pole do ręcznego wpisania numeru, gdy kodu QR nie da się odczytać, oraz przycisk ponownego odczytu.

Tylko certyfikowane oprogramowanie apteczne może odpytywać oficjalne systemy e-recept. Moduł przygotowuje weryfikację i wykrywa ponowne użycie; farmaceuta sprawdza następnie identyfikator w swoim oprogramowaniu.

## Zadanie cykliczne

Konfiguracja modułu pokazuje adres URL crona. Wywołuj go co godzinę:

```
0 * * * * curl -s "https://twoj-sklep.pl/module/dfprescription/cron?key=TWOJ_KLUCZ" >/dev/null
```

Wysyła przypomnienia i alerty, anuluje wnioski bez odpowiedzi i usuwa wygasłe pliki. Bez crona zadania te są wykonywane najwyżej raz na godzinę przy otwarciu strony _Recepty_.

## Bezpieczeństwo i zgodność

- Szyfrowanie AES-256-GCM dokumentów, odpowiedzi z kwestionariusza, wiadomości i zawartości kodów QR. Klucz jest wyprowadzany z sekretu modułu i z `_COOKIE_KEY_` sklepu.
- Dziennik audytu każdego przesłania, wyświetlenia, pobrania, wiadomości i decyzji, z adresem IP.
- Eksport CSV rejestru w _Zamówienia > Recepty_ (przycisk _Eksportuj rejestr_), bez dokumentów i odpowiedzi zdrowotnych.
- Współpraca z oficjalnym modułem RODO: eksport danych klienta obejmuje wnioski, a usunięcie klienta kasuje jego dokumenty i wiadomości.

Przy migracji zachowaj `_COOKIE_KEY_` sklepu i wartość konfiguracji `DFPRESCRIPTION_KEY`. Bez jednej z nich zapisanych dokumentów nie da się już odszyfrować.

## Rozwiązywanie problemów

### Panel Status informuje, że folder jest dostępny z internetu

Pliki pozostają zaszyfrowane, ale nginx ignoruje plik `.htaccess`. Dodaj regułę `deny all` dla folderu lub wybierz folder poza katalogiem głównym serwera WWW.

### Klient nie widzi bloku recepty

Sprawdź, czy reguła obejmuje produkt lub jedną z jego kategorii i czy szablon wyświetla hook `displayShoppingCartFooter` na stronie koszyka.

### Kod QR nie jest odczytywany

Kod QR musi być ostry i w całości widoczny. Użyj _Odczytaj ponownie_ po otrzymaniu lepszego zdjęcia lub wpisz numer recepty ręcznie.

## Odinstalowanie

Odinstalowanie trwale usuwa wszystkie zapisane dokumenty i tabele modułu. Dedykowany status zamówienia zostaje ukryty, ale zachowany dla historii zamówień. Wyeksportuj rejestr przed odinstalowaniem, jeśli musisz zachować ślad.
