From the doctor's admit order to the patient in a bed: admission queue, one-page registration with coverage check, deposit and on-screen consents, a live bed board, ward hand-over, wristbands and reports.
Spring Boot 4 · Java 17+ · Microsoft SQL Server
User Guide · Version 1.0.0
Admitting a patient involves many people: the doctor decides, the admission desk checks who the patient is and who pays, takes a deposit and the consents, finds a bed, and the ward gets ready. Inpatient Admission Starter puts all of this on one screen per person, so nobody needs to phone around:
Every step is time-stamped, so the reports show how long patients wait at each stage.

database/01-create-database.sql, change the password in it and run it as an administrator:
sqlcmd -S localhost\SQLEXPRESS -E -C -i database\01-create-database.sql
set DB_PASSWORD=the-password-you-chose mvnw.cmd spring-boot:run
run-local.cmd / run-local.sh do the same. If your SQL Server is not localhost\SQLEXPRESS,
also set DB_URL (examples in env.example).IpdAdmissionApplication with the environment variable DB_PASSWORD.For a real hospital, read docs/DEPLOY.md: switch the demo data off, set your own keys, use HTTPS and back up the database.
All demo users have the password Demo@2026. On the sign-in page you can click a name to sign in.
| User | Role | Try |
|---|---|---|
clerk | Admission clerk | Register the first patient in the queue and admit them |
dr.hale | Doctor (internal medicine) | Open a patient and order an admission |
bedmanager | Bed manager | Bed board, block a bed for maintenance, move a patient |
nurse | Ward nurse | Wards: receive the patients on the way, discharge |
cashier | Cashier | Take a deposit and print the receipt |
housekeeping | Housekeeping | Mark beds clean |
manager | Nursing / admissions manager | Reports, exceptions, waive a deposit |
auditor | Auditor | Audit log (read only) |
admin | System admin | Everything, including set-up and users |
The demo hospital "Maple Hollow General Hospital" has 8 wards with 88 beds, 6 coverage plans with invented payers, about 420 patients with their outpatient visits, three weeks of admissions, a few orders waiting in the queue, two registrations in progress and three patients on the way to a ward. All names and numbers are invented.



Admission queue lists the open orders: emergencies first, then the longest waiting. The waiting time turns amber after 45 minutes and red after 2 hours. Tabs show orders waiting, being registered, admitted and cancelled.
Press Register to start. If someone else has started, the button says Continue and shows who. An order nobody needs any more is cancelled from its page (with a reason).

Registration is one page with five sections. The checklist on the left shows what is done (green tick) and what is still missing; work in any order, each section saves on its own, and you can leave and come back from the queue. Admit patient is enabled when every required step is done.

With a card reader at your desk: put the patient's ID card in the reader and press Read card. The page shows the name on the card, the last 4 digits and whether it matches the patient's record. If the record has no ID number yet, it is added from the card. If the card belongs to someone else, it is refused. Press Use this card.
The Desk box must match the desk code your reader sends (remembered on this computer). Without a reader, or for a patient who cannot show a card, use I checked a photo document or Known patient.
X are not eligible; pre-authorizations
above 20,000 stay pending and member numbers starting with D are denied.The deposit is worked out for you and shown with its parts:
Enter the amount, how it was paid (cash, card with its last 4 digits, transfer or QR with the reference) and press Take payment. A receipt with a gap-free number is issued; print it from the green message or the payments table. Pressing twice does not take the money twice. A manager can Waive deposit with a reason.
Emergency admissions may be completed before the deposit is paid (Settings); they then appear in Exceptions until paid. Top-ups are taken from the admission page later.

Press Sign next to a form. Read the text with the patient; choose who signs (the patient or a relative) and let them sign in the box with a finger, a pen or the mouse. Save signature stores the exact text, the signature, the time and you as the witness. Signed consents cannot be changed; View prints one.

