Skip to content

Fix: reprise fiable du wizard diagnostic (schéma, navigation, code mort) - #49

Merged
Zoubeir23 merged 11 commits into
mainfrom
Fix/049-diagnostic-wizard-resume-flow
Jul 23, 2026
Merged

Zoubeir23 merged 11 commits into
mainfrom
Fix/049-diagnostic-wizard-resume-flow

Conversation

@Zoubeir23

@Zoubeir23 Zoubeir23 commented Jul 23, 2026

Copy link
Copy Markdown
Owner

Contexte

Audit de la fonctionnalité diagnostic suite à une question sur le découpage en étapes avec reprise. L'architecture serveur (colonne de suivi d'étape, action dédiée par étape, page /edit?step=N) était la bonne, mais plusieurs bugs empêchaient la reprise de fonctionner réellement.

Corrections

Schéma (bloquant)

  • 016_diagnostics_wizard_step_tracking.sql : ajoute la colonne current_step (lue/écrite par actions/diagnostics.ts sur chaque étape mais absente de tout le sché­ma versionné) et assouplit les contraintes NOT NULL sur chief_complaint/patient_age_years/patient_age_group/patient_sex, remplies progressivement par le wizard (createDiagnosticDraft insérait chief_complaint: null dans une colonne NOT NULL).

Navigation cassée

  • Le bouton "Retour" de l'étape Symptômes renvoyait vers ?resumeId=..., un paramètre jamais lu nulle part : perte du brouillon en cours + création d'un diagnostic dupliqué en base. Ajout de updateDiagnosticPatientProfile + lecture de resumeId dans new/page.tsx pour éditer le brouillon existant au lieu d'en recréer un.
  • Aucun lien de l'UI ne menait vers /edit pour un diagnostic en cours (statut draft) : la liste affichait "Voir" vers une fiche lecture seule quasi vide. Ajout d'un bouton "Continuer" routant vers /edit.
  • ?step= avait un fallback codé en dur à "2", ce qui masquait en permanence la logique de reprise basée sur current_step — même sans paramètre explicite, l'utilisateur retombait toujours à l'étape 2 au lieu de l'étape réellement atteinte.
  • Valider un diagnostic depuis la fiche détail (second chemin de validation, hors wizard) ne menait jamais à l'étape 5 (ordonnance) : ajout d'un bandeau "Continuer vers l'ordonnance" + persistance de current_step dans validateDiagnostic.

Qualité

  • Suppression de ~150 lignes de code mort dans new/page.tsx (state/handlers pour les étapes 2-5, jamais atteignables car diagnosticId/patientProfile n'étaient jamais renseignés).
  • IcdAnalysisStep accepte désormais des valeurs par défaut (defaultCandidates/defaultAdditionalTests/defaultClinicalNotes) : reprendre à l'étape 3 ne relance plus une analyse IA à zéro.
  • Mappers buildPatientProfileFromRecord/buildSymptomsFromRecord extraits dans lib/diagnostics/build-profile-from-record.ts, partagés entre new/page.tsx et edit/page.tsx.

Test plan

  • npx tsc --noEmit — 0 erreur
  • npm run test:run — 184/184 tests
  • npm run build — build de production complet
  • Vérifier en environnement réel : créer un diagnostic, quitter à l'étape 2, retrouver le bouton "Continuer" dans la liste et reprendre à la bonne étape
  • Vérifier que la migration 016 s'applique proprement sur la base réelle (schéma non vérifié en direct, cf. discussion — le connecteur MCP Supabase n'a pas accès au projet DocFlowAI)

Summary by CodeRabbit

  • Nouvelles fonctionnalités

    • Reprise des diagnostics en brouillon avec préremplissage automatique du profil patient.
    • Navigation améliorée entre les étapes du parcours de diagnostic.
    • Possibilité de poursuivre un brouillon directement depuis la liste des diagnostics.
    • Affichage d’un accès à l’édition pour générer le document ou l’ordonnance après validation.
  • Améliorations

    • Les analyses ICD-11 déjà enregistrées sont désormais conservées et peuvent être relancées manuellement.
    • Les diagnostics reprennent correctement à la dernière étape atteinte.

Copilot AI review requested due to automatic review settings July 23, 2026 04:18

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

