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.

Communications

SMS, email, voice and video consultation, driven from the same records. Reminders for appointments and outstanding balances run unattended.

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.