More peabody -> domain mapping

This commit is contained in:
Daniel Roth 2026-01-26 10:25:03 +00:00
parent 2d77511650
commit 793ae8098f
3 changed files with 84 additions and 29 deletions

View file

@ -15,6 +15,7 @@ class Element(str, Enum):
ACCESSIBLE_HOUSING_REGISTER = "accessible_housing_register"
ASBESTOS = "asbestos"
QUALITY_STANDARD = "quality_standard"
CCU = "ccu"
# ======================
# EXTERNAL ROOF
@ -94,18 +95,22 @@ class Element(str, Enum):
KITCHEN = "kitchen"
KITCHEN_SPACE_LAYOUT = "kitchen_space_layout"
TENANT_INSTALLED_KITCHEN = "tenant_installed_kitchen"
KITCHEN_EXTRACTOR_FAN = "kitchen_extractor_fan"
# ======================
# INTERNAL BATHROOM
# ======================
BATHROOM = "bathroom"
SECONDARY_BATHROOM = "secondary_bathroom"
SECONDARY_TOILET = "secondary_toilet"
BATHROOM_EXTRACTOR_FAN = "bathroom_extractor_fan"
# ======================
# INTERNAL HEATING / WATER
# ======================
CENTRAL_HEATING = "central_heating"
HEATING_BOILER = "heating_boiler"
HEATING_DISTRIBUTION = "heating_distribution"
HEATING_EXTENT = "heating_extent"
SECONDARY_HEATING = "secondary_heating"
HOT_WATER_SYSTEM = "hot_water_system"
COLD_WATER_STORAGE = "cold_water_storage"
@ -113,6 +118,7 @@ class Element(str, Enum):
HEATING_SYSTEM = "heating_system"
BOILER_FUEL = "boiler_fuel"
WATER_HEATING = "water_heating"
PROGRAMMABLE_HEATING = "programmable_heating"
# ======================
# INTERNAL ELECTRICS / FIRE

View file

