Skip to content

Commit

Permalink
Add Segment ID to AHBLine and Segment
Browse files Browse the repository at this point in the history
  • Loading branch information
hf-kklein committed May 16, 2024
1 parent 7de5cfe commit 4cb4162
Show file tree
Hide file tree
Showing 4 changed files with 27 additions and 0 deletions.
9 changes: 9 additions & 0 deletions src/maus/models/anwendungshandbuch.py
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,14 @@ class AhbLine:
)
""" the data element ID, e.g. '3224' """

segment_id: Optional[str] = attrs.field(
validator=attrs.validators.optional(validator=attrs.validators.instance_of(str)), default=None
)
"""
the 5 digit segment id, e.g. '00003' for Nachrichten Kopfsegment
This is available since FV2410.
"""

value_pool_entry: Optional[str] = attrs.field(
validator=attrs.validators.optional(attrs.validators.instance_of(str))
)
Expand Down Expand Up @@ -128,6 +136,7 @@ class AhbLineSchema(Schema):
guid = fields.UUID(required=False, load_default=None)
segment_group_key = fields.String(required=False, load_default=None)
segment_code = fields.String(required=False, load_default=None)
segment_id = fields.String(required=False, load_default=None)
data_element = fields.String(required=False, load_default=None)
value_pool_entry = fields.String(required=False, load_default=None)
name = fields.String(required=False, load_default=None)
Expand Down
8 changes: 8 additions & 0 deletions src/maus/models/edifact_components.py
Original file line number Diff line number Diff line change
Expand Up @@ -411,6 +411,13 @@ class Segment(SegmentLevel):
This might be necessary to e.g. distinguish gas and electricity fields which look the same otherwise.
See e.g. UTILMD 'Geplante Turnusablesung des MSB (Strom)' vs. 'Geplante Turnusablesung des NB (Gas)'
"""
segment_id: Optional[str] = attrs.field(
validator=attrs.validators.optional(attrs.validators.matches_re("^\d{5}$")), default=None
)
"""
The 5 digit segment id, e.g. '00522' for UTILMD Strom SG12, NAD "Korrespondenzanschrift des
Kunden des Lieferanten"
"""

def get_all_value_pools(self) -> List[DataElementValuePool]:
"""
Expand All @@ -427,6 +434,7 @@ class SegmentSchema(SegmentLevelSchema):

data_elements = fields.List(fields.Nested(_FreeTextOrValuePoolSchema))
section_name = fields.String(required=False)
segment_id = fields.String(required=False, allow_none=True)

# pylint:disable=unused-argument
@post_load
Expand Down
7 changes: 7 additions & 0 deletions tests/unit_tests/test_ahb.py
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,7 @@ def test_ahb_meta_information_equality(self, ahb_x: AhbMetaInformation, ahb_y: A
ahb_expression="Muss [1] O [2]",
segment_group_key="SG2",
segment_code="NAD",
segment_id="01234",
data_element="3039",
value_pool_entry="E01",
name="MP-ID",
Expand All @@ -98,6 +99,7 @@ def test_ahb_meta_information_equality(self, ahb_x: AhbMetaInformation, ahb_y: A
"ahb_expression": "Muss [1] O [2]",
"segment_group_key": "SG2",
"segment_code": "NAD",
"segment_id": "01234",
"data_element": "3039",
"value_pool_entry": "E01",
"name": "MP-ID",
Expand All @@ -111,6 +113,7 @@ def test_ahb_meta_information_equality(self, ahb_x: AhbMetaInformation, ahb_y: A
ahb_expression="Muss [1] O [2]",
segment_group_key="SG2",
segment_code="NAD",
segment_id=None,
data_element="3039",
value_pool_entry="E01",
name="MP-ID",
Expand All @@ -122,6 +125,7 @@ def test_ahb_meta_information_equality(self, ahb_x: AhbMetaInformation, ahb_y: A
"ahb_expression": "Muss [1] O [2]",
"segment_group_key": "SG2",
"segment_code": "NAD",
"segment_id": None,
"data_element": "3039",
"value_pool_entry": "E01",
"name": "MP-ID",
Expand Down Expand Up @@ -272,6 +276,7 @@ def test_ahbline_get_discriminator(self, ahb_line: AhbLine, include_name: bool,
"segment_code": "NAD",
"data_element": "3039",
"value_pool_entry": "E01",
"segment_id": None,
"name": "MP-ID",
"guid": "12b1a98a-edf5-4177-89e5-a6d8a92c5fdc",
"section_name": "MP-ID Absender",
Expand Down Expand Up @@ -395,6 +400,7 @@ def test_flat_ahb_equality(self, ahb_x: FlatAnwendungshandbuch, ahb_y: FlatAnwen
"segments": [
{
"section_name": "foo",
"segment_id": None,
"ahb_expression": "expr B",
"discriminator": "disc B",
"data_elements": [
Expand Down Expand Up @@ -424,6 +430,7 @@ def test_flat_ahb_equality(self, ahb_x: FlatAnwendungshandbuch, ahb_y: FlatAnwen
"discriminator": "disc C",
"segments": [
{
"segment_id": None,
"section_name": "bar",
"ahb_expression": "expr Y",
"discriminator": "disc Y",
Expand Down
3 changes: 3 additions & 0 deletions tests/unit_tests/test_edifact_components.py
Original file line number Diff line number Diff line change
Expand Up @@ -136,6 +136,7 @@ def test_empty_entered_input_is_not_dumped(self, data_element: DataElement, sche
discriminator="foo",
),
{
"segment_id": None,
"ahb_expression": "X",
"section_name": "foo",
"data_elements": [
Expand Down Expand Up @@ -251,6 +252,7 @@ def test_segment_get_value_pools(self, segment: Segment, expected_result_length:
"discriminator": "disc A",
"segments": [
{
"segment_id": None,
"section_name": "bar",
"ahb_expression": "expr B",
"discriminator": "disc B",
Expand Down Expand Up @@ -281,6 +283,7 @@ def test_segment_get_value_pools(self, segment: Segment, expected_result_length:
"discriminator": "disc C",
"segments": [
{
"segment_id": None,
"section_name": "foo",
"ahb_expression": "expr Y",
"discriminator": "disc Y",
Expand Down

0 comments on commit 4cb4162

Please sign in to comment.