Open source hospital management software
ICTHospital runs a hospital or a clinic end to end. Patients, appointments, wards, pharmacy, laboratory and billing, with SMS and voice reminders built in rather than bolted on. Laravel 12, 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 reminder nobody sent. 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 and a patient identifier you can print as a barcode. Only the name is required, so a walk-in with no paperwork is still registerable. Every appointment, prescription and invoice hangs off the record.
Medical history
Allergies, past operations and chronic conditions, with a scan or a report attached. The patient details are kept as they were on the day the note was written, so an old entry still reads correctly.
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. Two clerks cannot book the same slot.
Doctors and departments
A doctor register organised by department, with the upcoming appointment count on every row. Renaming a department carries its doctors with it. Nurses, pharmacists, laboratory staff, receptionists and accountants have their own lists.
Wards and beds
Bed categories, allotment and release, occupancy at a glance, and admission through to discharge. A bed is free when no admission points at it, so the ward board cannot disagree with the records.
Prescriptions
Write against the medicine catalogue, record dosage and instructions, and print it. Each drug is its own row, which is what makes "which patients are on this drug" a question you can answer.
Laboratory
A test catalogue with reference ranges, requests raised against a patient, and a result per test. A request can be part reported, so the bloods come back while the culture is still growing.
Pharmacy
Stock by category and expiry, counter sales, and purchase expenses. Stock comes out in the same transaction as the sale, so the shelf follows what was handed over. The medicine catalogue sits behind prescribing and dispensing alike.
Billing and payments
A service price list, invoices with line items and discounts, and part payment as a row rather than a single figure. Settlement is worked out from the payments, so nobody types it and it cannot be wrong.
Reports
Outstanding lab work, prescribed against dispensed, aged debtors, and bed occupancy with length of stay. Every figure is worked out when you open the report, so none of it drifts.
Accounting
Income and expenses by sector, printable period reports, and a balance you can hand to an accountant.
Roles and permissions
Ninety permissions across Admin, Doctor, Nurse and Accountant, enforced on every clinical screen. A receptionist books appointments without seeing the ledger, and the menu hides what they cannot open. 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.
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 12 on PHP 8.3
- MySQL or MariaDB
- ICTCore and FreeSWITCH for voice and SMS
- 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.
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.