bemade-addons/bemade_sports_clinic/notes/TODO.md

8.6 KiB

Sports Clinic Module - TODO List

High Priority

Player Management

  • Review permission checks in patient.remove_from_team()
    • Ensure proper access controls are in place for player removal
    • Consider adding more granular permissions for different user roles
    • Refactored to use cron jobs for permission-sensitive operations
    • Fixed test cases for player removal workflow

Injury Tracking

  • Add parental consent field to injuries

    • Verified existing field: parental_consent = fields.Selection([('yes', 'Yes'), ('no', 'No'), ('na', 'Not Applicable')])
    • Confirmed French Canadian (fr_CA) translations are in place for all UI elements
    • Verified field is properly displayed in injury forms and lists
    • Added field to the therapist portal UI for injury creation
    • Updated portal controller to handle the parental consent field
  • Fix configuration issues

    • Fix injury update chatter links pointing to example.com before going live
  • Improve notification system

    • Find a way to improve notifications sent about tracking injury details

Medium Priority

Team Staff Management

  • Review and refactor _update_treatment_professional_group
    • Refactored into smaller, more maintainable methods
    • Improved code documentation and clarity
    • Verified functionality with existing tests
    • Removed unnecessary web_responsive dependency

Testing Strategy

Email Configuration

  • Fix email configuration in tests
    • test_treatment_prof_can_remove_player_from_team is currently disabled due to email configuration issues
    • Need to properly configure test environment to handle email sending
    • Consider using mail.trap or similar for test emails
    • Re-enable test after configuration is fixed

Unit Tests

  • Player Management

    • Test player removal workflow
      • Coach-initiated removal requests
      • Treatment professional approval flow
      • Permission enforcement
      • Pending removal flag behavior
      • Archiving of players with no teams
    • Parental consent field functionality
    • Match and practice availability tracking
  • Injury Tracking

    • Enhanced notification system
    • Progress tracking and resolution monitoring
    • Internal vs external notes functionality
    • Treatment professional assignments
  • Data Protection

    • GDPR and Quebec Law 25 compliance features
    • Data anonymization functionality
    • Configurable retention periods
    • Audit logging verification
    • Manual anonymization wizard

Integration Tests

  • Portal Features

    • Field therapist portal access
    • Coach portal functionality
    • Injury reporting through portal
    • Player status updates
  • Security

    • Field-level security validations
    • Permission escalation prevention
    • Audit trail verification

End-to-End Tests

  • Complete injury workflow (report → treatment → resolution)
  • Player removal workflow
  • Data export/anonymization process

Performance Tests

  • Large dataset handling
  • Concurrent user access
  • Report generation with extensive data

Portal Requirements

Therapist Portal

Player Management

  • Player CRUD Operations
    • Add new players to the system
    • Remove players from teams
    • Update player information (name, contact details, etc.)
    • Manage player team assignments

Injury Management

  • Injury Tracking
    • Add new injuries
    • Modify existing injury details
    • Update injury status and progress
    • Add treatment notes and updates
    • Upload and manage injury-related documents

Patient Information

  • Patient Profile Management
    • Edit visible patient information
    • Update emergency contacts
    • Manage patient medical history
    • Track and update insurance information

Task Management

  • Mail Activities (To-Dos)
    • Create new activities for patients/injuries
    • Assign activities to internal users
    • Assign activities to portal users with appropriate access
    • Track activity status and completion
    • Set due dates and priorities
    • Add activity notes and updates

Data Privacy & Compliance

Data Retention & Anonymization

  • Implement scheduled data anonymization
    • Create a scheduled action to automatically anonymize personal data after a configurable retention period
    • Add configuration settings for retention periods (default: 7 years for medical records, 2 years for non-medical data)
    • Ensure compliance with GDPR and Quebec's Law 25 (Loi 25)
    • Add logging of all anonymization actions for audit purposes
    • Create a manual anonymization wizard for one-off requests
    • Add data export functionality for records before anonymization

Future Enhancements

Player Management

  • Add bulk operations for player management
  • Add more detailed player status tracking

Reporting

  • Add reports for player injuries and team health status
  • Create dashboard for treatment professionals

Back Burner (Postponed)

Injury Tracking

  • Improve injury notification system
    • Review and enhance how injury tracking notifications are sent
    • Consider adding more detailed tracking information

Notes

  • Keep this file updated as new TODOs are identified
  • Reference relevant issue numbers when available
  • Delete or check off items as they are completed

MC's notes

  • Change action button colors to Fit Crew color scheme (instead of the weird turquoise)
  • Confirm followers added correctly when therapist adds player to team
  • Remove Team from injury detail (including from model - was not there before)
  • Fix treatment professional selection in injury detail
  • Add patient address add/edit to coach/therapist portal

DD & MD notes on how to move forward

  • Calendar integration - add calendar events linked to tasks so that tasks block out therapist time (only really required for Steph, so can wait a bit)
  • Project/product setup for billing:
    • Create products for FEE-SIDELINE and FEE-TRANSPORT
    • Config FEE-SIDELINE to create Project on confirmation
    • Config FEE-TRANSPORT to create NOTHING on confirmation
    • Set up SO per client cost center
      • Put a FEE-SIDELINE product on the SO
      • Put a FEE-TRANSPORT product on the SO
      • Confirm SO then configure resulting Project (consider a project template to load on the FEE-SIDELINE)
  • Portal user timesheet module (project_subcontractor_portal)
    • Create portal user add timesheet modal
    • Allow portal user to be selected as assignee on project tasks
    • (optional?) Link portal users to Employee records? Probably required for timesheets to work
  • Project task link to event (to block out calendar time re Appointments)
  • Sanitize code for production readiness
    • Remove debug code
    • Remove debug logging (convert _logger.info to _logger.debug)
    • Remove debug print statements
    • Remove debug comments
    • Remove debug TODOs
    • Remove debug print statements
    • Re-establish no-update on security rules and anywhere else we temporarily removed it for debugging, if required
    • Check status of MAIL_ACTIVITY_PORTAL_ACCESS.md and PORTAL_ACCESS_LIMITATIONS.md as well as test suite status (i.e. still have commented out tests?) + update notes at top of mail_activity_portal_rules.xml
  • Sanity checks on functionality
    • Check if tracking needs to be re-enabled on any notes fields (or convert the fields to not be html)
    • Check if portal patient creation functionality actually accessible
    • Check all translations present into french
    • Check injury.document categories
    • Bypass unverified stage for patient.injury when declared by a treatment professional
  • Migration
    • Get medsportsuroit db dump loaded into psql on fitcrew server
    • Create module in bemade-tools
      • See verajet/odoo migration module for example
      • Use direct psql connection to suck out data and map as required
      • Use Command.create() when required to create records with sub-records
      • Set an environment (launch.json) up for testing the migration
    • Staging
      • Don't bother. Just run the whole migration on localhost (neutralizing the fit crew db each time) and test on LAN.
    • Live migration
      • Get a backup of the prod db
      • Stop the server
      • Run the migration locally
      • Restore it back into the fitcrew server
      • Cross fingers (while retesting)