99 lines
2.7 KiB
JSON
99 lines
2.7 KiB
JSON
{
|
|
"$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" }
|
|
}
|
|
}
|
|
}
|
|
]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|