Nazendingen (Technisch)
De module Nazendingen beheert de registratie en de communicatie van geneesmiddelen die tijdelijk niet leverbaar zijn.
Technisch ontwerp
De module combineert een database-overzicht van nazendingen met functionaliteiten voor PDF-generatie en asynchrone e-maildistributie. De architectuur maakt gebruik van een API-endpoint voor snelle voorraadselectie en Celery-tasks voor achtergrondprocessen.
Datamodel
Nazending:voorraad_item: ForeignKey naarVoorraadItem(bevat ZI-nummer en naam).datum: De registratiedatum van de nazending.nazending_tot: Vrij tekstveld voor de verwachte leverdatum of periode.alternatief: Optioneel vrij tekstveld voor vervangende medicatie.
Implementatiedetails
- API Zoeken:
medications_search_apidoorzoektVoorraadItemop ZI-nummer of naam viaicontains. - CRUD: De view
nazendingen_viewbeheert de lijst en wijzigingen viaNazendingForm. - PDF Export: Maakt gebruik van de helper
_render_pdf(WeasyPrint) om de HTML-templatenazendingen/pdf/nazendingen_lijst.htmlte converteren. - Email Distributie:
send_nazendingen_pdf_task(Celery) genereert PDF-bestanden en verzendt deze naar geselecteerde organisaties vanuitbaxterezorg@apotheekjansen.com.
Autorisatie en beveiliging
- Toegang tot overzichten wordt gecontroleerd via
can_view_av_nazendingen. - Wijzigingen en distributie vereisen de permissie
can_upload_nazendingen. - De module maakt gebruik van Django's standaard CSRF-beveiliging en SQL-injectie preventie via ORM-queries.
Relevante bestanden
core/models.py: HetNazendingmodel.core/views/nazendingen.py: De hoofdview en PDF/Email logica.core/tasks.py: De Celery-task voor e-mailverzending.core/forms.py: HetNazendingForm.core/templates/nazendingen/: Interface en PDF-layouts.