agentsclimarketplace

Composition builder

Skill Cadasto/openehr-assistant-plugin/skills/composition-builder

openEHR assistant AI plugin suite with Skills, commands, and MCP server configuration for clinical workflow integration

Install
npx -y skills add Cadasto/openehr-assistant-plugin --skill composition-builder

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • 3 stars3 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

What its author says it does

Copied from the file, not written here

This skill should be used when the user asks to "build a composition", "create a composition", "validate a composition", "convert a composition", or "generate FLAT/STRUCTURED/CANONICAL format". Covers building openEHR compositions in all simplified formats and guiding their validation and format conversion (against a target template; there is no automated validator/converter tool). Also handles quick format explanations and single-payload sketches directly.

SKILL.md

5.5 KB, as published. Nobody here has run it

Composition Builder

Validation and format conversion here are guided / manual — the workflow walks through them against the target template; there is no MCP validate-or-convert tool. The loaded simplified_formats/* guides are authoritative over any inline summary.

Step 1: Load Guides (MANDATORY)

Before building any composition, load the authoritative guides:

guide_get("simplified_formats/principles")
guide_get("simplified_formats/rules")
guide_get("simplified_formats/idioms-cheatsheet")

Consult worked examples (when applicable)

For sample payloads on common concepts (e.g. blood pressure / vital signs, encounter with RM attributes, coded-text handling, raw-escape patterns), consult examples_search(kind="flat") or examples_search(kind="structured") before hand-crafting. Curated samples live under openehr://examples/{flat|structured}/{name} with pattern and related-guide metadata. Skip this step for novel or highly template-specific payloads.

Step 2: Retrieve Template

Load the target template to understand the structure:

ckm_template_get("<template-id>")

Important: Simplified format field identifiers are ONLY valid for the specific target OPT. Always state the target template and validate paths against it. A field identifier valid for one template may be invalid or mean something different in another.

This reveals the archetype structure, constraints, and required fields.

Step 3: Choose Format

FLAT Format

Pipe-delimited paths with value suffixes. Best for simple integrations and form submissions.

{
  "ctx/language": "en",
  "ctx/territory": "NL",
  "ctx/composer_name": "Dr. Smith",
  "vitals/body_temperature/any_event/temperature|magnitude": 37.2,
  "vitals/body_temperature/any_event/temperature|unit": "Cel"
}

Key suffixes: |magnitude, |unit, |code, |value, |terminology, |name

STRUCTURED Format

Nested JSON mirroring the archetype hierarchy. Best for complex UIs and programmatic construction.

{
  "ctx": { "language": "en", "territory": "NL" },
  "vitals": {
    "body_temperature": [{
      "any_event": [{
        "temperature": [{ "|magnitude": 37.2, "|unit": "Cel" }]
      }]
    }]
  }
}

CANONICAL Format

Full Reference Model representation with _type annotations. Best for archival and CDR interactions.

{
  "_type": "COMPOSITION",
  "archetype_details": { ... },
  "content": [{
    "_type": "OBSERVATION",
    "data": { ... }
  }]
}

Step 4: Composition Metadata

Every composition requires context fields (ctx/ in FLAT, ctx object in STRUCTURED):

  • composer (ctx/composer_name): Who created the data (name, optionally ID)
  • language (ctx/language): ISO 639-1 code (e.g., en, nl)
  • territory (ctx/territory): ISO 3166-1 code (e.g., NL, US)
  • category: event (point-in-time) or persistent (ongoing)
  • context: start_time (ctx/time) and setting (e.g., primary medical care, secondary medical care)
  • id_namespace (ctx/id_namespace): Optional, for identification context
  • id_scheme (ctx/id_scheme): Optional, for identification scheme

Step 5: RM Data Types

Use type_specification_get for detailed type structure when needed.

RM TypeExample UseKey Fields
DV_TEXTFree textvalue
DV_CODED_TEXTCoded valuesvalue, defining_code (terminology_id + code_string)
DV_QUANTITYMeasurementsmagnitude, units, optionally precision
DV_DATE_TIMETimestampsISO 8601 value
DV_ORDINALOrdered scales (integer steps)value (integer), symbol (DV_CODED_TEXT)
DV_SCALERating scales with non-integer steps (RM ≥ 1.1.0)value (real), symbol (DV_CODED_TEXT)
DV_BOOLEANTrue/falsevalue
DV_COUNTCountsmagnitude
DV_PROPORTIONRatios/percentagesnumerator, denominator, type
DV_DURATIONTime periodsISO 8601 duration (e.g., P2D, PT4H)
DV_IDENTIFIERExternal IDsid, type, issuer, assigner
DV_URIURIs/URLsvalue
DV_PARSABLEStructured textvalue, formalism

Step 6: Validation

Before finalizing a composition, verify:

  • All required fields are present (check template constraints)
  • Cardinality constraints are met (min/max occurrences)
  • _type annotations are correct (CANONICAL format)
  • Terminology codes are valid (use terminology_resolve if needed)
  • Date/time values are valid ISO 8601
  • Quantity units match archetype constraints
  • Composition metadata is complete (composer, language, territory, category)

Keep looking

Skills are one crate of 328,083. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.