Registry¶
- class hl7types.registry.HL7Registry¶
Bases:
objectRegistry for custom HL7 v2 segment and message classes.
Real-world HL7 deployments commonly extend the specification with vendor-specific Z-segments.
HL7Registrymaps segment names and message type identifiers to Pydantic model classes so thathl7types.decode_er7()can resolve them during decoding.Each registry instance is entirely independent. There is no shared global state. Concurrent pipelines with different vendor extensions can each hold their own registry without interference.
Examples
>>> from typing import Optional >>> from pydantic import Field >>> from hl7types.hl7 import HL7Model >>> from hl7types.hl7.v2_5_1.messages import ACK >>> from hl7types import HL7Registry >>> >>> class ZWCC(HL7Model): ... zwcc_1: Optional[str] = Field(None, serialization_alias="ZWCC.1") ... >>> _ZWCC = ZWCC >>> >>> class VendorACK(ACK): ... ZWCC: Optional[_ZWCC] = None ... >>> registry = HL7Registry() >>> registry.register_segment("ZWCC", ZWCC) >>> registry.register_message("2.5.1", "ACK", VendorACK)
- __init__()¶
- register_segment(name, cls, *, override=False)¶
Register a custom segment class against its three-letter name.
- Parameters:
name (str) – The HL7 segment name, e.g.
"ZWCC". Must not be one of the protected delimiter-definition segments (MSH,FHS,BHS) unlessoverrideisTrue.cls (type[BaseModel]) – The Pydantic model class to use when this segment is encountered during decoding.
override (bool) – If
True, bypass protection for delimiter-definition segments (MSH,FHS,BHS). Defaults toFalse.
- Raises:
ValueError – If
nameis a protected delimiter-definition segment andoverrideisFalse.
- get_segment(name)¶
Look up a registered segment class by name.
- Parameters:
name (str) – The HL7 segment name to look up.
- Returns:
The registered class, or
Noneif no class is registered for that name.- Return type:
type[BaseModel] or None
- has_segment_class(cls)¶
Return whether a class is registered as a segment.
- Parameters:
cls (type[BaseModel]) – The class to check.
- Returns:
Trueifclsis registered as a segment in this registry.- Return type:
bool
- register_message(version, name, cls)¶
Register a custom message class against a version and message name.
- Parameters:
version (str) – The HL7 version string as it appears in MSH.12, e.g.
"2.5.1".name (str) – The message structure name as it appears in MSH.9, e.g.
"ACK"or"ADT_A01".cls (type[BaseModel]) – The Pydantic model class to use when this message type is decoded for the given version.
- get_message(version, name)¶
Look up a registered message class by version and name.
- Parameters:
version (str) – The HL7 version string, e.g.
"2.5.1".name (str) – The message structure name, e.g.
"ACK".
- Returns:
The registered class, or
Noneif no class is registered for that version and name combination.- Return type:
type[BaseModel] or None
- hl7types.registry.register_segment(name, cls)¶
- hl7types.registry.register_message(version, name, cls)¶