HOSP-EVAC)In acute healthcare facilities, life safety relies on Progressive Horizontal Evacuation (PHE). Rather than immediately evacuating patients down vertical stairwells, non-ambulant and intensive-care patients are moved horizontally through fire sub-compartment barriers into adjoining safe refuges on the same floor. Evacuation routes, doors, and corridors must accommodate rapid bed transport and continuous clinical life support.
A critical defect in digital engineering is relying naively on nominal door frame or catalog widths. When an architect specifies a standard $915\text{ mm}$ door leaf:
$W_{\text{effective}} = W_{\text{nominal}} - (t_{\text{frameStop}} + t_{\text{leaf}})$
Where:
frameStopDeduction) $= 30\text{ mm}$ ($0.030\text{ m}$)openLeafThicknessDeduction) $= 44\text{ mm}$ ($0.044\text{ m}$)$W_{\text{effective}} = 915\text{ mm} - 30\text{ mm} - 44\text{ mm} = \mathbf{841\text{ mm}} ; (0.841\text{ m})$
For double doors: $W_{\text{effective, double}} = W_{\text{nominal}} - (t_{\text{frameStop}} + 2 \times t_{\text{leaf}})$ $W_{\text{activeLeaf}} = \left(\frac{W_{\text{nominal}}}{2}\right) - (t_{\text{frameStop}} + t_{\text{leaf}})$
The modeled door provides only $841\text{ mm}$ of unobstructed opening—violating the statutory $900\text{ mm}$ wheelchair requirement and critically failing the $1,200\text{ mm}$ acute bed transfer requirement.
DoorClearWidthHandler resolves nominal dimensions through a robust, deterministic hierarchy:
ClearWidth or OverallWidth populated on the element row.IFCDynamic.ifcAspect_Dimensions (ifcWidth, ifcHeight, ifcThickness, ifcTrim_Width, ifcTrim_Projection_Int, ifcTrim_Projection_Ext) queried from the door instance or its TypeDefinition.Id.IFCDynamic.IfcDoor (ClearWidth, OverallWidth, OperationType)."0915 x 2032mm", "1730 x 2134mm", "0813mm").BBoxLow and BBoxHigh.The handler queries bis.SpatialLocationElement spaces to determine which room the door connects to. If the door center falls within or adjacent to an acute clinical space (ICU, OR, OPERATING, THEATRE, SURGERY, WARD, IN-PATIENT, BEDROOM, EMERGENCY), it automatically enforces bedDoorThreshold: 1.20m; otherwise, it enforces general access 0.90m.
The handler harvests columns and railings (%Column%, %Railing%, %Handrail%) to evaluate swing obstructions, and emits DOOR_SWING_ENVELOPE validation geometry displaying nominal width, effective clear width, and clinical context.
{
"nominalThreshold": 0.90,
"bedDoorThreshold": 1.20,
"frameStopDeduction": 0.030,
"openLeafThicknessDeduction": 0.044,
"checkSwingClash": true,
"unit": "m",
"comparisonOperator": ">="
}
Rather than relying on simple bounding boxes, BIM Checker evaluates the true 2D cross-section polygon of the circulation space. The analytical engine identifies localized pinch points caused by structural columns, railings, and wall recesses along the passage.
When the clear circulation width drops below the statutory 2.00 m threshold, the system flags a statutory defect and displays a 3D PINCH_SEGMENT across the bottleneck in the viewport alongside the bounded FOOTPRINT_POLYGON.
{
"nominalThreshold": 2.00,
"unit": "m",
"comparisonOperator": ">=",
"checkObstacleEncroachment": true
}
"Corridor clear passage width 1.74m fails to meet statutory 2.00m requirement per NHS HBN 00-04. (True-geometry bottleneck detected at pinch point)."
BIM Checker constructs a floor-level walkable space network across room and corridor boundaries, routing the shortest compliant egress path around physical wall and shaft obstructions to the nearest protected exit door or staircore per NHS HTM 05-02.
Paths exceeding statutory limits ($\le 30.0\text{ m}$ direct / $\le 15.0\text{ m}$ dead-end) are highlighted in the 3D viewport with interactive ESCAPE_ROUTE_PATH geometry.
{
"nominalThreshold": 30.0,
"maxDirectDistance": 30.0,
"maxDeadEndDistance": 15.0,
"unit": "m",
"comparisonOperator": "<="
}
"Escape travel distance of 34.20m exceeds limit of 30.00m to nearest protected stair 'STAIR-CORE-02' on Level 2 (direct distance 28.10m)."
BIM Checker evaluates flight clear width and pitch using 3D solid stair geometry, verifying unobstructed walking width against structural encroachments while accounting for flight rotation in the floor plan. Integral stair components (such as handrails and stringers) are intelligently recognized to prevent false positive obstructions.
Violations exceeding statutory pitch (
gt; 33^\circ$) or falling below clear width (lt; 1.20\text{ m}$) are flagged with 3D validation geometry.{
"nominalThreshold": 1.20,
"maxPitch": 33.0,
"unit": "m",
"comparisonOperator": ">="
}
| Discipline | Element Category | Parameter / Property Set | Expected Value / Type | Evaluated In |
|---|---|---|---|---|
| Architectural | Doors (OST_Doors / IfcDoor) |
Width, Frame Width, Thickness |
Positive dimensions in meters or mm | HOSP-EVAC-001 |
| Architectural | Doors (OST_Doors / IfcDoor) |
Pset_DoorCommon.ClearWidth |
Clear passage width dimension | HOSP-EVAC-001 |
| Architectural | Doors (OST_Doors / IfcDoor) |
Pset_DoorCommon.IsExternal |
true for final discharge / exterior doors |
HOSP-EVAC-003 |
| Architectural | Corridors (OST_Rooms / IfcSpace) |
Name |
Contains Corridor, Circulation, Passage, or Hallway |
HOSP-EVAC-002 |
| Structural | Columns (OST_StructuralColumns / IfcColumn) |
3D Solid Geometry (BBoxLow, BBoxHigh) |
True physical bounding volume | HOSP-EVAC-002, HOSP-EVAC-004 |
| Architectural | Walls (OST_Walls / IfcWall) |
3D Solid Geometry | Uninterrupted boundary geometry | HOSP-EVAC-003 |
| Circulation | Stairs (OST_Stairs / IfcStairFlight) |
3D Solid Geometry (BBoxLow, BBoxHigh) |
Solid flight with valid rise and run | HOSP-EVAC-004, HOSP-EVAC-003 |
SELECT
d.ECInstanceId AS doorId,
d.UserLabel AS doorLabel,
d.CodeValue AS doorCode,
ext.ifcIsExternal AS isExternal
FROM bis.GeometricElement3d d
LEFT JOIN IFCDynamic.ifcAspect_Pset_DoorCommon ext ON ext.Element.Id = d.ECInstanceId
WHERE (ec_className(d.ECClassId, 's.c') LIKE '%Door%' OR d.UserLabel LIKE '%Door%')
SELECT
s.ECInstanceId AS stairId,
s.UserLabel AS stairLabel,
ec_className(s.ECClassId, 's.c') AS ecClass,
s.BBoxLow,
s.BBoxHigh
FROM bis.GeometricElement3d s
WHERE (ec_className(s.ECClassId, 's.c') LIKE '%Stair%' OR s.UserLabel LIKE '%Stair%')