Skip to content

Frontend Map

Vue 3 Patient Portal

Location: patient_portal/Served at: /patient-portalTech: Vue 3.2, Frappe UI 0.1, Tailwind CSS 3.4, Vite 4.4, Feather Icons Build output: /assets/healthcare/patient_portal/

Component Tree

PatientPortal.vue (root)
├── AppointmentModel.vue          # Lists appointments in card grid
│   └── BookAppointmentModel.vue  # Multi-step booking wizard (modal)
│       ├── DepartmentSelector    # Department grid with images
│       ├── PractitionerSelector  # Practitioner grid with photos
│       ├── Calendar              # Date picker
│       └── Payment               # Payment gateway integration
└── DiagnosticModel.vue           # Lists test orders and results

API Usage by Component

ComponentAPI MethodPurpose
Rootget_logged_in_patient()Identify current patient
Rootget_settings()Load Healthcare Settings
AppointmentModelget_appointments()Fetch appointment list
BookAppointmentget_departments()Portal-enabled departments
BookAppointmentget_practitioners(dept)Practitioners by dept
BookAppointmentget_slots(prac, date)Available time slots
BookAppointmentget_patients()Self + relations
BookAppointmentget_fees(prac, date)Fee details
BookAppointmentmake_appointment(...)Create appointment
Paymentget_payment_link(...)Initiate payment
DiagnosticModelget_orders()Test orders + results
DiagnosticModelget_print_format(dt, name)Print config

Tab-based (no client-side router). Tabs: Appointments, Diagnostics.

Realtime

Socket.IO via patient_portal/src/socket.js for live updates.


Frappe Desk UI (Healthcare)

Workspaces (sidebar navigation)

WorkspaceKey DocTypes / Pages
HealthcareDashboard, Patient, Practitioner
OutpatientPatient Appointment, Patient Encounter, Fee Validity
InpatientInpatient Record, Nursing Task, Discharge Summary
DiagnosticsLab Test, Sample Collection, Observation, Diagnostic Report
InsuranceInsurance Payor, Insurance Claim, Coverage
RehabilitationTherapy Plan, Therapy Session, Patient Assessment
SetupHealthcare Settings, Service Units, Departments, Templates

Custom Desk Pages

PageRoutePurpose
Patient History/app/patient-historyPaginated medical timeline for a patient
Patient Progress/app/patient-progressTherapy progress charts, heatmaps, assessments

JS Overrides

ERPNext DocTypeJS FileAdds
Sales Invoicepublic/js/sales_invoice.js"Get Healthcare Services to Invoice" button
Healthcare Practitionerpublic/js/healthcare_practitioner.jsExtended practitioner form UI

Legacy Web Forms (Portal)

Web FormRouteAuthPurpose
Patient Registration/patient-registrationGuestNew patient signup
Patient Appointments/patient-appointmentsLoginList appointments
Personal Details/personal-detailsLoginEdit patient profile
Prescription/prescriptionLoginView prescriptions (read-only)
Lab Test/lab-testLoginView lab results (read-only)

All authenticated web forms use custom has_website_permission handlers that verify Patient.user_id == session.user.