automapper-validation 0.4.0

AHB condition expression parsing, evaluation, and EDIFACT validation
Documentation
{
  "generated_at": "2026-04-22T18:13:18Z",
  "ahb_file": "ORDERS_AHB_1_1b_20260401.xml",
  "format_version": "FV2610",
  "conditions": {
    "493": {
      "confidence": "low",
      "reasoning": "Checks whether the market participant ID in NAD+MR belongs to the gas sector (Sparte Gas). Same as 492 but for gas — the sector affiliation cannot be determined from the EDIFACT message content alone and requires external market participant registry lookup.",
      "description_hash": "a3ff1d5b",
      "is_external": true
    },
    "593": {
      "confidence": "high",
      "reasoning": "Hinweis condition — informational annotation about MSBN data, not a boolean predicate. Always returns True.",
      "description_hash": "f9f3417f",
      "is_external": false
    },
    "106": {
      "confidence": "high",
      "reasoning": "Notation IMD++Z60 → elements[0]=(empty), elements[1]=Z60, so elements[1][0]==\"Z60\". lacks_qualifier(\"IMD\", 1, \"Z60\") returns True when no IMD segment has Z60 at elements[1][0].",
      "description_hash": "b3f2f9df",
      "is_external": false
    },
    "184": {
      "confidence": "low",
      "reasoning": "Whether the ordered position (SG34 RFF+Z03 DE1154 reference value) identifies a Geräteübernahmeangebot (device takeover offer) for a Smart Meter Gateway requires product catalog knowledge external to the EDIFACT message. Cannot determine from segment content alone.",
      "description_hash": "5ff31d16",
      "is_external": true
    },
    "75": {
      "confidence": "low",
      "reasoning": "Whether the required value needs a Zählzeit (meter reading time slot) is a product/business context decision that cannot be determined from the EDIFACT message content alone. Depends on the type of Messprodukt being ordered.",
      "description_hash": "68564493",
      "is_external": true
    },
    "200": {
      "confidence": "low",
      "reasoning": "Same pattern as 198 but for Marktrolle/ÜNB. Requires external code list lookup (Codeliste der Verwendungszwecke, Kapitel 2) filtered by Lokation/MaLo=X AND Verwendbar für Marktrolle/ÜNB=X, cross-referenced against DE7140 of the same PIA. Cannot be determined from the EDIFACT message alone.",
      "description_hash": "ccfdc481",
      "is_external": true
    },
    "202": {
      "confidence": "low",
      "reasoning": "Same pattern as 198 but for Lokation/Tranche AND Marktrolle/LF. Requires external code list lookup (Codeliste der Verwendungszwecke, Kapitel 2) filtered by Lokation/Tranche=X AND Verwendbar für Marktrolle/LF=X, cross-referenced against DE7140 of the same PIA. Cannot be determined from the EDIFACT message alone.",
      "description_hash": "01d4db74",
      "is_external": true
    },
    "196": {
      "confidence": "low",
      "reasoning": "Validates that the Verwendungszweck code is listed in the external Codeliste (Kapitel 2) with X in both 'Lokation/NeLo' and 'Verwendbar für Marktrolle/NB' columns, and that the Erläuterung matches the DE7140 product code of the same PIA. Requires external code list data not present in the EDIFACT message.",
      "description_hash": "a9149169",
      "is_external": true
    },
    "110": {
      "confidence": "high",
      "reasoning": "Checks presence of DTM with qualifier 163 (Beginn Zeitraum für Wertanfrage) at elements[0][0]. Straightforward qualifier existence check.",
      "description_hash": "e1c08342",
      "is_external": false
    },
    "197": {
      "confidence": "low",
      "reasoning": "Same as [196] but for market role LF instead of NB. Validates against the external Codeliste der Verwendungszwecke (Kapitel 2) with X in 'Verwendbar für Marktrolle/LF' column. Requires external code list data.",
      "description_hash": "9ac5c335",
      "is_external": true
    },
    "198": {
      "confidence": "low",
      "reasoning": "Requires checking the current field value against an external code list (Codeliste der Verwendungszwecke, Kapitel 2) filtered by Lokation/MaLo=X AND Verwendbar für Marktrolle/NB=X, cross-referenced against the product code in DE7140 of the same PIA segment. This requires access to external reference data and complex cross-segment business logic that cannot be determined from the EDIFACT message structure alone.",
      "description_hash": "675d1f57",
      "is_external": true
    },
    "199": {
      "confidence": "low",
      "reasoning": "Same pattern as 198 but for Marktrolle/LF. Requires external code list lookup (Codeliste der Verwendungszwecke, Kapitel 2) filtered by Lokation/MaLo=X AND Verwendbar für Marktrolle/LF=X, cross-referenced against DE7140 of the same PIA. Cannot be determined from the EDIFACT message alone.",
      "description_hash": "4706fa3b",
      "is_external": true
    },
    "201": {
      "confidence": "low",
      "reasoning": "Same pattern as 198 but for Lokation/Tranche AND Marktrolle/NB. Requires external code list lookup (Codeliste der Verwendungszwecke, Kapitel 2) filtered by Lokation/Tranche=X AND Verwendbar für Marktrolle/NB=X, cross-referenced against DE7140 of the same PIA. Cannot be determined from the EDIFACT message alone.",
      "description_hash": "1d9ff4c8",
      "is_external": true
    },
    "490": {
      "confidence": "high",
      "reasoning": "Checks whether the CCYYMMDDHHMM value in the current DTM element falls within the German summer time (MESZ/UTC+2) window as defined in Kapitel 3.5. The is_mesz_utc validator applies the EU DST rule (last Sunday of March 01:00 UTC to last Sunday of October 01:00 UTC). format_check prefers ctx.resolved_value when set for tree-based validation.",
      "description_hash": "7741a899",
      "is_external": false
    },
    "492": {
      "confidence": "low",
      "reasoning": "Checks whether the market participant ID in NAD+MR belongs to the electricity sector (Sparte Strom). The sector affiliation of a market participant cannot be determined from the EDIFACT message content alone — it requires a registry lookup against external market participant master data. This is a runtime business context check.",
      "description_hash": "9481dd18",
      "is_external": true
    },
    "594": {
      "confidence": "high",
      "reasoning": "Hinweis condition — informational annotation describing when percentage-based tranche splitting applies. Despite the 'Wenn' phrasing, this is a Hinweis note, not a boolean predicate. Always returns True.",
      "description_hash": "c4894258",
      "is_external": false
    },
    "203": {
      "confidence": "low",
      "reasoning": "Same pattern as 198 but for Lokation/Tranche AND Marktrolle/ÜNB. Requires external code list lookup (Codeliste der Verwendungszwecke, Kapitel 2) filtered by Lokation/Tranche=X AND Verwendbar für Marktrolle/ÜNB=X, cross-referenced against DE7140 of the same PIA. Cannot be determined from the EDIFACT message alone.",
      "description_hash": "7c162278",
      "is_external": true
    },
    "595": {
      "confidence": "high",
      "reasoning": "Hinweis condition — informational annotation describing splitting based on an allocation factor (e.g. installed capacity via Technical Resources) and the bilateral exchange requirement. Always returns True.",
      "description_hash": "f3c09263",
      "is_external": false
    },
    "169": {
      "confidence": "medium",
      "reasoning": "SG29 is parent group with LIN entry where elements[1][0]==\"Z19\" (notation LIN++Z19 → elements[1]=Z19). SG30 is child group; CCI DE7059 (Property class code qualifier) is at elements[0][0]. Z39 = Code der Zählzeitdefinition. Confidence medium because exact nesting depth of SG29 within ORDERS hierarchy is not confirmed without MIG XML.",
      "description_hash": "43cdec1e",
      "is_external": false
    },
    "491": {
      "confidence": "high",
      "reasoning": "Checks whether the CCYYMMDDHHMM value in the current DTM element falls within the German winter time (MEZ/UTC+1) window as defined in Kapitel 3.6. The is_mez_utc validator is the complement of is_mesz_utc. format_check prefers ctx.resolved_value when set for tree-based validation.",
      "description_hash": "e5622c59",
      "is_external": false
    },
    "185": {
      "confidence": "high",
      "reasoning": "Checks presence of FTX segment with qualifier Z29 (Endpunkt-Adresse IP:Port) at elements[0][0]. Straightforward qualifier existence check.",
      "description_hash": "ccf7b3d6",
      "is_external": false
    },
    "148": {
      "confidence": "high",
      "reasoning": "Same sibling-component pattern as [147] but checks multiple DE3155 codes: TE (Telephone), FX (Fax), AJ, AL. self_segment_value_equals uses ctx.resolved_segment for 'im selben Segment' semantics.",
      "description_hash": "6aac2a48",
      "is_external": false
    },
    "147": {
      "confidence": "high",
      "reasoning": "COM segment structure: elements[0][0]=communication address, elements[0][1]=DE3155 (communication qualifier). 'im selben COM' means sibling component check via self_segment_value_equals, which reads ctx.resolved_segment when in tree context.",
      "description_hash": "f7255aef",
      "is_external": false
    }
  }
}