Overview

CareChart is a self-hosted hospital management system built on Laravel 12 with a server-rendered Blade + Bootstrap 5 frontend — no Vue, no React, no build step. It covers thirteen staff roles across twenty-three modules: patient intake through discharge, pharmacy and lab operations, billing and insurance, HR and payroll, and hospital-wide security and audit logging.

This document describes what each module does and how the roles relate to each other. For installation steps, see the Setup Guide.

Tech Stack

LayerChoice
Backend frameworkLaravel 12, PHP 8.2+
FrontendBlade templates, Bootstrap 5 (CDN), Bootstrap Icons
DatabaseMySQL 8 / MariaDB 10.4+, 45+ tables
File storageLocal disk — public/uploads/, no S3 required
AI providerOpenAI Chat Completions API, optional, admin-toggleable
AuthSession-based, single guard, role column on users
2FASelf-implemented TOTP (RFC 6238) — no third-party SMS/email service
No Node.js anywhere. Every script and stylesheet loads from a CDN. There is nothing to compile — clone, composer install, migrate, and you're serving pages.

Roles & Permissions

Every login lands on a dashboard built for that role specifically — nobody sees a menu item they can't use. Route-level middleware enforces this on the server, not just by hiding sidebar links.

RolePrimary areaTypical dashboard
super_adminEverything, including audit logsHospital-wide stats
hospital_adminEverything except audit logsHospital-wide stats
doctorAppointments, OPD, lab/radiology ordersToday's schedule
nurseAssigned tasks, vitals roundsPending task list
receptionistPatients, appointments, front deskGeneral admin view
cashierBilling and paymentsGeneral admin view
pharmacistDispensing, medicine catalogPending prescriptions
lab_technicianLab orders and resultsPending lab orders
radiologistRadiology orders and reportsPending radiology orders
accountantBilling, expenses, reportsRevenue reports
hr_managerEmployees, payrollEmployee list
insurance_officerProviders, policies, claimsGeneral admin view
patientOwn records onlyOwn appointments & bills

Patients & Appointments

Patients self-register and book their own appointments by department and doctor; front-desk staff can do the same on their behalf, including a walk-in patient who's never logged in. Every appointment carries a full status lifecycle: pending → confirmed → completed, cancelled, or no-show.

OPD Visits

An OPD visit is where the record actually gets written: chief complaint, vitals, diagnosis, and a prescription with as many line items as the case needs. An optional AI summary condenses free-text notes into a clean clinical note.

A visit is also the entry point for ordering lab and radiology tests — the doctor stays on one screen instead of jumping between modules.

IPD & Wards

Wards hold beds; beds hold one admission at a time. Admitting a patient occupies the bed automatically, discharging frees it. Day-count and ward daily-rate feed straight into billing.

Emergency

Triage by severity (critical / urgent / semi-urgent / non-urgent), register a patient who's never been seen before in the same form, and assign a doctor. "Admit to IPD" from an emergency case opens a real admission form pre-filled with that patient and links back to the case — there's no separate "admitted" checkbox that isn't actually backed by a bed.

Nursing

Nurses get their own portal: a task list assigned by admins or doctors (vitals check, medication, dressing, other), and a vitals log tied to a specific admission. Completing a task and logging vitals are two clicks, not a form hunt.

Operation Theatre

A small theatre status board (available / occupied / maintenance) and a surgery schedule. Marking a surgery "in progress" occupies its theatre; marking it complete or cancelled frees it again — the board is always accurate without a manual toggle.

Pharmacy

A medicine catalog with stock, reorder level, batch number, and expiry. Dispensing works two ways — against a doctor's prescription, or a walk-in/OTC sale — and both immediately decrement stock and flag anything that drops below its reorder level.

Laboratory

A lab test catalog (name, sample type, normal range, price). Doctors order from the OPD visit; technicians move an order from pending → sample collected → completed, entering a result and remarks per test.

Radiology

Same shape as the lab module, tuned for imaging: modality (X-ray/CT/MRI/ultrasound), findings, impression, and an optional uploaded report file the patient can later download from their own portal.

Inventory

General hospital supplies and equipment — separate from the pharmacy's medicine stock — organized by category, with stock in/out/adjustment transactions and the same low-stock flagging pattern used everywhere else in the app.

Blood Bank

A donor registry, per-blood-group stock levels, and patient blood requests. Issuing a request decrements the matching group's stock and notifies hospital admins if that group drops low.

Ambulance

A small fleet register and a trip log — dispatch, complete, or cancel a trip, and the vehicle's availability status updates itself accordingly.

Billing

Itemized bills across every category — consultation, OPD, IPD, pharmacy, lab, procedure, other — with partial payments, running balance, and a print-friendly invoice layout that hides everything except the invoice itself when you hit print.

Insurance

An insurance provider directory, per-patient policies with expiry tracking, and a claims workflow (pending → approved/rejected → paid) that can optionally tie back to a specific bill.

HR & Payroll

Employee profiles wrap an existing staff login — designation, joining date, salary structure. Monthly payroll generates net pay from that structure for every active employee at once, then tracks paid/pending per person.

Finance & Reports

Expense logging by category, and a reports dashboard that nets total revenue (bills + pharmacy sales) against expenses for a selected date range, alongside appointment volume and top-performing doctors.

AI Features

Two features, both optional, both toggled from a single switch in Admin → Settings:

Off by default. Without an OpenAI API key configured, both features degrade gracefully — patients are told to book an appointment directly, and the rest of the app is unaffected.

Security & Audit

Notifications

An in-app bell icon with a live unread count — no email or SMS service required. Currently wired into new appointment requests, appointment status changes, nursing task assignment, and low-stock alerts for pharmacy and blood bank.

Extending CareChart

A few things worth knowing before you add your own module:

Common Questions

For pricing, licensing, and demo-account questions, see the FAQ on the main product page. For every install step in order, see the Setup Guide.