# Recept uploaden en goedkeuring door de apotheker in PrestaShop: documentatie

> Werking U bepaalt welke producten gereguleerd zijn. Voegt een klant er een toe aan de winkelwagen, dan verschijnt daaronder het blok „Recept en goedkeuring door apotheker”. Daar uploadt de klant…

- Pagina: <https://www.datafirefly.com/nl/documentation/prescription-upload-pharmacist-validation-prestashop/>
- Taal: nl
- Bijgewerkt op: 2026-10-07
- Andere talen: [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), [pl](https://www.datafirefly.com/pl/documentation/prescription-upload-pharmacist-validation-prestashop/index.md), [pt](https://www.datafirefly.com/pt/documentation/prescription-upload-pharmacist-validation-prestashop/index.md)
- Index: <https://www.datafirefly.com/nl/documentation/llms.txt>

## Werking

U bepaalt welke producten gereguleerd zijn. Voegt een klant er een toe aan de winkelwagen, dan verschijnt daaronder het blok „Recept en goedkeuring door apotheker”. Daar uploadt de klant zijn recept en bestelt. De bestelling blijft in de status _Wacht op goedkeuring apotheker_ tot de apotheker in de backoffice beslist. De documenten worden op uw server versleuteld en nooit rechtstreeks door de webserver geserveerd.

- **Recept verplicht**: vóór het bestellen moet een document worden geüpload.
- **Controle door apotheker**: geen document vereist, maar de bestelling wordt vóór verzending gecontroleerd.
- **Vrije verkoop**: geen goedkeuring, alleen de maximale hoeveelheid per bestelling geldt. Bij een product sluit deze modus het ook uit van de regel van zijn categorie.

Alleen een geregistreerde apotheek mag geneesmiddelen online verkopen, in sommige landen (zoals Frankrijk) is de online verkoop van receptgeneesmiddelen verboden, en een recept bevat gezondheidsgegevens. De module levert de technische middelen; verkoopvergunning en hosting blijven uw verantwoordelijkheid.

## Vereisten

- PrestaShop 8.0 tot 9.x.
- PHP-extensie `openssl` (gecontroleerd bij de installatie).
- Een cronjob elk uur, aanbevolen voor herinneringen, meldingen en opschoning.
- HTTPS op de winkel.

## Installatie

1. Klik in _Modules > Modulebeheer_ op _Een module uploaden_ en verstuur de ZIP.
2. De module maakt de bestelstatus _Wacht op goedkeuring apotheker_, de versleutelde opslagmap en twee menu's aan: _Bestellingen > Recepten_ en _Bestellingen > Receptregels_.
3. Open de moduleconfiguratie: het paneel _Status_ toont of de opslagmap klaar is en beschermd tegen rechtstreekse toegang.

## Gereguleerde producten instellen

Menu _Bestellingen > Receptregels_, knop _Regel toevoegen_:

- **Geldt voor**: een product (zoeken op naam, referentie, EAN of ID) of een categorie met haar subcategorieën.
- **Modus**: recept verplicht, controle door apotheker of vrije verkoop.
- **Maximale hoeveelheid per bestelling**: per product, alle combinaties opgeteld. Daarboven wordt afrekenen geblokkeerd. 0 betekent geen limiet.

Een productregel gaat altijd voor op categorieregels. Behoort een product tot meerdere gereguleerde categorieën, dan gaat „Recept verplicht” voor op „Controle door apotheker” en geldt de kleinste maximale hoeveelheid.

De regel van een product kunt u ook instellen in het tabblad _Modules_ van de productpagina. Ze wordt direct opgeslagen, zonder het product op te slaan.

## Instellingen van de module

### Goedkeuringsproces

- **Na de bestelling** (standaard): de klant betaalt, daarna wacht de bestelling op goedkeuring. Een weigering betekent dat u de klant terugbetaalt via de bestelpagina.
- **Vóór de betaling**: de ingelogde klant stuurt zijn winkelwagen naar de apotheker en kan pas na goedkeuring betalen. Verandert de winkelwagen daarna, dan moet hij opnieuw worden verzonden.

### Documenten

- **Toegestane typen**: PDF, JPEG, PNG, WebP. Het werkelijke type wordt gecontroleerd aan de hand van de bestandshandtekening, en pdf's met JavaScript, startacties of bijlagen worden geweigerd.
- **Maximale bestandsgrootte** (standaard 8 MB) en **maximaal aantal bestanden per aanvraag** (standaard 5).
- **Hergebruik van goedgekeurde recepten**: een ingelogde klant kan een goedgekeurd recept tot de geldigheidsdatum aan een nieuwe winkelwagen toevoegen.
- **Standaardgeldigheid** (90 dagen): vooraf ingevuld in het goedkeuringsformulier.
- **Toestemmingstekst**, per taal: de klant moet het vakje aanvinken vóór elke upload.

### Gezondheidsvragenlijst

Ingeschakeld vraagt ze naar de patiënt (zelf of iemand anders), leeftijd, gewicht, lengte, geslacht, zwangerschap of borstvoeding, allergieën, lopende behandelingen en voorgeschiedenis. Afrekenen wacht op de antwoorden. Ze worden versleuteld en bij de volgende bestelling van een ingelogde klant vooraf ingevuld.

### Herinneringen en termijnen

- **Herinnering aan de klant** (2 dagen): e-mail als de klant een informatieverzoek niet heeft beantwoord.
- **Automatische annulering** (10 dagen): de aanvraag wordt geweigerd met de reden „Geen antwoord van de klant”.
- **Melding aan de apotheker** (24 uur): overzicht van aanvragen en klantberichten die langer dan de termijn wachten.

0 schakelt elke functie uit.

### Meldingen en statussen

- **Meldingsadressen voor de apotheker**: een of meer adressen, gescheiden door komma's.
- **Status van geweigerde bestellingen**: standaard Geannuleerd, waardoor de voorraad wordt teruggeboekt.
- **Opgeslagen antwoorden**: één per regel en per taal, met één klik in een bericht of beslissing ingevoegd.

### Opslag en bewaring

- **Opslagmap**: standaard `var/dfprescription/`. Een absoluut pad buiten de webroot wordt aanbevolen. Zodra er documenten zijn opgeslagen, kan het niet meer worden gewijzigd.
- **Bewaring van documenten** (365 dagen): bestanden worden na deze termijn verwijderd, behalve bij lopende aanvragen en nog geldige recepten. Metagegevens en auditlogboek blijven bewaard.

## Klanttraject

1. De productpagina toont een badge: recept verplicht, controle door apotheker of limiet per bestelling.
2. In de winkelwagen sleept de klant zijn documenten erin of maakt een foto met de telefoon, vinkt de toestemming aan, vult zo nodig de vragenlijst in en kan een notitie voor de apotheker achterlaten.
3. Zolang er iets ontbreekt, zijn de links naar het afrekenen uitgeschakeld en stuurt het rechtstreeks openen van de bestelpagina de klant met een melding terug naar de winkelwagen.
4. Na de bestelling tonen de bevestigingspagina, het besteldetail en de pagina _Mijn recepten_ in het account de status van de aanvraag. Gasten volgen hun aanvraag via een privélink per e-mail.

## Een aanvraag behandelen

Menu _Bestellingen > Recepten_. De lijst toont de status, het aantal documenten en de ongelezen berichten, met tellers bovenaan. De aanvraagpagina bevat:

- de documenten in een viewer (ingesloten pdf, afbeeldingen met draaien en zoomen), met openen en downloaden;
- de klant, de bestelling of bestellingen, de betrokken producten en hun regel;
- de antwoorden op de gezondheidsvragenlijst, met risicopunten gemarkeerd;
- de berichtenreeks met de klant;
- het beslissingsformulier en het auditlogboek.

### Beslissen

- **Goedkeuren**: stel de geldigheidsdatum van het recept in. De bestelling krijgt de status terug die ze vóór de wachtstand had, bijvoorbeeld Betaling aanvaard.
- **Informatie opvragen**: het bericht is verplicht. De klant krijgt een e-mail en antwoordt in zijn account of via de privélink.
- **Weigeren**: kies een reden. De bestelling gaat naar de status die voor weigeringen is ingesteld.

De naam van de apotheker en zijn registratienummer worden bij elke beslissing opgeslagen en voor de medewerker onthouden. Aan elke aanvraag kan een interne notitie worden toegevoegd die de klant nooit ziet.

Wijzigt een betaalmodule de status van een bestelling in de wacht (bijvoorbeeld via een betaalwebhook), dan onthoudt de module die status en zet de bestelling weer in de wacht. Een handmatige wijziging door een medewerker wordt gerespecteerd en vastgelegd.

## Berichten tussen klant en apotheker

Elke aanvraag heeft een eigen berichtenreeks, versleuteld zoals de documenten. De apotheker antwoordt op de aanvraagpagina en voegt zo nodig een opgeslagen antwoord in. De klant ontvangt de tekst per e-mail en antwoordt via _Mijn recepten_. De apotheker krijgt een e-mail zonder de berichttekst, alleen met een link naar de aanvraag. Klanten kunnen maximaal 20 berichten per dag per aanvraag sturen.

## QR-code van e-recepten

Bij het openen van een aanvraag wordt de QR-code van elk document in uw browser gelezen, uit afbeeldingen en uit de eerste 3 pagina's van pdf's. Het blok _QR-code van het e-recept_ toont:

- de gedetecteerde code en de volledige inhoud van de QR-code;
- een melding als hetzelfde recept al in een andere aanvraag van de winkel is verzonden, zo nodig met „andere klant”;
- een veld om het nummer handmatig in te voeren als de QR-code onleesbaar is, en een knop om opnieuw te lezen.

Alleen gecertificeerde apotheeksoftware mag de officiële e-receptdiensten raadplegen. De module bereidt de controle voor en detecteert hergebruik; de apotheker controleert de code daarna in zijn software.

## Geplande taak

De moduleconfiguratie toont de cron-URL. Roep die elk uur aan:

```
0 * * * * curl -s "https://uw-winkel.nl/module/dfprescription/cron?key=UW_SLEUTEL" >/dev/null
```

Ze verstuurt herinneringen en meldingen, annuleert onbeantwoorde aanvragen en verwijdert verlopen bestanden. Zonder cron worden deze taken hooguit één keer per uur uitgevoerd bij het openen van de pagina _Recepten_.

## Beveiliging en naleving

- AES-256-GCM-versleuteling van documenten, vragenlijstantwoorden, berichten en QR-code-inhoud. De sleutel is afgeleid van een geheim van de module en de `_COOKIE_KEY_` van de winkel.
- Auditlogboek van elke upload, weergave, download, elk bericht en elke beslissing, met IP-adres.
- CSV-export van het register via _Bestellingen > Recepten_ (knop _Register exporteren_), zonder documenten of gezondheidsantwoorden.
- Werkt met de officiële AVG-module: de gegevensexport van de klant bevat de aanvragen, en het verwijderen van een klant wist zijn documenten en berichten.

Bewaar bij een migratie de `_COOKIE_KEY_` van de winkel en de configuratiewaarde `DFPRESCRIPTION_KEY`. Zonder een van beide kunnen opgeslagen documenten niet meer worden ontsleuteld.

## Problemen oplossen

### Het statuspaneel meldt dat de map vanaf internet bereikbaar is

De bestanden blijven versleuteld, maar nginx negeert het bestand `.htaccess`. Voeg een regel `deny all` voor de map toe of kies een map buiten de webroot.

### De klant ziet het receptblok niet

Controleer of een regel het product of een van zijn categorieën dekt en of uw thema de hook `displayShoppingCartFooter` op de winkelwagenpagina toont.

### De QR-code wordt niet gelezen

De QR-code moet scherp en volledig zichtbaar zijn. Gebruik _Opnieuw lezen_ na ontvangst van een betere foto, of voer het receptnummer handmatig in.

## Verwijderen

Bij het verwijderen worden alle opgeslagen documenten en de tabellen van de module definitief gewist. De eigen bestelstatus wordt verborgen maar blijft bewaard voor de bestelgeschiedenis. Exporteer het register vóór het verwijderen als u een spoor moet bewaren.
