{
  "manifest_format": "opjd-manifest/1.0.0",
  "name": "oPJD — oncological Patient Journey Dataset",
  "id": "opjd",
  "description": {
    "de": "Offener Standard für konsolidierte onkologische Patient Journeys: unveränderte oBDS-Ereignisse plus Episoden (klinische Klammern), typisierte Relationen, Metadaten-Layer und Austauschhülle.",
    "en": "Open standard for consolidated oncology patient journeys layered over unmodified oBDS payloads."
  },
  "site": "https://opjd.kerscher-lab.org",
  "maintainer": {
    "name": "Kerscher Lab — BZKF OncoFlow",
    "contact": "alexander.kerscher@kerscher-lab.org"
  },
  "licenses": {
    "schemas_and_code": "Apache-2.0",
    "texts_and_dictionary": "CC-BY-4.0"
  },
  "versions_index": "/schema/versions.json",
  "current": {
    "version": "0.2.0",
    "status": "draft",
    "schema": "/schema/0.2.0/opjd-package.schema.json",
    "dictionary": "/schema/0.2.0/dictionary.json",
    "examples": [
      "/schema/0.2.0/examples/opjd-example-nsclc.json",
      "/schema/0.2.0/examples/opjd-example-prostate-as.json"
    ]
  },
  "stable_aliases": {
    "schema_latest": "/schema/opjd-package.schema.json",
    "examples_latest": "/schema/examples/"
  },
  "dictionary_meta_schema": "/schema/dictionary.schema.json",
  "llms": {
    "index": "/llms.txt",
    "full": "/llms-full.txt"
  },
  "mcp": {
    "npm": "@kerscher-lab/opjd-mcp",
    "transport": "stdio",
    "install": "npx -y @kerscher-lab/opjd-mcp"
  },
  "term_uri_scheme": "opjd://<version>/<pfad>[/<wert>]",
  "guide": {
    "non_negotiable_rules": [
      "oBDS-Nutzlasten (obds-Felder) niemals verändern oder neu kodieren — der oPJD ist Schicht, nicht Ersatz.",
      "Enums sind abschließend; neue Werte nur über den Governance-Prozess vorschlagen, nie erfinden.",
      "Interpretationsschicht unterscheiden: meta.quality = derived ist ein algorithmischer Vorschlag, curated eine fachliche Bestätigung.",
      "Nichts wird gelöscht: Terme werden deprecated und superseded, IDs bleiben stabil.",
      "Relationen lesen sich als Grammatik, nicht als Zeit: from ist das Element, das den Bezug ausspricht.",
      "Alle Beispiele sind synthetisch; keine echten Patientendaten in Vorschläge, Issues oder Beispiele einspeisen."
    ],
    "recommended_workflow": [
      {
        "step": 1,
        "action": "Manifest und versions.json lesen",
        "outcome": "Aktuelle Version, Status und URLs bekannt"
      },
      {
        "step": 2,
        "action": "Schema und Dictionary der Zielversion laden",
        "outcome": "Struktur und normative Bedeutung verfügbar"
      },
      {
        "step": 3,
        "action": "Pakete gegen das Schema validieren, dann referenzielle Integrität prüfen",
        "outcome": "Befunde mit opjd://-Termbezug"
      },
      {
        "step": 4,
        "action": "Lücken oder fehlende Konzepte als Feedback-Kontrakt per E-Mail einreichen",
        "outcome": "Vorschlag im öffentlichen Governance-Prozess (Entscheidungen unter /docs/)"
      }
    ]
  },
  "feedback": {
    "channel": "email",
    "url": "mailto:alexander.kerscher@kerscher-lab.org?subject=%5BoPJD-Vorschlag%5D",
    "note": "Vorschläge per strukturierter E-Mail nach dem contract-Format (das MCP-Werkzeug opjd_propose_change erzeugt einen vorbefüllten Entwurf). Eine Web-Einreichung direkt auf der Website folgt. Angenommene Vorschläge und Entscheidungen werden unter /docs/ veröffentlicht.",
    "contract": {
      "use_case": "string (de) — welcher reale Anwendungsfall ist nicht abbildbar?",
      "affected_terms": "string[] — betroffene opjd://-IDs (leer bei neuem Konzept)",
      "missing_facts": [
        {
          "path": "string — vorgeschlagener Pfad",
          "reason": "string — warum wird er gebraucht?"
        }
      ],
      "proposal": "string — konkreter Vorschlag inkl. Vokabular",
      "backward_compatible": "boolean — additiv (minor) oder Bedeutungsänderung (major)?",
      "process": "Vorschlag → fachliche Bewertung → technische Prüfung → Entscheidung → Kommunikation (siehe /governance und /docs/governance/PROZESS.md)"
    }
  },
  "docs": {
    "governance": "/docs/governance/",
    "decisions": "/docs/decisions/",
    "releases": "/docs/releases/",
    "proposal_template": "/docs/proposals/0000-template.md",
    "code_of_conduct": "/docs/CODE_OF_CONDUCT.md",
    "changelog": "/changelog"
  }
}
