# graph.med > graph.med publishes medical guidelines as graphs: each view is one guideline's recommendations, the claims they rest on (sentences of the guideline, each anchored to its page) and the concepts they hold, drawn as decision trees. Every page has a JSON twin. This file describes the JSON; it is generated by the build at commit 605fe31 (schema version 0.25.0). graph.med is not a medical device under the EU Medical Device Regulation (MDR). Its information was retrieved with the help of AI, and it includes AI-generated content. It is provided without warranty; use it with care. The same text is the banner of every page, and `disclaimer` in `index.json` and in every entity JSON's `meta`. ## Index - [index.json](https://graph.med/index.json): every view (graph) of the site, with the URLs of its files, its groupings, the root of its scope tree where it declares one, what it holds and its sources. Top level: `commit`, `schema` (`version`, `url`), `repository_license`, `disclaimer`, `contract` (where the keys are described), `llms_txt`, `views`. - Per view: `id`, `title`, `lang`, `url` (the page), `json` (the view JSON), `lean` (the per-view file), `search` (the search file), `groupings`, `root` (`{id, json}`, or null), `holds`, `sources`. - `holds`: `statement` (the recommendations), `claim` (the claims they rest on) and `group`, the number of distinct concepts at the junctions of the view's first grouping. - `sources`: each with `id`, `title`, `lang`, `url` (the document at its publisher), `license` (the licence line as recorded for that source), its register number where recorded, and `page` and `json` (its page and JSON on this site). Sources are linked, never copied onto this site. ## Views ### S3-Leitlinie Perioperatives Management bei gastrointestinalen Tumoren (POMGAT) - id `views/pomgat-lv-1.0`, language `de` - page: https://graph.med/pomgat-lv-1.0/ - view JSON: https://graph.med/pomgat-lv-1.0.json - per-view file: https://graph.med/pomgat-lv-1.0/view.json - search file: https://graph.med/pomgat-lv-1.0/search.json - root of its scope tree: `concepts/elektive-operation-gi-oder-hpb-malignom` (https://graph.med/concepts/elektive-operation-gi-oder-hpb-malignom.json) - holds: 90 statements, 173 claims, 38 distinct concepts at the junctions of its first grouping - source `sources/pomgat-lv-1.0`: S3-Leitlinie Perioperatives Management bei gastrointestinalen Tumoren (POMGAT) (https://register.awmf.org/assets/guidelines/008-010OLl_S3_Perioperatives-Management-bei-gastrointestinalen-Tumoren-POMGAT_2023-12.pdf); licence: © Leitlinienprogramm Onkologie (DKG, Deutsche Krebshilfe, AWMF); written permission of the OL-Redaktion required for any reproduction - groupings, in the order of the page's switch: - `axes/pomgat-population` (default): Population (Population), kind `hierarchy`, root question "Welche Population?" — https://graph.med/pomgat-lv-1.0/trees/axes/pomgat-population.json - `section`: Kapitel, kind `outline`, root question "Welches Kapitel?" — https://graph.med/pomgat-lv-1.0/trees/section.json - `axes/phase`: Perioperative Phase (Phase), kind `dimension`, root question "Welche Phase?" — https://graph.med/pomgat-lv-1.0/trees/axes/phase.json ### S3-Leitlinie: Sepsis – Prävention, Diagnose, Therapie und Nachsorge – Update 2025 - id `views/sepsis-lf-4.0`, language `de` - page: https://graph.med/sepsis-lf-4.0/ - view JSON: https://graph.med/sepsis-lf-4.0.json - per-view file: https://graph.med/sepsis-lf-4.0/view.json - search file: https://graph.med/sepsis-lf-4.0/search.json - root of its scope tree: `concepts/erwachsene-mit-sepsis-oder-septischem-schock` (https://graph.med/concepts/erwachsene-mit-sepsis-oder-septischem-schock.json) - holds: 99 statements, 318 claims, 18 distinct concepts at the junctions of its first grouping - source `sources/sepsis-lf-4.0`: S3-Leitlinie: Sepsis – Prävention, Diagnose, Therapie und Nachsorge – Update 2025 (https://register.awmf.org/assets/guidelines/079-001l_S3_Sepsis-Praevention-Diagnose-Therapie-Nachsorge_2025-07.pdf); licence: Deutsche Sepsis-Gesellschaft e. V. (federführend) et al., publiziert im AWMF-Register (079-001); das Dokument nennt keine Lizenz - groupings, in the order of the page's switch: - `axes/sepsis-population` (default): Population (Population), kind `hierarchy`, root question "Welche Population?" — https://graph.med/sepsis-lf-4.0/trees/axes/sepsis-population.json - `section`: Kapitel, kind `outline`, root question "Welches Kapitel?" — https://graph.med/sepsis-lf-4.0/trees/section.json ### S3-Leitlinie Vorhofflimmern - id `views/vorhofflimmern-lf-1.1`, language `de` - page: https://graph.med/vorhofflimmern-lf-1.1/ - view JSON: https://graph.med/vorhofflimmern-lf-1.1.json - per-view file: https://graph.med/vorhofflimmern-lf-1.1/view.json - search file: https://graph.med/vorhofflimmern-lf-1.1/search.json - root of its scope tree: `concepts/patientinnen-mit-vorhofflimmern` (https://graph.med/concepts/patientinnen-mit-vorhofflimmern.json) - holds: 63 statements, 413 claims, 35 distinct concepts at the junctions of its first grouping - source `sources/vorhofflimmern-lf-1.1`: S3-Leitlinie Vorhofflimmern (https://register.awmf.org/assets/guidelines/019-014l_S3_Vorhofflimmern_2025-07.pdf); licence: Deutsche Gesellschaft für Kardiologie und 16 weitere Herausgeber, publiziert im AWMF-Register (019-014); laut „Besonderer Hinweis“ (S. 2): „Jede Verwertung außerhalb der Bestimmung des Urheberrechtsgesetzes ist ohne schriftliche Zustimmung der Träger des NVL-Programms unzulässig und strafbar.“ - groupings, in the order of the page's switch: - `axes/vorhofflimmern-population` (default): Population (Population), kind `hierarchy`, root question "Welche Population?" — https://graph.med/vorhofflimmern-lf-1.1/trees/axes/vorhofflimmern-population.json - `section`: Kapitel, kind `outline`, root question "Welches Kapitel?" — https://graph.med/vorhofflimmern-lf-1.1/trees/section.json ## Groupings and tree files A grouping is one decision tree the build draws for a view; the page offers them in a switch and opens with the first (`default: true`). Each grouping in `index.json` has `axis` (its id), `label`, `short_label`, `lang`, `kind`, `default`, `question` (the label and `lang` of the question its root asks) and `tree` (its tree file's URL). `kind` is `hierarchy` (concepts placed under concepts), `dimension` (statements placed under values) or `outline` (the source's chapters). `axis` is an axis id (`axes/`), `section` for the chapters, or the empty string for a grouping no axis stands behind. A tree file holds `view`, `commit`, `axis`, `label`, `short_label`, `kind`, `lang`, `nodes` and `edges`. Every tree file has the same shape: - node types: `root`, `question`, `junction`, `statement`, `aim`; node keys, where they apply: `id`, `ref`, `type`, `label`, `lang`, `direction`, `grade`, `verb`, `no`, `sections`, `facets`, `group`, `general`, `against`, `contested`. - edge kinds: `flow`, `answer` (with `label` and `refs`), `relation` (its `label` the relation), `aim`; edge keys: `from`, `to`, `kind`, `label`, `refs`. - A node names the entity in its `ref`; an answer edge names the concepts it stands for in `refs`. A statement or aim node has the id of its entity. A junction's `label` is the number of recommendations below it, its `group` the words of its concept, and, in a view with a scope tree, `general` the ids of the statements that apply generally to its concept. - The question a grouping's root asks is the question node its root's `flow` edge leads to. From there, `flow` and `answer` edges lead down to junctions, further questions and statements; a statement's `aim` edge leads to its aim. A tree file holds no claim sentence, no quote and no card; box and answer labels are the site's modelling words and the guideline's grades. The per-view file lists the same groupings with the same keys. ## Links into a view The page link that opens a position in a grouping is `https://graph.med//?by=#[,]`: `` is the view id without `views/`, `?by=` carries the grouping's `axis` (URL-encoded) and is left out for the first grouping, an unknown value falls back to the first, and the ids after `#` are entity ids (a concept, a statement), several joined by a comma. The page unfolds to, selects and fits every element that names one of them. ## Session tools of a view page Every view page offers an assistant beside its reader a set of tools (interface version 2): they read what the reader sees and change it as the page's own controls do. They change nothing else and persist nothing: a reload shows the page as before, and the page's back button undoes each act like the reader's own. - Page function, for a program that runs script in the page: `window.graphmed.agent.describe()` gives the brief form (the version, what the tools are, and each tool's name, title, one line and argument names, an optional one marked `?`); `describe(name)` gives one tool's full definition with the JSON Schema of its input; `window.graphmed.agent.call(name, args)` returns a promise of the answer. - The index page (https://graph.med/) offers no tools: its `window.graphmed.agent.describe()` gives, in their place, every graph with the URL of its page, and `call()` refuses with the same. - WebMCP: where the browser offers `document.modelContext` (or the older `navigator.modelContext`), the page registers the same tools there, from the same definitions; the reads carry the read-only hint. - The tools: - `view` (reads): Reads what the reader sees: the state, and the boxes the folding shows in reading order, 20 a page. - `find` (reads): Reads which boxes of the whole grouping match a text or a facet, folded ones too; changes nothing. - `details` (reads): Reads what the details panel shows for an entity: wording, grade, evidence, quoted passages with page links, related entries. - `open`: Selects entities as a link does: unfolds the way, shows their details, fits them; a group named opens whole. - `focus`: Unfolds the way to boxes and fits them, the selection unchanged. - `highlight`: Marks boxes with the assistant's highlight, apart from the reader's selection, with an optional note. - `clear`: Removes the assistant's highlight and its note. - `toggle`: Unfolds or folds a patient group, as a tap does; unfolding fits everything it shows below it. - `fold`: Folds everything below a question, or restores what was open there, as a tap does. - `search`: Sets the page's search: matches keep their colour, the rest fades, groups holding a match unfold. - `step`: Selects the next or the previous match of the search, and fits the graph to it. - `back`: Undoes the last change, the reader's or the assistant's, as the page's back button does. - Ids: an entity is named by its graph.med id, as after `#` in the page's URL (above) and in the read-only MCP server (https://mcp.graph.med/mcp), which takes the same ids; a question by its node id (`q:…`). - An act answers briefly: the state after it and how many of the boxes it acted on are shown and in view; `view` gives the boxes. A refusal says what was refused (`error`), what is accepted (`hint`) and, for an id that names nothing, the nearest ids (`near`). - The page names the tools in a passage at the top of its main content, in the page's language; except on a phone, its toolbar holds a button that copies a ready prompt for an assistant to the clipboard. ## Per-view file and search file - The per-view file (`lean` in the index) holds the view JSON minus content: `id`, `title`, `sources`, `commit`, `outline` (the sources' chapter titles), `facets`, `legend`, `scope` (a view with a scope tree: `anchor_slot`, `root`, and per concept its `own` and `general` statements, each general entry `{id, anchor, via, condition}`), `groupings` (as in the index, each pointing to its tree file) and `meta` (below). No card HTML, no claim sentence, no quote. - The search file (`search` in the index) holds `view`, `commit` and `entries`, one per statement of the view and one per concept its statements hold in a slot, a node or answer of any grouping names, or its scope tree has as root. Every entry has `id`, `kind` (`statement` or `concept`) and `lang`. A statement has the words its box shows (`short_label`, else `label`), `slots` (`{slot: [concept ids]}`), and `direction`, `grade` and `verb` as its box shows them. A concept has `label`, `short_label` where it has one, `slots` (the slots it holds in the view's statements) and, in a view with a scope tree, `general` as `scope` gives it. No claim sentence, no quote. Where a concept stands in a tree is in the tree files and in the concept's `appears_in`. - The view JSON (`json` in the index) is what the page itself draws: the groupings in full, card HTML and a search text per node that carries claim sentences and quotes. ## Identifiers and URLs An entity's id is its path: its page is `https://graph.med//` and its JSON `https://graph.med/.json` (for example `concepts/`, `statements/`, `claims//`, `sources/`, `axes/`). Exceptions: - A view lives at the root: its page is `https://graph.med//` and its JSON `https://graph.med/.json`, where `` drops `views/`; there is no `views/.json`. Its per-view file, search file and tree files lie in its directory. - The ids of grouping nodes — questions (`q:…`) and junctions (`j:…`, including an axis's `j::` and the chapter tree's `j:section::`) — resolve to no file; they are addressed within their tree file. - A reference to a place in a source (`sources/#page=N`) resolves by dropping the `#page=` part. - Previews of pull requests lie under `https://graph.med/preview/pr/`, with the same layout. ## Entity JSON Every entity JSON carries the entity as stored, its `edges` (`out` and `in`, each with `kind` and the other end), and `meta`: - `meta.url`, `meta.json`: the entity's page and JSON; `meta.views`: the views it belongs to, each `{id, url, json}`; - `meta.sources`: the sources whose words it may carry, each `{id, json, license}` with the licence line as recorded; - `meta.repository_license`: the repository's licence (PolyForm Noncommercial 1.0.0); it says nothing about what it covers; - `meta.review`: `pending`, the build's one value until reviews are recorded; never "validated" or "verified"; - `meta.provenance`: where the content comes from (`anchored` for a claim, `document` for a source, `modelling` or `sourced` otherwise); - `meta.disclaimer`: the text above, the same in every JSON; - `meta.commit`, `meta.schema_version`. A concept's JSON also carries `statements` (per view: `held_by`, the statements that hold it with their slot, and in a view with a scope tree `own` and `general`) and `appears_in` (per view, then per grouping `axis`: the ids of the tree-file nodes that name it, where a program enters that grouping's tree). A statement's JSON carries `card`, its card keyed by the page's questions, in the page's language: `urteil`, `wortlaut`, `evidenz`, `geltung`, `leitlinientext`, `widerspruch`, `beleg`. It also carries `sequence`, where it stands along `follows` edges (a recommendation the guideline takes because of how another one's measure went): `before`, the statements it follows, and `after`, those that follow it, each a list of `{id, url, json, no, pages, transition, trigger}` in the guideline's order, with `discriminator` where the edge has one (`no` the neighbour's first recommendation number as printed, `pages` the pages of its supporting claims); and `chain`, the whole sequence it belongs to, `{nodes, edges}`: every statement connected to it by `follows` edges, each `{id, no, pages}`, and every such edge among them, each `{from, to, transition, trigger}` with `from` the later statement and `to` the earlier (and `discriminator` where the edge has one) — ids and keys only, never cut. For a statement on no such edge all of them are empty. `transition` is one of `replaces`, `adds`, `follows`, `concurrent`; `trigger` one of `target_missed`, `intolerance`, `contraindication`, `target_reached`, `reevaluation`, `finding`, `other`. Several entries in one list, or several edges into one node, say neither that they hold together nor that any one of them suffices. A statement's direction is one of `für`, `gegen`, `abwägen`, `Lücke`, the build's tokens in the page's language. Grades and verbs are the source's own words, read in its grading scheme. The keys are described in docs/publication.md §4: https://github.com/graph-med/graph.med/blob/main/docs/publication.md#4-entity-pages-and-json ## Licences and review Each source's licence line is in `index.json`, in its JSON and in every entity JSON that carries its words (`meta.sources`). A licence line is the project's record of the source's terms, not the publisher's text. The review status is `meta.review`.