{ "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "vignette.case_worksheet_rubric.v1", "title": "Vignette case worksheet rubric", "type": "object", "additionalProperties": false, "required": [ "schema_version", "rubric_id", "title", "status", "content_owner", "scoring_enabled", "approval", "sections" ], "properties": { "schema_version": { "const": "vignette.case_worksheet_rubric.v1" }, "rubric_id": { "type": "string", "minLength": 1 }, "title": { "type": "string", "minLength": 1 }, "status": { "enum": ["scaffold_only", "draft", "approved"] }, "content_owner": { "const": "clinical_team" }, "scoring_enabled": { "type": "boolean" }, "approval": { "anyOf": [ { "type": "null" }, { "type": "object", "additionalProperties": false, "required": ["clinical_reviewer", "approved_at"], "properties": { "clinical_reviewer": { "type": "string", "minLength": 1 }, "approved_at": { "type": "string", "minLength": 1 }, "notes": { "type": "string" } } } ] }, "notes": { "type": "array", "items": { "type": "string" }, "default": [] }, "sections": { "type": "array", "minItems": 1, "items": { "$ref": "#/$defs/section" } } }, "$defs": { "section": { "type": "object", "additionalProperties": false, "required": ["key", "title", "items"], "properties": { "key": { "type": "string", "minLength": 1 }, "title": { "type": "string", "minLength": 1 }, "items": { "type": "array", "minItems": 1, "items": { "$ref": "#/$defs/item" } } } }, "item": { "type": "object", "additionalProperties": false, "required": ["key", "label", "criteria", "score_scale"], "properties": { "key": { "type": "string", "minLength": 1 }, "label": { "type": "string", "minLength": 1 }, "criteria": { "type": "array", "items": { "type": "string" }, "default": [] }, "score_scale": { "anyOf": [ { "type": "null" }, { "type": "object", "additionalProperties": false, "required": ["min", "max", "anchors"], "properties": { "min": { "type": "integer" }, "max": { "type": "integer" }, "anchors": { "type": "array", "minItems": 2, "items": { "type": "string" } } } } ] } } } } }