SwimdraftPricingSign inStart free

Patient admission BPMN example

Patient admission covers the journey from a patient arriving at hospital to occupying a ward bed, or being safely sent home. Hospitals map it because it crosses reception, nursing, bed management, and the ward team, and because the queue between triage and bed allocation is where waiting time accumulates. When the process lives in staff heads rather than on paper, every shift handover reinvents it.

The model is a single pool with four lanes and one clinical decision gateway. A message catch event represents the wait for a bed, which is often the longest step in the whole process. The choice worth noticing is that the wait is modelled as an event rather than folded into the bed request task: making it visible is precisely what lets a process team measure it and argue for capacity.

Patient admission: BPMN 2.0 diagram
Patient admission process modelled as a BPMN 2.0 diagram

Standard BPMN 2.0 interchange XML: opens in Camunda Modeler, Signavio, Bizagi, and any other compliant tool.

The process at a glance

Starts when
Patient arrives
Ends with
Patient discharged · Patient admitted
Lanes
Reception · Nursing · Bed management · Ward team
Decisions
Admission required?

How to read this diagram

Arrival at reception triggers the process at the "Patient arrives" start event. Reception registers the patient details, then the Nursing lane triages the patient. The gateway "Admission required?" carries the clinical decision: on the default No branch, nursing gives discharge advice and the process ends at "Patient discharged". On Yes, the Bed management lane requests a ward bed.

After the bed request, the token waits at the "Bed allocated" message event until bed management confirms a space. The Ward lane then completes the admission clerking and physically transfers the patient, and the process closes at the "Patient admitted" end event. Reading the lanes top to bottom shows the handoffs plainly: reception to nursing, nursing to bed management, bed management to ward, with exactly one decision along the way.

BPMN elements used

ElementCountIn this diagram
Start event1Patient arrives
End event2Patient discharged, Patient admitted
Intermediate catch event1Bed allocated
Task2Give discharge advice, Request ward bed
User task3Register patient details, Triage patient, Complete admission clerking
Manual task1Transfer patient to ward
Exclusive gateway1Admission required?
View the BPMN 2.0 XML for this diagram
<?xml version="1.0" encoding="UTF-8"?>
<bpmn2:definitions xmlns:bpmn2="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="Definitions_1" targetNamespace="http://bpmn.io/schema/bpmn" exporter="swimdraft" exporterVersion="1.0">
  <bpmn2:collaboration id="Collaboration_1">
    <bpmn2:participant id="pool_pat" name="Patient admission" processRef="Process_pool_pat" />
  </bpmn2:collaboration>
  <bpmn2:process id="Process_pool_pat" isExecutable="false">
    <bpmn2:laneSet id="LaneSet_pool_pat">
      <bpmn2:lane id="lane_pat_reception" name="Reception">
        <bpmn2:flowNodeRef>start_pat</bpmn2:flowNodeRef>
        <bpmn2:flowNodeRef>t_pat_register</bpmn2:flowNodeRef>
      </bpmn2:lane>
      <bpmn2:lane id="lane_pat_nursing" name="Nursing">
        <bpmn2:flowNodeRef>t_pat_triage</bpmn2:flowNodeRef>
        <bpmn2:flowNodeRef>g_pat_admit</bpmn2:flowNodeRef>
        <bpmn2:flowNodeRef>t_pat_advice</bpmn2:flowNodeRef>
        <bpmn2:flowNodeRef>end_pat_home</bpmn2:flowNodeRef>
      </bpmn2:lane>
      <bpmn2:lane id="lane_pat_beds" name="Bed management">
        <bpmn2:flowNodeRef>t_pat_bed</bpmn2:flowNodeRef>
        <bpmn2:flowNodeRef>ev_pat_bed</bpmn2:flowNodeRef>
      </bpmn2:lane>
      <bpmn2:lane id="lane_pat_ward" name="Ward team">
        <bpmn2:flowNodeRef>t_pat_clerk</bpmn2:flowNodeRef>
        <bpmn2:flowNodeRef>t_pat_transfer</bpmn2:flowNodeRef>
        <bpmn2:flowNodeRef>end_pat_admitted</bpmn2:flowNodeRef>
      </bpmn2:lane>
    </bpmn2:laneSet>
    <bpmn2:startEvent id="start_pat" name="Patient arrives">
      <bpmn2:outgoing>fpat1</bpmn2:outgoing>
    </bpmn2:startEvent>
    <bpmn2:userTask id="t_pat_register" name="Register patient details">
      <bpmn2:incoming>fpat1</bpmn2:incoming>
      <bpmn2:outgoing>fpat2</bpmn2:outgoing>
    </bpmn2:userTask>
    <bpmn2:userTask id="t_pat_triage" name="Triage patient">
      <bpmn2:incoming>fpat2</bpmn2:incoming>
      <bpmn2:outgoing>fpat3</bpmn2:outgoing>
    </bpmn2:userTask>
    <bpmn2:exclusiveGateway id="g_pat_admit" name="Admission required?" default="fpat5">
      <bpmn2:incoming>fpat3</bpmn2:incoming>
      <bpmn2:outgoing>fpat4</bpmn2:outgoing>
      <bpmn2:outgoing>fpat5</bpmn2:outgoing>
    </bpmn2:exclusiveGateway>
    <bpmn2:task id="t_pat_advice" name="Give discharge advice">
      <bpmn2:incoming>fpat5</bpmn2:incoming>
      <bpmn2:outgoing>fpat6</bpmn2:outgoing>
    </bpmn2:task>
    <bpmn2:endEvent id="end_pat_home" name="Patient discharged">
      <bpmn2:incoming>fpat6</bpmn2:incoming>
    </bpmn2:endEvent>
    <bpmn2:task id="t_pat_bed" name="Request ward bed">
      <bpmn2:incoming>fpat4</bpmn2:incoming>
      <bpmn2:outgoing>fpat7</bpmn2:outgoing>
    </bpmn2:task>
    <bpmn2:intermediateCatchEvent id="ev_pat_bed" name="Bed allocated">
      <bpmn2:incoming>fpat7</bpmn2:incoming>
      <bpmn2:outgoing>fpat8</bpmn2:outgoing>
      <bpmn2:messageEventDefinition id="ev_pat_bed_def" />
    </bpmn2:intermediateCatchEvent>
    <bpmn2:userTask id="t_pat_clerk" name="Complete admission clerking">
      <bpmn2:incoming>fpat8</bpmn2:incoming>
      <bpmn2:outgoing>fpat9</bpmn2:outgoing>
    </bpmn2:userTask>
    <bpmn2:manualTask id="t_pat_transfer" name="Transfer patient to ward">
      <bpmn2:incoming>fpat9</bpmn2:incoming>
      <bpmn2:outgoing>fpat10</bpmn2:outgoing>
    </bpmn2:manualTask>
    <bpmn2:endEvent id="end_pat_admitted" name="Patient admitted">
      <bpmn2:incoming>fpat10</bpmn2:incoming>
    </bpmn2:endEvent>
    <bpmn2:sequenceFlow id="fpat1" sourceRef="start_pat" targetRef="t_pat_register" />
    <bpmn2:sequenceFlow id="fpat2" sourceRef="t_pat_register" targetRef="t_pat_triage" />
    <bpmn2:sequenceFlow id="fpat3" sourceRef="t_pat_triage" targetRef="g_pat_admit" />
    <bpmn2:sequenceFlow id="fpat4" name="Yes" sourceRef="g_pat_admit" targetRef="t_pat_bed">
      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression">Yes</bpmn2:conditionExpression>
    </bpmn2:sequenceFlow>
    <bpmn2:sequenceFlow id="fpat5" name="No" sourceRef="g_pat_admit" targetRef="t_pat_advice" />
    <bpmn2:sequenceFlow id="fpat6" sourceRef="t_pat_advice" targetRef="end_pat_home" />
    <bpmn2:sequenceFlow id="fpat7" sourceRef="t_pat_bed" targetRef="ev_pat_bed" />
    <bpmn2:sequenceFlow id="fpat8" sourceRef="ev_pat_bed" targetRef="t_pat_clerk" />
    <bpmn2:sequenceFlow id="fpat9" sourceRef="t_pat_clerk" targetRef="t_pat_transfer" />
    <bpmn2:sequenceFlow id="fpat10" sourceRef="t_pat_transfer" targetRef="end_pat_admitted" />
  </bpmn2:process>
  <bpmndi:BPMNDiagram id="BPMNDiagram_1">
    <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="Collaboration_1">
      <bpmndi:BPMNShape id="pool_pat_di" bpmnElement="pool_pat" isHorizontal="true">
        <dc:Bounds x="20" y="20" width="1420" height="520" />
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="lane_pat_reception_di" bpmnElement="lane_pat_reception" isHorizontal="true">
        <dc:Bounds x="50" y="20" width="1390" height="130" />
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="lane_pat_nursing_di" bpmnElement="lane_pat_nursing" isHorizontal="true">
        <dc:Bounds x="50" y="150" width="1390" height="130" />
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="lane_pat_beds_di" bpmnElement="lane_pat_beds" isHorizontal="true">
        <dc:Bounds x="50" y="280" width="1390" height="130" />
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="lane_pat_ward_di" bpmnElement="lane_pat_ward" isHorizontal="true">
        <dc:Bounds x="50" y="410" width="1390" height="130" />
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="start_pat_di" bpmnElement="start_pat">
        <dc:Bounds x="112" y="59" width="36" height="36" />
        <bpmndi:BPMNLabel><dc:Bounds x="94" y="101" width="73" height="14" /></bpmndi:BPMNLabel>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="t_pat_register_di" bpmnElement="t_pat_register">
        <dc:Bounds x="230" y="37" width="100" height="80" />
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="t_pat_triage_di" bpmnElement="t_pat_triage">
        <dc:Bounds x="380" y="167" width="100" height="80" />
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="g_pat_admit_di" bpmnElement="g_pat_admit">
        <dc:Bounds x="555" y="182" width="50" height="50" />
        <bpmndi:BPMNLabel><dc:Bounds x="529" y="162" width="103" height="14" /></bpmndi:BPMNLabel>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="t_pat_advice_di" bpmnElement="t_pat_advice">
        <dc:Bounds x="680" y="167" width="100" height="80" />
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="end_pat_home_di" bpmnElement="end_pat_home">
        <dc:Bounds x="862" y="189" width="36" height="36" />
        <bpmndi:BPMNLabel><dc:Bounds x="833" y="231" width="94" height="14" /></bpmndi:BPMNLabel>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="t_pat_bed_di" bpmnElement="t_pat_bed">
        <dc:Bounds x="680" y="297" width="100" height="80" />
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="ev_pat_bed_di" bpmnElement="ev_pat_bed">
        <dc:Bounds x="862" y="319" width="36" height="36" />
        <bpmndi:BPMNLabel><dc:Bounds x="846" y="361" width="69" height="14" /></bpmndi:BPMNLabel>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="t_pat_clerk_di" bpmnElement="t_pat_clerk">
        <dc:Bounds x="980" y="427" width="100" height="80" />
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="t_pat_transfer_di" bpmnElement="t_pat_transfer">
        <dc:Bounds x="1130" y="427" width="100" height="80" />
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="end_pat_admitted_di" bpmnElement="end_pat_admitted">
        <dc:Bounds x="1312" y="449" width="36" height="36" />
        <bpmndi:BPMNLabel><dc:Bounds x="1289" y="491" width="82" height="14" /></bpmndi:BPMNLabel>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNEdge id="fpat1_di" bpmnElement="fpat1">
        <di:waypoint x="148" y="77" />
        <di:waypoint x="230" y="77" />
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="fpat2_di" bpmnElement="fpat2">
        <di:waypoint x="330" y="77" />
        <di:waypoint x="360" y="77" />
        <di:waypoint x="360" y="207" />
        <di:waypoint x="380" y="207" />
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="fpat3_di" bpmnElement="fpat3">
        <di:waypoint x="480" y="207" />
        <di:waypoint x="555" y="207" />
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="fpat4_di" bpmnElement="fpat4">
        <di:waypoint x="605" y="207" />
        <di:waypoint x="660" y="207" />
        <di:waypoint x="660" y="337" />
        <di:waypoint x="680" y="337" />
        <bpmndi:BPMNLabel><dc:Bounds x="611" y="187" width="21" height="14" /></bpmndi:BPMNLabel>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="fpat5_di" bpmnElement="fpat5">
        <di:waypoint x="605" y="207" />
        <di:waypoint x="680" y="207" />
        <bpmndi:BPMNLabel><dc:Bounds x="611" y="213" width="17" height="14" /></bpmndi:BPMNLabel>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="fpat6_di" bpmnElement="fpat6">
        <di:waypoint x="780" y="207" />
        <di:waypoint x="862" y="207" />
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="fpat7_di" bpmnElement="fpat7">
        <di:waypoint x="780" y="337" />
        <di:waypoint x="862" y="337" />
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="fpat8_di" bpmnElement="fpat8">
        <di:waypoint x="898" y="337" />
        <di:waypoint x="960" y="337" />
        <di:waypoint x="960" y="467" />
        <di:waypoint x="980" y="467" />
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="fpat9_di" bpmnElement="fpat9">
        <di:waypoint x="1080" y="467" />
        <di:waypoint x="1130" y="467" />
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="fpat10_di" bpmnElement="fpat10">
        <di:waypoint x="1230" y="467" />
        <di:waypoint x="1312" y="467" />
      </bpmndi:BPMNEdge>
    </bpmndi:BPMNPlane>
  </bpmndi:BPMNDiagram>
</bpmn2:definitions>

Frequently asked questions

Should the patient be a separate pool in this model?

Not here. The patient is the subject the process acts on, not an independent participant exchanging messages with it, so a lane or pool for them would add clutter without meaning. A patient pool earns its place in flows where the patient genuinely acts, for example booking an outpatient appointment or responding to a letter.

Why is "Transfer patient to ward" a manual task?

A manual task is work performed physically, without any system involvement, and moving a patient to a ward is exactly that. Registration and clerking touch hospital systems, so they are typed differently. Distinguishing manual work matters in healthcare models because those steps cannot be automated away and constrain staffing.

How could this model show a four hour admission target?

Attach a timer to the waiting stage, typically as a boundary event on the bed wait or a parallel timer path started at triage, that escalates to the site manager when the target is at risk. Modelling the escalation explicitly turns the diagram from a description into something you can hold the process to.

Related BPMN examples

Generate your own version of this diagram

Describe how the process works in your organisation: plain English, meeting notes, a transcript, or a spreadsheet. Swimdraft turns it into a spec-validated BPMN 2.0 diagram you can edit in the browser and export as .bpmn, SVG, or PNG.

Start free

No credit card required