# Signing Edit Prevention Implementation Plan ## Overview Implement edit prevention after signing for all clinical documents across all apps. ## Apps with Signing Functionality 1. **ABA** - ABASession, ABAConsult (2 models) 2. **OT** - OTSession, OTConsult (2 models) 3. **SLP** - SLPConsult, SLPAssessment, SLPIntervention, SLPProgressReport (4 models) 4. **Medical** - MedicalConsultation, MedicalFollowUp (2 models) 5. **Nursing** - NursingEncounter (1 model) **Total: 11 models** ## Implementation Strategy ### 1. Create Mixin for Edit Prevention Create `SignedDocumentEditPreventionMixin` in `core/mixins.py` that: - Checks if document is signed in `dispatch()` method - Prevents access to update views for signed documents - Shows appropriate error message - Redirects to detail view ### 2. Update All UpdateView Classes Add the mixin to all 11 update views: - `ABASessionUpdateView` - `ABAConsultUpdateView` - `OTSessionUpdateView` - `OTConsultUpdateView` - `SLPConsultUpdateView` - `SLPAssessmentUpdateView` - `SLPInterventionUpdateView` - `SLPProgressReportUpdateView` - `MedicalConsultationUpdateView` - `MedicalFollowUpUpdateView` - `NursingEncounterUpdateView` ### 3. Update Confirmation Messages Update all sign view confirmation messages to include: "Are you sure you want to sign this document? Once signed, no further editing will be allowed. This action cannot be undone." ### 4. Update Templates Update detail templates to: - Hide "Edit" button if document is signed - Show "Signed - No Editing Allowed" message ## Files to Modify ### Python Files (12 files) 1. `core/mixins.py` - Add new mixin 2. `aba/views.py` - Update 2 views 3. `ot/views.py` - Update 2 views 4. `slp/views.py` - Update 4 views 5. `medical/views.py` - Update 2 views 6. `nursing/views.py` - Update 1 view ### Template Files (11 files) 1. `aba/templates/aba/session_detail.html` 2. `aba/templates/aba/consult_detail.html` 3. `ot/templates/ot/session_detail.html` 4. `ot/templates/ot/consult_detail.html` 5. `slp/templates/slp/consultation_detail.html` 6. `slp/templates/slp/assessment_detail.html` 7. `slp/templates/slp/intervention_detail.html` 8. `slp/templates/slp/progress_detail.html` 9. `medical/templates/medical/consultation_detail.html` 10. `medical/templates/medical/followup_detail.html` 11. `nursing/templates/nursing/encounter_detail.html` ## Implementation Steps 1. ✅ Create mixin in core/mixins.py 2. ✅ Update all UpdateView classes 3. ✅ Update all sign view confirmation messages 4. ✅ Update all detail templates 5. ✅ Test implementation