# Algorithm 11. Agglomeration: Legal Compliance of Articles 4, 5, and 6 ## Overview Determine the legal compliance for **Articles 4, 5, and 6** at the agglomeration level, based on: * Compliance of Article 3 (**result\_compliance\_art3**) * Compliance of Articles 4, 5, and 6 (**result\_compliance\_art4/5/6**) * Agglomeration characteristics (**aggGenerated, np\_54**) ## Simplified Logic ### 1. Check NULLs * Raises error if any input compliance is **NULL**. ### 2. If Article 3 = NC * Check Article 6: * If **Article 6 ≠ NR and ≠ PD** → * Art4 = **NR**, Art5 = **NR**, Art6 = **NC** * (`exit_leaf = 11-02`) * Else check Article 4: * If **Article 4 ≠ NR and ≠ PD** → check Article 5: * If **Article 5 ≠ NR and ≠ PD** → * Art4 = **NC**, Art5 = **NC**, Art6 = **NR** * (`exit_leaf = 11-04`) * Else → * Art4 = **NC**, Art5 = **Article5**, Art6 = **NR** * (`exit_leaf = 11-05`) * Else → * No change (**Art4/5/6 stay same**) * (`exit_leaf = 11-03`) ### 3. If Article 3 ≠ NC #### Check `np_54` (Article 5(4) applies) * If **yes** → check `aggGenerated < 10000`: * If **yes** → * Art4 = **Compliance art4** * Art5 = **NR** * Art6 = **Compliance art6** * (`exit_leaf = 11-08`) * Else → check Article 4: * If **Article 4 = C** → * Art4 = **Compliance art4** * Art5 = **NR** * Art6 = **Compliance art6** * (`exit_leaf = 11-06`) * Else → * Art4 = **Compliance art4** * Art5 = **NC** * Art6 = **Compliance art6** * (`exit_leaf = 11-07`) #### If `np_54` = no * Check Article 4: * If **Article 4 = NC** → check Article 5: * If **Article 5 ≠ NR and ≠ PD** → * Art4 = **NC**, Art5 = **NC**, Art6 = **NR** * (`exit_leaf = 11-04`) * Else → * Art4 = **NC**, Art5 = **Article5**, Art6 = **NR** * (`exit_leaf = 11-05`) * Else → * No change * (`exit_leaf = 11-01`) ## Decision Tree ```{mermaid} graph TB ROOT["Compliance article 3 = NC"] %% Left Branch ROOT --> N1((NO)) --- ART5["Article 5(4) applies"] ART5 --- Y2((YES)) --- AGG["Agglomeration is <10.000pe"] AGG --- Y3((YES)) --- LEG_1108["Legal compliance Article 4 = Compliance Article 4
Legal compliance Article 5 = NR
Legal Compliance Article 6 = Compliance Article 6"] LEG_1108 -.- ID11_08(["11-08"]) AGG --- N3((NO)) --- COMP_4C["Compliance Article 4= C"] COMP_4C --- Y4((YES)) --- LEG_1106["Legal compliance Article 4 = Compliance Article 4
Legal compliance Article 5 = NR
Legal Compliance Article 6 = Compliance Article 6"] LEG_1106 -.- ID11_06(["11-06"]) COMP_4C --- N4((NO)) --- LEG_1107["Legal compliance Article 4 = Compliance Article 4
Legal compliance Article 5 = NC
Legal Compliance Article 6 = Compliance Article 6"] LEG_1107 -.- ID11_07(["11-07"]) ART5 --- N2((NO)) --- COMP_4NC["Compliance article 4 = NC"] COMP_4NC --- N5((NO)) --- LEG_1101["Legal compliance Article 4 = Compliance Article 4
Legal compliance Article 5 = Compliance Article 5
Legal Compliance Article 6 = Compliance Article 6"] LEG_1101 -.- ID11_01(["11-01"]) COMP_4NC --- Y6((YES)) COMP_4NC --- N8((YES)) %% Right Branch ROOT --> Y1((YES)) --- COMP_6["Compliance article 6 ≠ NR OR ≠ PD"] COMP_6 --- Y5((YES)) --- LEG_1102["Legal Compliance Article 4 = NR
Legal compliance Article 5 = NR
Legal Compliance article 6 = NC"] LEG_1102 -.- ID11_02(["11-02"]) COMP_6 --- N6((NO)) --- COMP_4["Compliance article 4 ≠ NR OR ≠ PD"] COMP_4 --- Y6((YES)) --- COMP_5["Compliance article 5 ≠ NR OR ≠ PD"] COMP_4 --- N5((YES)) COMP_5 --- Y7((YES)) --- LEG_1104["Legal compliance Article 4 = NC
Legal Compliance Article 5 = NC
Legal compliance Article 6 = NR"] LEG_1104 -.- ID11_04(["11-04"]) COMP_5 --- N7((NO)) --- LEG_1105["Legal compliance Article 4 = NC
Legal Compliance Article 5 = Compliance Article 5
Legal compliance Article 6 = NR"] LEG_1105 -.- ID11_05(["11-05"]) COMP_4 --- N8((NO)) --- LEG_1103["Legal compliance Article 4 = Compliance Article 4
Legal compliance Article 5 = Compliance Article 5
Legal compliance Article 6 = Compliance Article 6."] LEG_1103 -.- ID11_03(["11-03"]) %% Styles classDef reference stroke:#00a2ff,color:#00a2ff; classDef yesBox fill:#4CAF50,color:white,stroke:#2E7D32; classDef noBox fill:#F44336,color:white,stroke:#C62828; %% Class Assignments class ID11_01,ID11_02,ID11_03,ID11_04,ID11_05,ID11_06,ID11_07,ID11_08 reference; class Y1,Y2,Y3,Y4,Y5,Y6,Y7 yesBox; class N1,N2,N3,N4,N5,N6,N7,N8 noBox; ``` ## Pseudocode ```{dropdown} Show python code ```python # Article 3 = NC branch if art3 == "NC": if art6 not in ("NR", "PD"): return ("NR", "NR", "NC"), "11-02" else: if art4 not in ("NR", "PD"): if art5 not in ("NR", "PD"): return ("NC", "NC", "NR"), "11-04" else: return ("NC", art5, "NR"), "11-05" else: return (art4, art5, art6), "11-03" # Article 3 != NC branch else: if np_54 > 0: if aggGenerated < 10000: return (art4, "NR", art6), "11-08" else: if art4 == "C": return (art4, "NR", art6), "11-06" else: return (art4, "NC", art6), "11-07" else: if art4 == "NC": if art5 not in ("NR", "PD"): return ("NC", "NC", "NR"), "11-04" else: return ("NC", art5, "NR"), "11-05" else: return (art4, art5, art6), "11-01" ```