more peabody mappings

This commit is contained in:
Daniel Roth 2026-01-26 12:37:57 +00:00
parent 793ae8098f
commit 3da9a643e0
3 changed files with 110 additions and 30 deletions

View file

@ -29,3 +29,7 @@ class AspectType(str, Enum):
FIRE_RATING = "fire_rating"
EXTERNAL_DECORATION = "external_decoration"
WORK_REQUIRED = "work_required"
AGE_BAND = "age_band"
CONSTRUCTION_TYPE = "construction_type"
CLASSIFICATION = "classification"
SYSTEM = "system"

View file

@ -16,6 +16,8 @@ class Element(str, Enum):
ASBESTOS = "asbestos"
QUALITY_STANDARD = "quality_standard"
CCU = "ccu"
PASSENGER_LIFT = "passenger_lift"
STAIRLIFT = "stairlift"
# ======================
# EXTERNAL ROOF
@ -130,21 +132,40 @@ class Element(str, Enum):
CARBON_MONOXIDE_DETECTION = "carbon_monoxide_detection"
FIRE_DOOR_RATING = "fire_door_rating"
FIRE_RISK_ASSESSMENT = "fire"
INTERNAL_WIRING = (
"internal_wiring" # Is this definitely different from ELECTRICAL_WIRING?
)
# ======================
# COMMUNAL SYSTEMS
# COMMUNAL
# ======================
COMMUNAL_HEATING = "communal_heating"
COMMUNAL_BOILER = "communal_boiler"
COMMUNAL_ELECTRICS = "communal_electrics"
COMMUNAL_FIRE_ALARM = "communal_fire_alarm"
COMMUNAL_EMERGENCY_LIGHTING = "communal_emergency_lighting"
COMMUNAL_LIFT = "communal_lift"
COMMUNAL_DOOR_ENTRY = "communal_door_entry"
COMMUNAL_CCTV = "communal_cctv"
COMMUNAL_BIN_STORE = "communal_bin_store"
COMMUNAL_BIN_STORE_DOORS = "communal_bin_store_doors"
COMMUNAL_BIN_STORE_WALLS = "communal_bin_store_wall"
COMMUNAL_REFUSE_CHUTE = "communal_refuse_chute"
COMMUNAL_FLOOR_COVERING = "communal_floor_covering"
COMMUNAL_KITCHEN = "communal_kitchen"
COMMUNAL_BATHROOM = "communal_bathroom"
COMMUNAL_TOILETS = "communal_toilets"
COMMUNAL_GATES = "communal_gates"
COMMUNAL_LIFT = "communal_lift"
COMMUNAL_PASSENGER_LIFT = "communal_passenger_lift"
COMMUNAL_BALCONY_WALKWAY = "communal_balcony_walkway"
COMMUNAL_PRIMARY_ENTRANCE = "communal_primary_entrance"
COMMUNAL_INTERNAL_DECORATIONS = "communal_internal_decorations"
COMMUNAL_INTERNAL_FLOOR = "communal_internal_floor"
COMMUNAL_WALKWAYS = "communal_walkways"
COMMUNAL_EXTERNAL_DOORS = "communal_external_doors"
COMMUNAL_STAIRS = "communal_stairs"
COMMUNAL_AERIAL = "communal_aerial"
COMMUNAL_AOV = "communal_aov"
# ==========================================================
# HHSRS ALL 29 HAZARDS

View file

