Skip to content

Rendez-vous & Variables

Le rendez-vous (Appointment) est l’entité métier centrale. Il lie un patient, un praticien, un site et un créneau horaire. Il contient les variables médicales saisies pendant la consultation et les documents générés.


Modèle : src/Domain/Appointment/Models/Appointment.php

RelationModèleDescription
patientPatientPatient concerné
userUserPraticien (orthoptiste)
siteSiteLieu de la consultation
agendaAgendaAgenda du praticien
appointmentTypeAppointmentTypeType de consultation
appointmentVariablesAppointmentVariableVariables saisies
documentsAppointmentDocumentDocuments générés
documentAssetsAppointmentDocumentAssetAssets (images, etc.)
invoicesAppointmentInvoiceFactures
proofreadingsAppointmentProofreadingDemandes de relecture
actionLogsAppointmentActionLogJournal d’actions
waitingRoomWaitingRoomSalle d’attente
StatutDescription
confirmedConfirmé
rescheduledReprogrammé
waitingEn salle d’attente
in_progressEn cours
doneTerminé
deletedSupprimé
no_show_but_okAbsent mais ok
no_showAbsent
suspendedSuspendu

Un système de verrou Redis empêche l’édition simultanée :

  • Clé : appointments:{id}:editor
  • userHasAcquireLock(userId) vérifie si l’utilisateur courant a le verrou

Les variables représentent les mesures et données saisies pendant la consultation.

TypeDescription
stringTexte court
long_stringTexte long
listListe déroulante
booleanOui/Non
radioChoix unique
checkboxChoix multiples
formFormulaire structuré
special_formFormulaire spécial (hardware)
  • CentralVariable / Variable : définition des variables (centrales et par tenant)
  • AppointmentVariable : valeur d’une variable pour un RDV donné
  • Les variables hardware (tonométrie, kératométrie, etc.) sont identifiées par UUID dans config/app.php → variables.hardware

Définis centralement (CentralAppointmentType) et associés aux sites. Chaque type définit la catégorie (AppointmentTypeCategory) et la couleur de l’agenda (AppointmentTypeColor).


Les documents sont générés à partir de templates et stockés sur S3.

  • Définis centralement (CentralDocumentTemplate)
  • Organisés par dossiers (DocumentTemplateFolderType)
  • Types : DocumentTemplateType

La génération PDF utilise Gotenberg (conteneur Docker) :

  • GotenbergService::libreOfficeToPdf() — conversion LibreOffice → PDF
  • GotenbergService::chromium() — rendu HTML → PDF via Chromium

L’application utilise l’API Claude pour générer des comptes-rendus médicaux.

Client : src/Infrastructure/Claude/ClaudeClient.php

  • Modèle configurable via services.claude.model
  • Méthode generate(prompt, maxTokens) → texte

Types de comptes-rendus (MedicalReportTemplateType)

Section titled “Types de comptes-rendus (MedicalReportTemplateType)”
TypeLabel
telemedicineConsultation de télémédecine
assessmentBilan complet
screeningDépistage préventif

Paramètres supplémentaires :

  • MedicalReportDetailLevel — niveau de détail
  • MedicalReportTone — ton du compte-rendu

FichierRôle
src/Domain/Appointment/Models/Appointment.phpModèle RDV
src/Domain/Appointment/Models/AppointmentVariable.phpValeur variable pour un RDV
src/Domain/Appointment/Models/AppointmentDocument.phpDocument généré
src/Domain/Appointment/Models/AppointmentProofreading.phpDemande de relecture
src/Domain/Core/Models/Variable.phpDéfinition des variables
src/Domain/Core/Models/CentralAppointmentType.phpTypes de consultation
src/Domain/Core/Models/CentralDocumentTemplate.phpTemplates de documents
src/Infrastructure/Claude/ClaudeClient.phpClient API Claude
src/Infrastructure/Gotenberg/GotenbergService.phpGénération PDF