Open source hospital management software
ICTHospital runs a hospital or a clinic end to end. Patients, appointments, wards, pharmacy, laboratory and billing, with SMS, voice and video consultation built in rather than bolted on. Laravel 11, GPL-3.0, yours to run on your own servers.
One system, from the front desk to the discharge letter
Most hospital software makes you choose between the clinical side and the communication side. You end up with a patient record in one place, an SMS gateway in another, and a video consultation link pasted into an email. ICTHospital keeps them together, because the reminder that stops a missed appointment is part of running the clinic, not an add-on to it.
It is open source under the GNU General Public License v3.0. Read the code, change it, run it on your own hardware, and keep the patient data where your regulator expects it to be. The full source is on GitHub.
What is inside
Patient records
Registration, demographics, blood group, medical history, uploaded documents and a patient identifier you can print as a barcode. Every payment, appointment and prescription hangs off the record.
Appointments
Book against a doctor and a time slot, see the day at a glance, and let the system text the patient the day before. Vitals are captured on the appointment itself.
Doctors and staff
Doctors, nurses, receptionists, pharmacists and laboratory staff, organised by department, with schedules, procedure assignment and payroll.
Wards and beds
Bed categories, allotment and release, occupancy at a glance, and admission through to discharge without a spreadsheet in the middle.
Prescriptions
Write a prescription against the medicine catalogue, record dosage and instructions, and print or send it. It stays attached to the patient history.
Laboratory
A test catalogue by category, orders raised from a consultation, results entered against the patient, and reports the clinician can find later.
Diagnostics and reports
Imaging and diagnostic reports tied to the invoice that paid for them, so the clinical record and the billing record never disagree.
Pharmacy
Stock by category, expiry dates, counter sales, purchase expenses and the margin between them. The medicine catalogue sits behind prescribing and dispensing alike.
Blood bank
Donors, groups and stock levels, with the issue record tied to the patient who received the unit. Useful in any hospital that keeps its own supply.
Billing and payments
Invoices with line items, discounts, tax, deposits and part payments. Split what the hospital keeps from what the doctor is owed. Payment gateways supported.
Accounting and payroll
Income and expenses by sector, printable period reports, a balance you can hand to an accountant, and staff payroll alongside it.
Roles and permissions
Ninety permissions across Admin, Doctor, Nurse and Accountant. A receptionist books appointments without seeing the ledger. Every action is logged.
The communication layer is ours too
The messaging in ICTHospital is not a third party gateway with a plugin in front of it. It runs on ICTCore, our own open source communications framework built on FreeSWITCH. The same engine sits under our fax server and our PBX, so it is exercised daily rather than kept alive for one product.
That matters for a hospital. Appointment reminders and payment reminders run as scheduled jobs against your own patient records, and the call audio does not have to leave your infrastructure to reach a vendor. Video consultation targets LiveKit.
If you want conversational AI answering the phone, that already ships in ICTContact, our contact centre platform, and the media path behind it is open source as well.
Built on
- Laravel 11 on PHP 8.3
- MySQL or MariaDB
- ICTCore and FreeSWITCH for voice and SMS
- LiveKit for video consultation
- GNU General Public License v3.0
- Docker image for evaluation
Run it yourself
Clone it, point it at a database, and go. There is a Docker compose file in the repository if you would rather not install PHP to look at it.
Because the schema came from an older system, the project ships a tool that turns text dates into real date columns and adds the missing foreign keys, and it refuses to convert anything it cannot read cleanly. That is the sort of detail you only get to see when the source is open.
ICTHospital on GitHub has the installation steps, the licence and the issue tracker. Bug reports and pull requests are welcome. If you would rather we ran it for you, or you need it changed to fit how your hospital already works, talk to us.
We wrote up the rebuild in detail, including the schema tool and the ten bugs a permission check had been hiding: rebuilding a hospital system on Laravel 11.
The rest of the platform
ICTHospital is one of a set of systems that share the same communication engine, so they interoperate rather than merely coexist.
Contact centre and outbound calling with a built in AI voice agent. Use it for patient outreach, recalls and follow up campaigns.
Open source CRM with the call centre attached. Useful where a hospital runs a referral network or a paid diagnostics business.
Online assessment with AI assisted grading. Hospitals use it for clinical staff training, competency checks and revalidation.
Mental health support and legal guidance with a live AI assistant, for services that need a confidential front door.
The open source communications framework underneath all of it. Voice, SMS and fax over FreeSWITCH.
Every repository we publish, including the PBX, the fax server, the dialer and the MCP servers.