The Bed section lists free beds that fit the patient, best match first: the ward type and room class the doctor asked for and the room class the plan pays for. Beds in a ward for the other sex, children's beds for adults, and (when isolation was ordered) rooms without isolation are not offered. Press a bed to hold it.
Or press Choose on the bed board to pick from the map: free beds show Choose.
A held bed is kept for 2 hours (Settings). If the admission is not completed in time, the bed is released and the registration appears in Exceptions. If two clerks press the same bed at the same moment, only one gets it; the other is asked to choose another bed.

When the checklist is complete, press Admit patient and confirm. The system gives the AN, marks the bed occupied, makes the patient an inpatient and tells the ward. Press Print wristband: it has the name, HN, AN, birth date, ward and bed, a barcode and a QR code, and marks for allergies, isolation and fall risk. Print the Face sheet for the chart.


Bed board shows every bed by ward and room:
| Colour | Status | Meaning |
|---|---|---|
| Green | Available | Clean and free |
| Amber | Reserved | Held for a registration (minutes left shown) |
| Red | Occupied | Patient, age, day of stay, flags |
| Blue | Cleaning | Freed by a discharge or transfer |
| Grey | Maintenance / blocked | Out of use, with the reason |
Click a colour above the board to show only those beds; filter by ward or room class. Click a patient to open the admission. A bed manager clicks a free, cleaning or out-of-use bed to change its status. The board refreshes every minute.


Wards lists every ward with its occupancy and the patients on the way. Open your ward: Patients on the way shows who is coming, to which bed, with diagnosis, doctor and allergies; the list updates by itself when a new patient is admitted. When the patient arrives, press Arrived. A patient not in the ward an hour after admission (Settings) appears in Exceptions.
From the admission page: Move bed (choose a free bed and give the reason; the old bed goes to cleaning) and Discharge (home, transfer to another hospital, against medical advice or deceased; the bed goes to cleaning).


Housekeeping staff see only the beds to clean, longest waiting first, and press Clean when a bed is ready. The page works well on a phone and refreshes by itself. Isolation rooms are marked so the right cleaning procedure is used.

Reports (choose the dates): admit orders, admissions and discharges per day, turnaround from order to admitted and from admitted to the ward (median and the time within which 90% were done), registration time, average length of stay, payer mix, deposits by payment method, occupancy by ward now. Admissions CSV downloads the admissions for Excel.
Exceptions lists what needs a person; write what was done and press Resolved. Events that could not be sent to another system can be retried here.




Users & roles creates accounts. The role decides what a person may see and do; the table on the user page shows every permission per role. Pages hide what you may not use and the server checks the permission again for every action.
| Role | May |
|---|---|
| Doctor | See patients, order and cancel admissions, see beds, discharge |
| Admission clerk | Register patients and admissions, take deposits, hold beds |
| Bed manager | Beds: hold, block, move patients; reports |
| Ward nurse | Receive patients, move, discharge |
| Cashier | Take deposits |
| Housekeeping | See beds, mark clean (no patient names) |
| Nursing / admissions manager | All admission work, waive deposits, reports |
| System admin | Everything, set-up and users |
| Auditor | Audit log and reports |


In API clients create a key for your hospital information system and for each ID card reader agent. The HIS can send
admit orders, read bed availability and the status of an admission; card readers post what they read. Set a webhook URL in
Settings to receive admission.completed, patient.transferred and patient.discharged
events. Details and examples are in docs/API.md.
The list under the button and the checklist show what is missing. Common causes: eligibility not checked, a required consent not signed, the bed hold expired, or pre-authorization not approved for an elective admission.
It does not fit the patient (ward for the other sex, children's ward, isolation) or is not free. Choose a ward in the filter to see all its free beds, or look at the bed board.
Before the patient reaches the ward, Cancel admission on the admission page frees the bed and cancels the order. Deposits already taken appear in Exceptions for a refund. The AN is kept (numbers never go back).
In the demo they are part of the sample data. In a hospital they come from your outpatient system: load them into the
OPD_VISIT, OPD_DIAGNOSIS, OPD_MEDICATION and OPD_LAB_RESULT tables (or a view), or
send admit orders through the API.
Colours are CSS variables at the top of static/css/app.css and static/css/ipd.css; the logo is
static/img/favicon.svg and the hospital name is in Settings.