<mxfile host="app.diagrams.net" modified="2026-03-06T00:00:00.000Z" agent="OracleGenerativeChat" version="24.7.8" type="device">
  <diagram id="gen2-work-pipelines" name="Gen 2 Work - Pipelines">
    <mxGraphModel dx="1200" dy="800" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1600" pageHeight="900" math="0" shadow="0">
      <root>
        <mxCell id="0"/>
        <mxCell id="1" parent="0"/>

        <!-- Swimlane-style containers -->
        <mxCell id="c_authoring" value="Authoring / Editing" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#F5F5F5;strokeColor=#BDBDBD;dashed=0;container=1;collapsible=0;recursiveResize=0;" vertex="1" parent="1">
          <mxGeometry x="20" y="20" width="320" height="180" as="geometry"/>
        </mxCell>

        <mxCell id="c_sot" value="Clinical Area Data Service (Single Source of Truth)" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#F5F5F5;strokeColor=#BDBDBD;container=1;collapsible=0;recursiveResize=0;" vertex="1" parent="1">
          <mxGeometry x="370" y="20" width="520" height="300" as="geometry"/>
        </mxCell>

        <mxCell id="c_approval" value="Approval" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#F5F5F5;strokeColor=#BDBDBD;container=1;collapsible=0;recursiveResize=0;" vertex="1" parent="1">
          <mxGeometry x="20" y="230" width="320" height="220" as="geometry"/>
        </mxCell>

        <mxCell id="c_bus" value="Event Bus" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#F5F5F5;strokeColor=#BDBDBD;container=1;collapsible=0;recursiveResize=0;" vertex="1" parent="1">
          <mxGeometry x="370" y="340" width="520" height="220" as="geometry"/>
        </mxCell>

        <mxCell id="c_pipeline" value="Approval-Triggered Publishing Pipeline" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#F5F5F5;strokeColor=#BDBDBD;container=1;collapsible=0;recursiveResize=0;" vertex="1" parent="1">
          <mxGeometry x="920" y="20" width="650" height="540" as="geometry"/>
        </mxCell>

        <mxCell id="c_skg" value="SKG" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#F5F5F5;strokeColor=#BDBDBD;container=1;collapsible=0;recursiveResize=0;" vertex="1" parent="1">
          <mxGeometry x="920" y="580" width="650" height="280" as="geometry"/>
        </mxCell>

        <!-- Nodes -->
        <mxCell id="n_rwa" value="Research Web App" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#E3F2FD;strokeColor=#1E88E5;" vertex="1" parent="c_authoring">
          <mxGeometry x="40" y="60" width="240" height="60" as="geometry"/>
        </mxCell>

        <mxCell id="n_cads" value="Clinical Area Data Service APIs&#xa;(create/update clinical-area data)" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#E8F5E9;strokeColor=#43A047;" vertex="1" parent="c_sot">
          <mxGeometry x="20" y="60" width="310" height="80" as="geometry"/>
        </mxCell>

        <mxCell id="n_db" value="Underlying Tables&#xa;X / Y / Z ..." style="shape=cylinder3;whiteSpace=wrap;html=1;boundedLbl=1;fillColor=#FFF3E0;strokeColor=#FB8C00;" vertex="1" parent="c_sot">
          <mxGeometry x="360" y="60" width="140" height="90" as="geometry"/>
        </mxCell>

        <mxCell id="n_ver" value="Shared Version / Timestamp&#xa;(recorded on every write)" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFFDE7;strokeColor=#FBC02D;" vertex="1" parent="c_sot">
          <mxGeometry x="20" y="170" width="480" height="70" as="geometry"/>
        </mxCell>

        <mxCell id="n_aapi" value="Clinical Area Approval API&#xa;(approve specific clinical area)" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#EDE7F6;strokeColor=#5E35B1;" vertex="1" parent="c_approval">
          <mxGeometry x="40" y="60" width="240" height="80" as="geometry"/>
        </mxCell>

        <mxCell id="n_event" value="Approval Event&#xa;(drugId, clinicalAreaId, approvedVersion, metadata)" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#F3E5F5;strokeColor=#8E24AA;" vertex="1" parent="c_approval">
          <mxGeometry x="20" y="155" width="280" height="50" as="geometry"/>
        </mxCell>

        <mxCell id="n_kafka" value="Kafka / Central Event Bus" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#E0F7FA;strokeColor=#00838F;" vertex="1" parent="c_bus">
          <mxGeometry x="20" y="60" width="300" height="70" as="geometry"/>
        </mxCell>

        <mxCell id="n_dlq" value="DLQ + Alerting" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFEBEE;strokeColor=#C62828;" vertex="1" parent="c_bus">
          <mxGeometry x="350" y="60" width="150" height="70" as="geometry"/>
        </mxCell>

        <mxCell id="n_consume" value="Event Consumer&#xa;(listens for approval events)" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#E8EAF6;strokeColor=#3949AB;" vertex="1" parent="c_pipeline">
          <mxGeometry x="30" y="60" width="260" height="70" as="geometry"/>
        </mxCell>

        <mxCell id="n_collect" value="Data Collector&#xa;(fetch up to approvedVersion&#xa;across X/Y/Z)" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#E8F5E9;strokeColor=#43A047;" vertex="1" parent="c_pipeline">
          <mxGeometry x="320" y="60" width="280" height="90" as="geometry"/>
        </mxCell>

        <mxCell id="n_validate" value="Validation Layer&#xa;(schema, completeness, references)" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFFDE7;strokeColor=#FBC02D;" vertex="1" parent="c_pipeline">
          <mxGeometry x="30" y="170" width="260" height="70" as="geometry"/>
        </mxCell>

        <mxCell id="n_assemble" value="Assembler / Canonical Model&#xa;(structured dataset)" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#E0F2F1;strokeColor=#00796B;" vertex="1" parent="c_pipeline">
          <mxGeometry x="320" y="170" width="280" height="70" as="geometry"/>
        </mxCell>

        <mxCell id="n_ttl" value=".ttl Generator&#xa;(RDF/Turtle output)" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#F1F8E9;strokeColor=#7CB342;" vertex="1" parent="c_pipeline">
          <mxGeometry x="30" y="260" width="260" height="70" as="geometry"/>
        </mxCell>

        <mxCell id="n_load" value="SKG Load / Publish Step" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#E3F2FD;strokeColor=#1E88E5;" vertex="1" parent="c_pipeline">
          <mxGeometry x="320" y="260" width="280" height="70" as="geometry"/>
        </mxCell>

        <mxCell id="n_audit" value="Audit / Observability&#xa;(logs, metrics, lineage)" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FAFAFA;strokeColor=#616161;dashed=1;" vertex="1" parent="c_pipeline">
          <mxGeometry x="30" y="360" width="570" height="60" as="geometry"/>
        </mxCell>

        <mxCell id="n_repo" value="SKG Repository" style="shape=cylinder3;whiteSpace=wrap;html=1;boundedLbl=1;fillColor=#FFF3E0;strokeColor=#FB8C00;" vertex="1" parent="c_skg">
          <mxGeometry x="250" y="110" width="180" height="100" as="geometry"/>
        </mxCell>

        <!-- Edges -->
        <mxCell id="e1" style="endArrow=block;html=1;strokeColor=#424242;" edge="1" parent="1" source="n_rwa" target="n_cads">
          <mxGeometry relative="1" as="geometry"/>
        </mxCell>

        <mxCell id="e2" style="endArrow=block;html=1;strokeColor=#424242;" edge="1" parent="1" source="n_cads" target="n_db">
          <mxGeometry relative="1" as="geometry"/>
        </mxCell>

        <mxCell id="e3" style="endArrow=block;html=1;strokeColor=#424242;" edge="1" parent="1" source="n_cads" target="n_ver">
          <mxGeometry relative="1" as="geometry"/>
        </mxCell>

        <mxCell id="e4" style="endArrow=block;html=1;strokeColor=#424242;" edge="1" parent="1" source="n_rwa" target="n_aapi">
          <mxGeometry relative="1" as="geometry"/>
        </mxCell>

        <mxCell id="e5" style="endArrow=block;html=1;strokeColor=#424242;" edge="1" parent="1" source="n_aapi" target="n_event">
          <mxGeometry relative="1" as="geometry"/>
        </mxCell>

        <mxCell id="e6" style="endArrow=block;html=1;strokeColor=#424242;" edge="1" parent="1" source="n_event" target="n_kafka">
          <mxGeometry relative="1" as="geometry"/>
        </mxCell>

        <mxCell id="e7" style="endArrow=block;html=1;strokeColor=#424242;" edge="1" parent="1" source="n_kafka" target="n_consume">
          <mxGeometry relative="1" as="geometry"/>
        </mxCell>

        <mxCell id="e8" style="endArrow=block;html=1;strokeColor=#424242;" edge="1" parent="1" source="n_consume" target="n_collect">
          <mxGeometry relative="1" as="geometry"/>
        </mxCell>

        <mxCell id="e9" style="endArrow=block;html=1;strokeColor=#424242;" edge="1" parent="1" source="n_collect" target="n_validate">
          <mxGeometry relative="1" as="geometry"/>
        </mxCell>

        <mxCell id="e10" value="pass" style="endArrow=block;html=1;strokeColor=#2E7D32;" edge="1" parent="1" source="n_validate" target="n_assemble">
          <mxGeometry relative="1" as="geometry"/>
        </mxCell>

        <mxCell id="e11" value="fail" style="endArrow=block;html=1;strokeColor=#C62828;" edge="1" parent="1" source="n_validate" target="n_dlq">
          <mxGeometry relative="1" as="geometry"/>
        </mxCell>

        <mxCell id="e12" style="endArrow=block;html=1;strokeColor=#424242;" edge="1" parent="1" source="n_assemble" target="n_ttl">
          <mxGeometry relative="1" as="geometry"/>
        </mxCell>

        <mxCell id="e13" style="endArrow=block;html=1;strokeColor=#424242;" edge="1" parent="1" source="n_ttl" target="n_load">
          <mxGeometry relative="1" as="geometry"/>
        </mxCell>

        <mxCell id="e14" style="endArrow=block;html=1;strokeColor=#424242;" edge="1" parent="1" source="n_load" target="n_repo">
          <mxGeometry relative="1" as="geometry"/>
        </mxCell>

        <!-- Dotted audit link (conceptual) -->
        <mxCell id="e15" value="observability" style="endArrow=open;html=1;dashed=1;strokeColor=#616161;" edge="1" parent="1" source="n_consume" target="n_audit">
          <mxGeometry relative="1" as="geometry"/>
        </mxCell>

      </root>
    </mxGraphModel>
  </diagram>
</mxfile>