@ -61,8 +61,8 @@ LBWF_ELEMENT_MAP: dict[str, ElementMapping] = {
# INTERNAL HEATING
# ==========================================================
"INTCHEXTNT": ElementMapping(
element=Element.HEATING_EXTENT,
aspect_type=AspectType.CONFIGURATION,
element=Element.CENTRAL_HEATING,
aspect_type=AspectType.EXTENT,
),
"INTCHDIST": ElementMapping(
element=Element.HEATING_DISTRIBUTION,

View file

@ -10,6 +10,16 @@ PEABODY_ELEMENT_MAP = {
(100, 1): ElementMapping(element=Element.PROPERTY, aspect_type=AspectType.TYPE),
# (100, 3): ElementMapping(element=Element.PROPERTY, aspect_type=AspectType.AGE),
# (100, 14): ElementMapping(element="property", aspect_type="construction_type"),
(50, 2): ElementMapping(
element=Element.CARBON_MONOXIDE_DETECTION, aspect_type=AspectType.TYPE
),
(50, 3): ElementMapping(element=Element.CCU, aspect_type=AspectType.TYPE),
(50, 11): ElementMapping(
element=Element.HEAT_DETECTION, aspect_type=AspectType.TYPE
),
(50, 21): ElementMapping(
element=Element.SMOKE_DETECTION, aspect_type=AspectType.TYPE
),
# ==========================================================
# EXTERNAL WALLS
# ==========================================================
@ -47,6 +57,9 @@ PEABODY_ELEMENT_MAP = {
(120, 2): ElementMapping(
element=Element.EXTERNAL_WALL, aspect_type=AspectType.FINISH
),
(120, 3): ElementMapping(
element=Element.PRIMARY_WALL, aspect_type=AspectType.INSULATION
), # This code element code is actually "WALL" not "external wall" - correct?
# ==========================================================
# EXTERNAL ROOFS
# ==========================================================
@ -194,10 +207,36 @@ PEABODY_ELEMENT_MAP = {
# ==========================================================
# INTERNAL BATHROOMS & KITCHENS
# ==========================================================
(50, 1): ElementMapping(
element=Element.SECONDARY_TOILET, aspect_type=AspectType.PRESENCE
),
(50, 9): ElementMapping(
element=Element.BATHROOM_EXTRACTOR_FAN, aspect_type=AspectType.PRESENCE
),
(50, 9): ElementMapping(element=Element.KITCHEN, aspect_type=AspectType.TYPE),
(50, 10): ElementMapping(
element=Element.KITCHEN_EXTRACTOR_FAN, aspect_type=AspectType.PRESENCE
),
(50, 13): ElementMapping(
element=Element.KITCHEN_SPACE_LAYOUT, aspect_type=AspectType.ADEQUACY
),
(50, 17): ElementMapping(element=Element.BATHRROM, aspect_type=AspectType.LOCATION),
(50, 18): ElementMapping(
element=Element.BATHROOM, aspect_type=AspectType.TYPE
), # Actually "Primary bathroom type" - ok like this?
(50, 20): ElementMapping(
element=Element.BATHROOM, aspect_type=AspectType.TYPE, element_instance=2
), # Actually "Secondary bathroom type" - ok like this?
(160, 1): ElementMapping(element=Element.KITCHEN, aspect_type=AspectType.CONDITION),
(160, 2): ElementMapping(
element=Element.KITCHEN_SPACE_LAYOUT, aspect_type=AspectType.ADEQUACY
),
(190, 1): ElementMapping(
element=Element.BATHROOM, aspect_type=AspectType.CONDITION
),
(190, 2): ElementMapping(
element=Element.SECONDARY_TOILET, aspect_type=AspectType.TYPE
),
# ==========================================================
# COMMUNAL SYSTEMS
# ==========================================================
@ -220,6 +259,42 @@ PEABODY_ELEMENT_MAP = {
element=Element.COMMUNAL_FLOOR_COVERING, aspect_type=AspectType.MATERIAL
),
# ==========================================================
# INTERNAL HEATING
# ==========================================================
(50, 4): ElementMapping(
element=Element.HEATING_BOILER, aspect_type=AspectType.PRESENCE
), # This is actually "Central heating boiler" - ok like this?
(50, 5): ElementMapping(
element=Element.CENTRAL_HEATING, aspect_type=AspectType.EXTENT
),
(50, 6): ElementMapping(
element=Element.COLD_WATER_STORAGE, aspect_type=AspectType.PRESENCE
),
(50, 12): ElementMapping(
element=Element.HEATING_DISTRIBUTION, aspect_type=AspectType.TYPE
),
(50, 19): ElementMapping(
element=Element.PROGRAMMABLE_HEATING, aspect_type=AspectType.TYPE
),
(50, 25): ElementMapping(
element=Element.HEATING_BOILER, aspect_type=AspectType.TYPE
),
(170, 1): ElementMapping(
element=Element.HEATING_BOILER, aspect_type=AspectType.TYPE
), # Duplicate of (50,25) - correct?
(170, 2): ElementMapping(
element=Element.HEATING_DISTRIBUTION, aspect_type=AspectType.TYPE
), # Duplicate of (50,12) - correct?
(170, 3): ElementMapping(
element=Element.SECONDARY_HEATING, aspect_type=AspectType.TYPE
),
(170, 4): ElementMapping(
element=Element.COLD_WATER_STORAGE, aspect_type=AspectType.TYPE
),
(170, 5): ElementMapping(
element=Element.HOT_WATER_SYSTEM, aspect_type=AspectType.TYPE
),
# ==========================================================
# HHSRS
# ==========================================================
(54, 1): ElementMapping(
@ -238,36 +313,16 @@ PEABODY_ELEMENT_MAP = {
# unhandled
# 'Element: HEATING - Code: 170, Sub-Element: Boiler - Code: 1',
# 'Element: HEATING - Code: 170, Sub-Element: Heating Distribution - Code: 2',
# '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: KITCHEN - Code: 160, Sub-Element: Kitchen space and layout - Code: 2',
# 'Element: HEATING - Code: 170, Sub-Element: Secondary Heating - Code: 3',
# 'Element: BATHROOM - Code: 190, Sub-Element: Secondary Toilet - Code: 2',
# 'Element: ELECTRICS - Code: 180, Sub-Element: Carbon Monoxide Alarms - Code: 4',
# 'Element: HEATING - Code: 170, Sub-Element: Hot Water - Code: 5',
# 'Element: HEATING - Code: 170, Sub-Element: Cold Water - Code: 4',
# 'Element: WALLS - Code: 120, Sub-Element: Wall Insulation - Code: 3',
# 'Element: Internal - Code: 50, Sub-Element: Additional WC - Code: 1',
# 'Element: Internal - Code: 50, Sub-Element: Carbon Monoxide Detector Type - Code: 2',
# 'Element: Internal - Code: 50, Sub-Element: CCU - Code: 3',
# 'Element: Internal - Code: 50, Sub-Element: Central Heating Boiler - Code: 4',
# 'Element: Internal - Code: 50, Sub-Element: Extractor Fan Bathroom - Code: 9',
# 'Element: Internal - Code: 50, Sub-Element: Extractor Fan Kitchen - Code: 10',
# 'Element: Internal - Code: 50, Sub-Element: Heat Detector Type - Code: 11',
# 'Element: Internal - Code: 50, Sub-Element: Kitchen Type - Code: 14',
# 'Element: Internal - Code: 50, Sub-Element: Primary Bathroom Type - Code: 18',
# 'Element: Internal - Code: 50, Sub-Element: Smoke Detector Type - Code: 21',
# '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: Internal - Code: 50, Sub-Element: Heating Distribution Type - Code: 12',
# 'Element: Internal - Code: 50, Sub-Element: Secondary Bathroom Type - Code: 20',
# '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',
@ -311,15 +366,9 @@ PEABODY_ELEMENT_MAP = {
# 'Element: Communal - Code: 51, Sub-Element: Common Wet Riser - Code: 39',
# 'Element: Communal - Code: 51, Sub-Element: Common Refuse Chute - Code: 29',
# 'Element: Internal - Code: 50, Sub-Element: Party Wall Fire Break - Code: 16',
# 'Element: Internal - Code: 50, Sub-Element: Boiler Type - Code: 25',
# '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: Cold Water Storage Tank - Code: 6',
# 'Element: Internal - Code: 50, Sub-Element: Programmable Heating - Code: 19',
# 'Element: Internal - Code: 50, Sub-Element: Central Heating Extent - Code: 5',
# 'Element: Internal - Code: 50, Sub-Element: Kitchen Space & Layout - Code: 13',
# '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: Primary Bathroom Location - Code: 17',
# 'Element: Internal - Code: 50, Sub-Element: Disabled Hoist Tracking - Code: 7',
# 'Element: Internal - Code: 50, Sub-Element: Disabled Facilities - Code: 26'