@ -20,6 +20,19 @@ PEABODY_ELEMENT_MAP = {
(50, 21): ElementMapping(
element=Element.SMOKE_DETECTION, aspect_type=AspectType.TYPE
),
(50, 22): ElementMapping(
element=Element.STAIRLIFT, aspect_type=AspectType.PRESENCE
),
(100, 3): ElementMapping(element=Element.PROPERTY, aspect_type=AspectType.AGE_BAND),
(100, 14): ElementMapping(
element=Element.PROPERTY, aspect_type=AspectType.CONSTRUCTION_TYPE
),
(100, 16): ElementMapping(
element=Element.PROPERTY, aspect_type=AspectType.CLASSIFICATION
),
(210, 2): ElementMapping(
element=Element.PASSENGER_LIFT, aspect_type=AspectType.TYPE
),
# ==========================================================
# EXTERNAL WALLS
# ==========================================================
@ -238,8 +251,47 @@ PEABODY_ELEMENT_MAP = {
element=Element.SECONDARY_TOILET, aspect_type=AspectType.TYPE
),
# ==========================================================
# COMMUNAL SYSTEMS
# COMMUNAL
# ==========================================================
(51, 1): ElementMapping(
element=Element.COMMUNAL_AERIAL, aspect_type=AspectType.PRESENCE
),
(51, 2): ElementMapping(
element=Element.COMMUNAL_AOV, aspect_type=AspectType.PRESENCE
),
(51, 3): ElementMapping(
element=Element.COMMUNAL_BALCONY_WALKWAY, aspect_type=AspectType.PRESENCE
),
(51, 5): ElementMapping(
element=Element.COMMUNAL_BIN_STORE_DOORS, aspect_type=AspectType.PRESENCE
),
(51, 7): ElementMapping(
element=Element.COMMUNAL_BIN_STORE_WALLS, aspect_type=AspectType.MATERIAL
),
(51, 14): ElementMapping(
element=Element.COMMUNAL_DOOR_ENTRY, aspect_type=AspectType.SYSTEM
),
(51, 17): ElementMapping(
element=Element.COMMUNAL_EXTERNAL_DOORS, aspect_type=AspectType.MATERIAL
),
(51, 20): ElementMapping(
element=Element.COMMUNAL_INTERNAL_DECORATIONS, aspect_type=AspectType.PRESENCE
),
(51, 22): ElementMapping(
element=Element.COMMUNAL_INTERNAL_FLOOR, aspect_type=AspectType.FINISH
),
(51, 27): ElementMapping(
element=Element.COMMUNAL_PASSENGER_LIFT, aspect_type=AspectType.TYPE
),
(51, 28): ElementMapping(
element=Element.COMMUNAL_PRIMARY_ENTRANCE, aspect_type=AspectType.MATERIAL
),
(51, 32): ElementMapping(
element=Element.COMMUNAL_STAIRS, aspect_type=AspectType.FINISH
),
(51, 36): ElementMapping(
element=Element.COMMUNAL_WALKWAYS, aspect_type=AspectType.FINISH
),
(200, 1): ElementMapping(
element=Element.COMMUNAL_BOILER, aspect_type=AspectType.TYPE
),
@ -258,6 +310,18 @@ PEABODY_ELEMENT_MAP = {
(200, 6): ElementMapping(
element=Element.COMMUNAL_FLOOR_COVERING, aspect_type=AspectType.MATERIAL
),
(200, 7): ElementMapping(
element=Element.COMMUNAL_KITCHEN, aspect_type=AspectType.TYPE
),
(200, 8): ElementMapping(
element=Element.COMMUNAL_BATHROOM, aspect_type=AspectType.TYPE
),
(200, 9): ElementMapping(
element=Element.COMMUNAL_TOILETS, aspect_type=AspectType.TYPE
),
(200, 10): ElementMapping(
element=Element.COMMUNAL_GATES, aspect_type=AspectType.TYPE
),
# ==========================================================
# INTERNAL HEATING
# ==========================================================
@ -295,6 +359,24 @@ PEABODY_ELEMENT_MAP = {
element=Element.HOT_WATER_SYSTEM, aspect_type=AspectType.TYPE
),
# ==========================================================
# ELECTRICS
# ==========================================================
(50, 24): ElementMapping(
element=Element.INTERNAL_WIRING, aspect_type=AspectType.MATERIAL
),
(180, 1): ElementMapping(
element=Element.ELECTRICAL_WIRING, aspect_type=AspectType.WORK_REQUIRED
), # Not certain about the AspectType - only example in the sample data is "Full Rewire"
(180, 2): ElementMapping(
element=Element.CONSUMER_UNIT, aspect_type=AspectType.TYPE
),
(180, 3): ElementMapping(
element=Element.SMOKE_DETECTION, aspect_type=AspectType.TYPE
), # Duplicate of (50, 21) - correct?
(180, 4): ElementMapping(
element=Element.CARBON_MONOXIDE_DETECTION, aspect_type=AspectType.TYPE
), # Duplicate of (50, 2) - correct?
# ==========================================================
# HHSRS
# ==========================================================
(54, 1): ElementMapping(
@ -313,31 +395,6 @@ PEABODY_ELEMENT_MAP = {
# unhandled
# 'Element: ELECTRICS - Code: 180, Sub-Element: Wiring - Code: 1',
# 'Element: ELECTRICS - Code: 180, Sub-Element: Consumer Unit - Code: 2',
# 'Element: ELECTRICS - Code: 180, Sub-Element: Smoke Detectors - Code: 3',
# 'Element: ELECTRICS - Code: 180, Sub-Element: Carbon Monoxide Alarms - Code: 4',
# 'Element: COMMUNAL - Code: 200, Sub-Element: Communal Lifts - Code: 5',
# 'Element: COMMUNAL - Code: 200, Sub-Element: Communal Kitchen - Code: 7',
# 'Element: COMMUNAL - Code: 200, Sub-Element: Communal Bathroom - Code: 8',
# 'Element: COMMUNAL - Code: 200, Sub-Element: Communal Toilets - Code: 9',
# 'Element: Internal - Code: 50, Sub-Element: Wiring - Code: 24',
# 'Element: PASSENGER LIFTS - Code: 210, Sub-Element: Lift - Code: 2',
# 'Element: COMMUNAL - Code: 200, Sub-Element: Communal Gates - Code: 10',
# 'Element: GENERAL - Code: 100, Sub-Element: Property Age Band - Code: 3',
# 'Element: GENERAL - Code: 100, Sub-Element: Construction Type - Code: 14',
# 'Element: GENERAL - Code: 100, Sub-Element: Classification - Code: 16',
# 'Element: Communal - Code: 51, Sub-Element: Common Balcony/Walkway - Code: 3',
# 'Element: Communal - Code: 51, Sub-Element: Common Bin Store Doors - Code: 5',
# 'Element: Communal - Code: 51, Sub-Element: Common Bin Store Walls - Code: 7',
# 'Element: Communal - Code: 51, Sub-Element: Common Primary Entrance Material - Code: 28',
# 'Element: Communal - Code: 51, Sub-Element: Common Internal Decorations - Code: 20',
# 'Element: Communal - Code: 51, Sub-Element: Common Internal Floor Finish - Code: 22',
# 'Element: Communal - Code: 51, Sub-Element: Common Walkways Finish - Code: 36',
# 'Element: Communal - Code: 51, Sub-Element: Common External Doors Other - Code: 17',
# 'Element: Communal - Code: 51, Sub-Element: Common Stair Finish - Code: 32',
# 'Element: Communal - Code: 51, Sub-Element: Common Aerial - Code: 1',
# 'Element: Communal - Code: 51, Sub-Element: Common AOV - Code: 2',
# 'Element: Communal - Code: 51, Sub-Element: Common Door Entry System - Code: 14',
# 'Element: Communal - Code: 51, Sub-Element: Common Fire Alarm - Code: 19',
# 'Element: Communal - Code: 51, Sub-Element: Common Internal Doors - Code: 21',
@ -351,7 +408,6 @@ PEABODY_ELEMENT_MAP = {
# 'Element: Communal - Code: 51, Sub-Element: Common Secondary Entrance Material - Code: 30',
# 'Element: Communal - Code: 51, Sub-Element: Common Warden Call System - Code: 37',
# 'Element: Communal - Code: 51, Sub-Element: Common Boiler - Code: 9',
# 'Element: Communal - Code: 51, Sub-Element: Common Passenger Lift - Code: 27',
# 'Element: Communal - Code: 51, Sub-Element: Common Store Doors - Code: 33',
# 'Element: Communal - Code: 51, Sub-Element: Common BMS - Code: 8',
# 'Element: Communal - Code: 51, Sub-Element: Common Booster Pump - Code: 10',
@ -369,6 +425,5 @@ PEABODY_ELEMENT_MAP = {
# 'Element: Communal - Code: 51, Sub-Element: Common Cirulation Space - Code: 12',
# 'Element: Internal - Code: 50, Sub-Element: Door Entry Handset - Code: 8',
# 'Element: Internal - Code: 50, Sub-Element: Loft Insulation - Code: 15',
# 'Element: Internal - Code: 50, Sub-Element: Stairlift - Code: 22',
# 'Element: Internal - Code: 50, Sub-Element: Disabled Hoist Tracking - Code: 7',
# 'Element: Internal - Code: 50, Sub-Element: Disabled Facilities - Code: 26'