Source

Click a Source Schema or Example Instance node to map it into the selected Blockly block. If a Code text block (LANG = Handlebars) or a Handlebars text block is selected, the click inserts a VMS-Hbs {{path}} at the caret. Hold Shift for nested {{#with}} / {{#each}}. Otherwise Listening Mode fills the waiting Source query block.

Schema

Supported: JSON Schema, JSON or XML documents, XSD samples, and openEHR Web Template, Composition JSON, or a GitHub .t.json (archetypes fetched from the same repo).
Load from a local file, a URL, or ▾ → From GitHub template….

Examples

Supported: JSON or XML instance files.
Load one file, a local folder, a GitHub folder (▾), or a single file from URL.

Mapping Editors

Target & Previews

Supported: openEHR OPT/OPT2, Web Template, JSON Schema, XML Schema (XSD), ADL, free-form templates, or a GitHub .t.json (archetypes fetched from the same repo).
Choose a target and a default context map together. ▾ also offers file, URL, GitHub, and non-destructive refresh.
Mapping preview interprets the mapping without generating a script. Conversion scripts (so far): TypeScript, Java, Handlebars, XQuery, and Go Template. TypeScript, Handlebars, Go Template, and XQuery also run in Conversion Test Run. Java generates an Archie class but does not execute in the web app. For openEHR targets, JSON vs XML instance chooses how XQuery serializes the composition.
Download on the script editor saves the generated script. The overlay Download on Conversion Test Run saves that instance.
Target schema Generated conversion script(s) Conversion Test Run(s)

Generated conversion script(s)

Conversion Test Run(s)

Functions

Save a Blockly Function (definition + Decision tables) to disk, load one into this mapping, or browse the GitHub Function library. Contribute files a review issue — it does not auto-merge.

On this canvas

Function library

Name already in use

Contribute Function

Opens a GitHub issue on regionstockholm/intehrgrator with your description and the Function definition. Maintainers review by hand.

Function:

Need a GitHub account? Create an account or log in, then submit.

Save as

Save the current workspace under a name you can load later.

Load project

Select a saved workspace. Loading replaces the current project.

Load from URL

Paste an https URL. GitHub file pages are converted to raw content.

Recent URLs

Load target & default context map

Pick a target and a default context map together. Confirm scaffolds the Template Skeleton and Default points. New loads the target into the Target schema tab only so you can pull chips and values, then Apply on the canvas block.

Target

No target selected yet.

Default context map

Refresh report


      

AI credentials

Optional OpenAI-compatible chat endpoint so AI chat can map from the web app. Credentials stay in this browser only — not in the Project Bundle. AI chat can use the same mapping tools as MCP / the HTTP Agent API (map_slot, import_suggestions, run_test, …). An AI-assisted IDE with local MCP remains a separate, fully valid path. Step-by-step key pages: AI chat credentials.

Local MCP server

Start or stop the server your IDE uses to edit this canvas. Copy the configuration into the IDE’s MCP settings. Keep this app open.

Agent API URL

Token

IDE configuration (mcp.json)


      

Default context map

Load a saved map, browse a file or URL, download the unique default context map, or save the current canvas map under a name.

Save default context mapping as

Store the current default context mapping under a name you can pick later.

Hardcode default context mapping entry

Choose a map key to inline on the canvas. Every get defaults key … lookup for that key is replaced with a copy of the value from this default context mapping. After that, those slots no longer read the convert-time defaults argument — they use the hardcoded block instead. The default context mapping itself is left unchanged so you can hardcode other keys later or keep the entry for remaining lookups.

Import AI suggestions

Paste the JSON from the AI chat (a raw object or an intehrgrator-suggestions fence). Import validates against the suggestion JSON Schema; errors stay visible here and can be copied back to the AI.

Not on the recommended version

Prefer to experiment? The bleeding-edge build (updated on every change to main) is always at the site root.

New here? Read the tutorial or the README.

Default context map is the unique canvas table you author here. At convert time, generated Conversion Scripts receive it as a defaults argument keyed by runtime key (language, facility, …). maps_get("defaults", runtimeKey) looks those up. Runtime code can merge that bag with per-message values, other named maps, and Sheet grids — the canvas map is the reusable baseline, not literals baked into every slot.
Scaffold targets (chips) are authoring-only RM paths, not convert-time keys: Class.attribute (e.g. COMPOSITION.composer, EVENT_CONTEXT.health_care_facility), ancestor paths, and wildcards (*.language lights every language slot). A more specific chip wins when several match the same slot. Empty chips → a runtime-only key that lights nothing. Extra keys stay available for Map lookups even if they do not light a slot.
Confirm, Apply default context map, or a later target refresh join Default points. Value edits are live in Test Run. A slot already mapped from source is not replaced.
The folder opens load/save: pick a map saved in this browser, browse a JSON file, load a URL, save a named copy, or download the current map as JSON you can upload again later.
Decision table is a named rule grid in the Tables & Sheets tab: condition columns (equality, don't-care —) and output columns (plain values or VMS-Mustache snippets). The grid owns column names and types; this block’s locals Map keys stay in sync.
Plug a Map of locals on the right (keys = condition headers). The output dropdown returns one typed column (🔤 string, 🔢 number, ✓ boolean), or all outputs as a Map (↦). Switching that type may unplug the block; canvas undo/redo restores it.
Hit policy (FIRST / UNIQUE / COLLECT) is on the Tables & Sheets tab. Flatten nested sources into the locals Map (or via variables) before eval.