@vercel

vercel Bot commented Jul 23, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
doc-flow-ai Ready Ready Preview, Comment Jul 23, 2026 4:20am

@coderabbitai

coderabbitai Bot commented Jul 23, 2026

Copy link
Copy Markdown

Review Change Stack

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Free

Run ID: af8f1294-e83d-42e0-9d8c-06ef22629d86

📥 Commits

Reviewing files that changed from the base of the PR and between e5d1be0 and d8c6975.

📒 Files selected for processing (8)
  • actions/diagnostics.ts
  • app/(app)/app/diagnostics/[id]/edit/page.tsx
  • app/(app)/app/diagnostics/[id]/page.tsx
  • app/(app)/app/diagnostics/new/page.tsx
  • app/(app)/app/diagnostics/page.tsx
  • components/diagnostics/icd-analysis-step.tsx
  • lib/diagnostics/build-profile-from-record.ts
  • supabase/migrations/016_diagnostics_wizard_step_tracking.sql

📝 Walkthrough

Walkthrough

Le wizard de diagnostic persiste désormais l’étape courante, reprend les brouillons avec leurs données, sépare la création initiale de l’édition, restaure l’analyse ICD-11 sauvegardée et adapte les actions selon le statut de validation.

Changes

Parcours du wizard de diagnostic

Layer / File(s) Summary
Schéma et transformations de données
supabase/migrations/..., lib/diagnostics/build-profile-from-record.ts
Le schéma ajoute current_step et autorise le remplissage progressif; les utilitaires convertissent les enregistrements en profils patient et symptômes.
Création et reprise du brouillon
actions/diagnostics.ts, app/(app)/app/diagnostics/new/page.tsx
La page charge un brouillon via resumeId, pré-remplit l’étape 1, met à jour le profil avec contrôle de clinique ou crée un nouveau diagnostic, puis redirige vers l’édition.
Restauration de l’édition et de l’analyse ICD
app/(app)/app/diagnostics/[id]/edit/page.tsx, components/diagnostics/icd-analysis-step.tsx
L’étape explicite dans l’URL est distinguée de l’étape persistée; les résultats ICD-11 sauvegardés sont restaurés sans relancer automatiquement l’analyse.
Validation et navigation selon le statut
actions/diagnostics.ts, app/(app)/app/diagnostics/page.tsx, app/(app)/app/diagnostics/[id]/page.tsx
La validation fixe current_step à 3 en cas de rejet ou à 5 sinon; les brouillons affichent « Continuer » et les diagnostics validés peuvent accéder à l’étape 5.

Estimated code review effort: 3 (Moderate) | ~25 minutes

Sequence Diagram(s)

sequenceDiagram
  participant DiagnosticNewPage
  participant getDiagnosticById
  participant updateDiagnosticPatientProfile
  participant SupabaseDiagnostics
  DiagnosticNewPage->>getDiagnosticById: charge le brouillon via resumeId
  getDiagnosticById->>SupabaseDiagnostics: lit le diagnostic
  SupabaseDiagnostics-->>DiagnosticNewPage: retourne les données patient
  DiagnosticNewPage->>updateDiagnosticPatientProfile: soumet le profil modifié
  updateDiagnosticPatientProfile->>SupabaseDiagnostics: vérifie la clinique et met à jour le brouillon
  SupabaseDiagnostics-->>DiagnosticNewPage: retourne success
  DiagnosticNewPage-->>DiagnosticNewPage: redirige vers l’édition à l’étape 2
Loading

Poem

Lapin saute, le brouillon revient,
Son profil se remplit sans frein.
L’ICD garde ses choix bien rangés,
Les étapes savent où s’arrêter.
« Continuer ! » croque la carotte,
Le wizard bondit, puis caracole.


Note

🎁 Summarized by CodeRabbit Free

Your organization is on the Free plan. CodeRabbit will generate a high-level summary and a walkthrough for each pull request. For a comprehensive line-by-line review, please upgrade your subscription to CodeRabbit Pro by visiting https://app.coderabbit.ai/login.

Comment @coderabbitai help to get the list of available commands.

@Zoubeir23
Zoubeir23 merged commit f68b34b into main Jul 23, 2026
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants