HH/prompt.md
2025-12-24 12:42:31 +03:00

795 lines
24 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

PX360 PROMPT ENHANCED
AlHammadi Group (Saudi Arabia).
This is a complex enterprise system. You MUST follow the process, implement incrementally, run checks, and produce a clean codebase. Do not skip steps. Do not guess silently. If a requirement is not implementable without external vendor credentials (MOH/CHI/social APIs), implement robust integration stubs with clear TODOs and testable interfaces.
0) Non-Negotiable Rules (Follow Strictly)
1. No monolithic app. Use the modular apps described below.
2. No undocumented magic. Every critical business rule must be documented in code comments and in /docs/.
3. Config-driven behavior: SLA thresholds, routing rules, journey templates, stage triggers, survey thresholds must be stored in DB models or settings, not hardcoded.
4. Event-driven: Patient journey stage completion and survey sending must be triggered via integration events (stored in DB + processed by Celery).
5. Everything has an API: Build DRF APIs for the main entities and operations (including journeys and stage events).
6. RBAC is mandatory: Role-based access must be implemented early and enforced in views/DRF permissions.
7. Auditing is mandatory: Status changes, assignments, SLA escalations, and external events must be logged.
8. Deliver in checkpoints: Implement in phases; each phase must compile, migrate, and pass basic tests.
9. Use UUIDs for all primary models (except Django internal tables).
10. Saudi context: Multi-language support (Arabic/English in surveys and UI where applicable), data residency assumptions, security best practices.
1) Tech Stack Requirements
• Python 3.11+
• Django 5.x
• DRF
• PostgreSQL
• Celery + Redis (celery-beat included)
• JWT auth (SimpleJWT)
• Bootstrap 5 templates (minimal but functional)
• django-environ for .env
• Docker + docker-compose
• Logging: structured logs with separate loggers for integrations
• Tests: pytest-django (preferred) OR Django TestCase
• Formatting/lint: ruff (preferred) OR black/isort/flake8
2) Project Name + Folder Layout
Project name: px360
Create this structure:
px360/
manage.py
config/
__init__.py
settings/
__init__.py
base.py
dev.py
prod.py
urls.py
asgi.py
wsgi.py
celery.py
apps/
core/
accounts/
organizations/
journeys/
surveys/
complaints/
feedback/
callcenter/
social/
px_action_center/
analytics/
physicians/
projects/
integrations/
notifications/
ai_engine/
templates/
static/
docs/
requirements/
docker/
docker-compose.yml
Dockerfile
.env.example
README.md
Important: Put all business apps under apps/ for clarity.
3) Implementation Phases (Must Follow)
Phase 0 — Bootstrap & Infrastructure
Deliverables:
• Django project scaffolding
• settings split (base/dev/prod)
• environment loading via .env
• Dockerfile + docker-compose (web, db, redis, celery, celery-beat)
• Celery working and discoverable tasks
• Health endpoint: /health/
• Basic README with run commands
Acceptance:
• docker compose up works
• migrations run
• health endpoint returns JSON {status:"ok"}
Phase 1 — Core + Accounts + RBAC + Audit
Deliverables:
• core app:
• TimeStampedModel, UUIDModel, SoftDeleteModel (if needed)
• AuditEvent model (generic audit log)
• reusable enums/choices
• accounts app:
• Custom User model (extends AbstractUser)
• Role model or role choices with Group mapping
• Permission utilities + DRF permission classes
• Create default roles & groups via data migration/management command
• Authentication:
• JWT endpoints
• Audit logging hooks:
• record login, role changes, status changes (later) using helper service
Acceptance:
• Can create users with roles
• RBAC enforced on at least one endpoint
• AuditEvent records at least user login and a sample action
Phase 2 — Organizations (Hospitals/Departments/People)
Deliverables:
* organizations app models:
* Hospital, Department (hierarchical), Physician, Employee, Patient
* Admin pages for these models
* DRF endpoints for CRUD (admin/authorized only)
Acceptance:
* CRUD works, permissions enforced
Phase 3 — Journeys (EMS/Inpatient/OPD) + Event Intake
Deliverables:
• journeys app models (templates + instances):
• JourneyType enum: EMS / INPATIENT / OPD
• PatientJourneyTemplate
• PatientJourneyStageTemplate
• PatientJourneyInstance
• PatientJourneyStageInstance
• Journey configuration UI (admin) + APIs
• Integration event table (in integrations app or journeys app):
• InboundEvent model to store events from HIS/Lab/Radiology/Pharmacy etc.
• Fields: source_system, event_code, payload_json, encounter_id, patient_identifier, received_at, processed_at, status, error
• An API endpoint to receive events:
• POST /api/integrations/events/ (secured by API key or JWT service account)
• Celery task that processes unprocessed inbound events:
• resolves journey by encounter_id
• completes stage based on trigger_event_code
• writes audit logs
Acceptance:
• Can define an OPD journey template with stages
• Can create a journey instance for an encounter
• Posting an inbound event completes the correct stage instance
Phase 4 — Surveys (Journey Stage Surveys) + Delivery
Deliverables:
• surveys app models:
• SurveyTemplate, SurveyQuestion
• SurveyInstance, SurveyResponse
• Survey language support (ar/en text fields)
• Survey link generation:
• use signed token URL to prevent guessing
• Survey submission endpoint:
• POST /api/surveys/submit/ or instance-specific endpoints
• Journey integration:
• When a stage completes, if:
• auto_send_survey=True
• survey_template exists
• Then create SurveyInstance linked to:
• journey_instance
• journey_stage_instance
• encounter_id
• notifications app:
• unify send interface:
• send_sms(), send_whatsapp(), send_email()
• for now: implement a “console backend” that logs messages in DB (NotificationLog)
• Celery tasks:
• send_survey_invitation(instance_id)
• retry logic on failure
• Stage survey examples:
• OPD_MD_CONSULT → survey for MD interaction
• LAB → lab experience
• RADIOLOGY → radiology
• PHARMACY → pharmacy
Acceptance:
• Completing a stage triggers a SurveyInstance
• NotificationLog records outbound survey invitation
• Survey can be filled and responses saved
Phase 5 — Complaints/Inquiries/Feedback + Complaint Resolution Satisfaction
Deliverables:
• complaints app models:
• Complaint, ComplaintAttachment, ComplaintUpdate/Timeline
• Inquiry
• Complaint SLA: due_at computed based on severity config
• Complaint workflow: open → in progress → resolved → closed
• Complaint Resolution Satisfaction:
• When complaint closes, automatically send “resolution satisfaction” survey
• Low score triggers PXAction creation (see next phase)
• API endpoints and admin
Acceptance:
• Creating complaint triggers SLA
• Closing complaint triggers satisfaction survey send
Phase 6 — PX Action Center (SLA engine, escalations, evidence, approval)
Deliverables:
• px_action_center models:
• PXAction, PXActionLog, PXActionAttachment, PXActionSLAConfig, RoutingRule
• Automation triggers: create PXAction when:
• complaint created (optional config)
• negative stage survey score
• negative complaint-resolution satisfaction
• negative social sentiment
• low call center rating
• KPI decline (later)
• SLA reminders and escalation Celery tasks:
• reminder X hours before due
• escalate when overdue (assign to next level)
• PX review/approval:
• closing action requires PX role approval flag
Acceptance:
• Action is created automatically by at least 2 triggers
• Overdue escalates automatically
• PX approval enforced
Phase 7 — Call Center + Social Media + AI Engine (Foundations)
Deliverables:
• callcenter models for ratings
• social models for mentions
• ai_engine foundation:
• AISentimentResult model linked generically
• A service interface for sentiment scoring (stub)
• When new text enters (complaints/comments/social), create AISentimentResult via Celery task (stubbed)
• Negative sentiment flags drive PXActions (config)
Acceptance:
• Create mention → sentiment task runs → PXAction created if negative
Phase 8 — Analytics, KPIs, Dashboards, Physician Hub, QI Projects
Deliverables:
• analytics: KPI, KPIValue, dashboard endpoints
• physicians: monthly rating aggregation from surveys
• projects: QI projects and tasks
• Basic “PX Command Center” UI:
• active complaints count
• overdue actions count
• latest negative sentiment
• stage survey averages by department
Acceptance:
• Dashboard endpoint returns aggregated results
• Physician monthly rating computed for a test month
4) Detailed Business Logic Specifications
4.1 Patient Journey Definition (Key Requirement)
The system must allow PX Admin to define journeys for:
• EMS
• INPATIENT
• OPD
A journey is a template of ordered stages. Each stage:
• has trigger_event_code that maps to an incoming integration event
• optionally has a survey_template
• can automatically send survey when the stage completes
OPD Example:
• OPD_MD_CONSULT (trigger: OPD_VISIT_COMPLETED) → send MD survey
• LAB (trigger: LAB_ORDER_COMPLETED) → send Lab survey
• RADIOLOGY (trigger: RADIOLOGY_REPORT_FINALIZED) → send Radiology survey
• PHARMACY (trigger: PHARMACY_DISPENSED) → send Pharmacy survey
The journey instance is linked to an encounter_id. The same encounter can trigger multiple stages in sequence, and each stage may send its own survey.
4.2 Stage Completion Rules
When an inbound event arrives:
1. Identify journey instance via encounter_id
2. Find the first matching stage where:
• stage_template.trigger_event_code == event.event_code
• stage_instance.status != Completed
3. Mark it Completed with timestamps
4. Attach optional physician/department from payload
5. Audit log the completion
6. If stage has auto survey enabled → create survey instance and queue send task
4.3 Survey Delivery Rules
• Each survey invitation uses a secure signed link token
• Survey templates are bilingual (ar/en)
• Delivery channels:
• SMS (default)
• WhatsApp / Email (optional config)
• Sending must be Celery-based and record NotificationLog
• Survey responses:
• store per question
• compute summary score (template-defined scoring rules)
• if score below threshold → trigger PXAction
4.4 Threshold & Routing Configuration (Must Be DB-Driven)
Add models/config to control:
• per hospital:
• survey score threshold for “negative”
• SLA durations by priority
• routing rules (department manager vs PX team)
• per stage:
• auto_send_survey
• assigned survey template
5) APIs (Must Implement)
Implement DRF endpoints with filtering, pagination, and permissions:
• Auth:
• /api/auth/token/, /api/auth/refresh/
• Organizations:
• hospitals, departments, physicians, employees, patients
• Journeys:
• journey templates, stage templates
• journey instances, stage instances
• Integrations:
• inbound events create + list
• Surveys:
• templates/questions
• instances
• submit responses
• Complaints/Inquiries:
• CRUD + status transitions
• Action Center:
• actions list/detail
• status changes
• attachments/logs
• Call center:
• interactions CRUD
• Social:
• mentions CRUD
• Analytics:
• dashboard summary endpoint
Include OpenAPI/Swagger via drf-spectacular.
6) UI Templates & Admin Console (Comprehensive, Modern, Best-Practice)
You must build a modern, control-panel style web UI (Bootstrap 5 + best-practice Django templates) that provides:
• Comprehensive CRUD coverage for all core modules
• Dashboards and control panels as first-class features (not an afterthought)
• Fast filtering, saved views, and usable tables
• Action-oriented workflows: assign, escalate, close, approve, export
• Consistent UI layout with reusable components and partials
6.1 UI Framework and Layout Rules
Use Bootstrap 5 and implement a consistent layout system:
Base layout structure
• templates/layouts/base.html
• top navbar (global search, notifications, user menu)
• left sidebar navigation (module links + quick counts)
• main content area
• footer
• templates/layouts/partials/
• sidebar.html (RBAC-based nav)
• topbar.html
• breadcrumbs.html
• flash_messages.html
• filters_panel.html (collapsible)
• pagination.html
• table_toolbar.html (export, bulk actions)
• stat_cards.html (dashboard metric cards)
• charts_panel.html
• modal_form.html (optional)
Front-end best practices
• Use Bootstrap components: cards, offcanvas/accordion, badges, progress bars, nav tabs, modals, tooltips.
• Use DataTables (or a lightweight alternative) for advanced tables:
• search, sorting, server-side pagination where needed
• column toggles
• export actions
• Use Select2 for all large foreign-key selects (patients, departments, physicians, staff).
• Use HTMX (recommended) for partial updates:
• filters update list without full refresh
• status changes inline (e.g., close action)
• quick assign from list view
• Use Chart.js or ApexCharts for dashboards:
• trends, distributions, leaderboards, time series
• Ensure RTL-ready templates (Arabic support):
• Provide an RTL base CSS toggle and dir="rtl" handling.
• Accessibility:
• proper labels, aria, keyboard-friendly forms
6.2 UI Apps Coverage (Full CRUD + Control Panels)
You must implement full UI pages for:
A) PX Command Center Dashboard (Group-Level Real-Time Control Panel)
Create a primary dashboard: dashboard/command-center/
It must include:
Top KPI strip (cards)
• Active complaints
• Overdue complaints (SLA breach)
• Open PX actions
• Overdue PX actions
• Negative stage surveys (last 24h / 7d)
• Negative social mentions
• Call center low ratings
• Complaint resolution dissatisfaction rate
Charts (interactive)
• Complaints trend by day/week/month
• SLA compliance trend (complaints + actions)
• Survey satisfaction averages by stage (OPD MD / LAB / Radiology / Pharmacy)
• Sentiment distribution (positive/neutral/negative)
• Department leaderboard (best/worst)
• Physician leaderboard (best/worst)
Live feed widgets
• Latest high severity complaints
• Latest escalated actions
• Latest negative comments/mentions with quick “Create Action” button
• Stage events log stream (latest integration events processed)
Filters (persisted)
• Date range
• Hospital
• Department
• Journey type (EMS/Inpatient/OPD)
• Source (HIS/MOH/CHI/PXConnect/Social/Internal)
Actions
• Quick create complaint
• Quick create action
• Export dashboard snapshot (PDF/Excel)
RBAC rules:
• PX Admin can see all
• Hospital admin sees their hospital only
• Department manager sees their department only
B) Complaints Console (Complete CRUD + Workflow + SLA)
Provide a full complaints module UI:
Pages
1. Complaints List
• table with advanced filters:
• status, severity, priority, SLA status (due soon / overdue)
• source
• hospital, department
• physician (optional)
• date range
• bulk actions:
• assign to department/staff
• change status
• export selected
• quick actions from row:
• “View”
• “Assign”
• “Escalate”
• “Add Note”
• “Close”
• SLA badges and progress indicator
2. Complaint Create / Edit form
• structured form sections:
• patient info (select patient or enter MRN)
• encounter linking (encounter_id)
• classification (category/subcategory)
• description + attachments
• assignment + priority
• Use Select2 for patient/department/physician
3. Complaint Detail View (Case Management)
• case header (status, SLA countdown, assigned owner)
• timeline feed (updates, status changes, attachments, notes)
• tabs:
• Details
• Timeline
• Attachments
• Related Journey Stages & Surveys
• Actions (linked PX actions)
• Buttons:
• assign, escalate, change status
• “Trigger Resolution Satisfaction Survey” (admin only)
• “Create Action” (if not already)
• SLA indicator + audit log summary
4. Complaint Resolution Satisfaction Dashboard
• score distribution
• by department/hospital
• dissatisfied list with drill-down
Exports
• export list or selected complaints to CSV/Excel/PDF
C) PX Action Center Console (Operational Hub)
This must be a control room UI, not just CRUD.
Pages
1. Action Center Board (List + Advanced Filters)
• filters: status, SLA, priority, type/source, department, assignee
• views: “My Actions”, “Overdue”, “Escalated”, “New from Surveys”, “From Complaints”, “From Social”
• bulk actions:
• assign
• update status
• escalate
• row quick actions:
• open
• change status
• attach evidence
• request approval
2. Action Detail View (Workflow + Evidence + Approval)
• action header: SLA progress bar, owner, linked source object
• tabs:
• Details
• Evidence & Attachments
• Discussion / Logs
• SLA History
• Approval
• approval flow:
• department closes → PX reviews/approves
• prevent closure without required evidence if configured
• show related complaints/surveys/mentions
3. SLA Control Panel (Admin)
• manage SLA configs by:
• priority/severity
• department/hospital
• manage escalation rules (who gets escalated next)
D) Patient Journey Console (Templates + Instances + Monitoring)
This must be comprehensive because its core to your survey logic.
Journey Template Builder UI
• Journey templates list (EMS/Inpatient/OPD)
• Create/edit template
• Stage builder:
• reorder stages (drag-drop if possible, else order field)
• set trigger_event_code
• set auto_send_survey
• bind survey template
• require physician or not
• Test panel:
• simulate event code on a test encounter to validate mapping
Journey Instances Monitoring
• Instances list with filters:
• journey type
• hospital/department
• stage status
• encounter_id
• patient MRN
• Instance detail:
• progress stepper (stages in sequence)
• each stage card shows:
• status (pending/in progress/completed)
• completion time
• linked dept/physician
• survey instance status + link
• “Send survey now” (admin) / “Resend invitation”
• event history timeline:
• inbound events used to complete stages
• analytics snapshot:
• average score per stage
• negative flags
E) Surveys Console (Templates + Instances + Analytics)
This is not just forms — its a survey control center.
Survey Templates
• list templates
• create/edit template
• question builder:
• add question
• reorder
• bilingual text
• type
• required
• branch logic UI (simple JSON editor acceptable, but validate JSON)
Survey Instances
• list/filter instances (status, journey type, stage)
• detail view:
• invitation status
• responses
• computed score
• sentiment results
• “Create Action” if negative
Survey Analytics Dashboard
• satisfaction by:
• hospital
• department
• physician
• journey type
• stage
• trends over time
• negative survey heatmap by department/stage
F) Survey Public Form (Token Link — Modern UX)
This page is used by patients; it must be mobile-first and clean.
Requirements:
• token-based access (signed token)
• bilingual toggle (Arabic/English)
• progress indicator
• validation and friendly error messages
• thank-you page
• optional NPS style components
• should work beautifully on mobile
G) Social Media Monitoring Console
• mentions feed with filters (platform, sentiment, hospital)
• sentiment trend chart
• “Create Action” button per negative mention
• mention detail page with AI sentiment breakdown
H) Call Center Ratings Console
• interactions list + filters (agent, dept, score range)
• dashboard:
• avg waiting time
• avg satisfaction
• lowest performing agents/depts
• “Create Action” on low rating
I) Analytics / KPI Admin Console
• KPI definitions CRUD
• KPI values list
• KPI dashboard:
• threshold breaches
• trend lines
• department rankings
• ability to trigger actions from KPI breaches
J) Admin “System Configuration” Console
Provide a UI for:
• routing rules (where actions go)
• thresholds (negative survey threshold, dissatisfaction threshold)
• notification gateways configuration (toggle SMS/WhatsApp/email modes)
• integration endpoint configs (placeholders)
6.3 UI Architecture Requirements (Dont Skip)
• Use Django Class-Based Views + ModelForm best practices.
• Use Form validation + server-side errors displayed in UI.
• Use reusable template patterns:
• *_list.html, *_detail.html, *_form.html, partials/*
• Use consistent breadcrumb navigation.
• Use consistent UI status badges:
• Open/Closed/Overdue/Completed
• Add “Empty state” designs when no data exists.
• Add “Saved filters”:
• store user filter presets (DB model SavedViewFilter)
• Add Export:
• CSV/Excel for lists
• PDF for detail summary
6.4 Performance Requirements for UI
• Use server-side pagination everywhere for large lists.
• Use indexes in DB for filtering fields (status, dates, hospital, department).
• Use select_related/prefetch_related in views.
6.5 Acceptance Criteria for UI (Must Pass)
By the end:
• Every core model has full CRUD pages (create/list/detail/edit/delete where safe).
• Dashboards show real aggregated metrics (not placeholder values).
• Action Center supports assignment, evidence upload, closure approval.
• Journey builder can define stages and link surveys.
• Journey instance view shows stage progression and survey status.
• Public survey form works via token and saves responses.
• UI is consistent, modern, and usable as a control panel.
7) Security & Compliance
• RBAC: enforce in DRF permission classes
• Audit logs for critical events
• Data encryption: document at-rest & in-transit expectations
• Data residency: mention KSA hosting requirement in docs
• Rate-limit integration endpoint if possible (simple middleware or DRF throttle)
8) Deliverables Checklist (Must Produce)
When finished, ensure the repository includes:
• Full Django project with apps
• Migrations for all apps
• Admin configuration
• DRF APIs + permissions
• Celery tasks for events, survey sending, SLA reminders
• Docker setup
• .env.example
• README.md
• /docs/ including:
• Architecture overview
• Journey & survey engine explanation
• Integration event contracts (example payload JSON)
• SLA and routing config explanation
• Minimal tests verifying:
• event completes stage
• stage triggers survey
• negative survey triggers action
• overdue action escalates (can be tested with time override)
9) Final Output Requirements
At the end, provide:
1. A list of created apps and their responsibilities
2. Key endpoints list
3. How to run locally (docker compose)
4. Example API calls:
• create journey template
• create encounter journey instance
• post event to complete stage
• verify survey send log
10) Start Now
Proceed phase-by-phase.
After each phase:
• run migrations
• run basic tests
• confirm acceptance criteria met
• then continue.
Do not jump ahead.
Do not leave broken code.
Do not omit the journey-stage survey requirement.