diff --git a/docs/src/process-development/api-v2/guides/user-tasks-in-the-dsf.md b/docs/src/process-development/api-v2/guides/user-tasks-in-the-dsf.md index e763a90b0..84190190c 100644 --- a/docs/src/process-development/api-v2/guides/user-tasks-in-the-dsf.md +++ b/docs/src/process-development/api-v2/guides/user-tasks-in-the-dsf.md @@ -21,7 +21,7 @@ Below is a template for a [Questionnaire](https://www.hl7.org/fhir/R4/questionna ```xml - + diff --git a/docs/src/process-development/linter-tool/validation.md b/docs/src/process-development/linter-tool/validation.md index e578a5cf2..cb827e6e7 100644 --- a/docs/src/process-development/linter-tool/validation.md +++ b/docs/src/process-development/linter-tool/validation.md @@ -112,6 +112,28 @@ The linter performs comprehensive validation on BPMN 2.0 process definitions usi - The process engine only deploys and executes processes marked as executable - Non-executable processes are typically used for documentation or as templates +##### Process Version Tag Validation + +- **Requirement**: + - Process must define `camunda:versionTag` + - Expected placeholder value in DSF process plugins: `#{version}` + - Error: `BPMN_PROCESS_VERSION_TAG_MISSING_OR_EMPTY` (missing, empty/blank, or literal `"null"`) + - Warning: `BPMN_PROCESS_VERSION_TAG_NO_PLACEHOLDER` (present but without `#{version}`) + - Success: `SUCCESS` when `camunda:versionTag` contains `#{version}` + +- **Valid Example**: + - ✅ `` + +- **Error Examples**: + - ❌ `` (missing `camunda:versionTag`) + - ❌ `` (empty value) + - ❌ `` (literal `null`) + +- **Warning Examples**: + - ⚠️ `` + - ⚠️ `` + + #### Task Validation ##### Service Tasks @@ -638,9 +660,34 @@ Task resources are validated against the DSF Task base profile (`http://dsf.dev/ - Error: `FHIR_TASK_INPUT_SLICE_COUNT_BELOW_SLICE_MIN` - Error: `FHIR_TASK_INPUT_SLICE_COUNT_EXCEEDS_SLICE_MAX` -- **Terminology Validation**: - - Code/system combinations validated against DSF CodeSystems - - Error: `FHIR_TASK_UNKNOWN_CODE` + - **Terminology Validation**: + - Generic coding validation (outside `Task.input.type.coding`) checks code/system pairs against known DSF CodeSystems + - Error: `FHIR_TASK_UNKNOWN_CODE` + +- **Task.input.type.coding Terminology Validation (binding-driven)**: + - Validation for `Task.input.type.coding` is performed in three strict, ordered checks: + 1. **Known CodeSystem check**: + - `Task.input.type.coding.system` must be a known CodeSystem URI + - Error: `FHIR_TASK_INPUT_CODING_SYSTEM_UNKNOWN` + - If this check fails, subsequent checks for that input are skipped + 2. **Binding context check**: + - The system must be allowed by the slice-specific binding context from the referenced `StructureDefinition` + - Resolution order: + - `fixedUri` on `Task.input:sliceName.type.coding.system` (exact match required) + - `binding.valueSet` on `Task.input:sliceName.type` (fallback: `...type.coding`) and membership in `ValueSet.compose.include.system` + - Error: `FHIR_TASK_INPUT_CODING_SYSTEM_NOT_IN_VALUE_SET` + - If this check fails, code validation for that input is skipped + 3. **Code-in-system check**: + - `Task.input.type.coding.code` must exist in the specified CodeSystem + - Error: `FHIR_TASK_INPUT_CODING_CODE_UNKNOWN_FOR_SYSTEM` + +- **Binding Resolution Notes**: + - ValueSet checks are strict and context-aware; no permissive fallback to unrelated ValueSets is used + - If a slice declares `binding.valueSet` but the ValueSet is not loaded into the cache, validation fails explicitly with: + `FHIR_TASK_INPUT_CODING_SYSTEM_NOT_IN_VALUE_SET` + - If no resolvable binding context exists for a slice (`fixedUri` and `binding.valueSet` both missing), validation fails explicitly with: + `FHIR_TASK_INPUT_CODING_SYSTEM_NOT_IN_VALUE_SET` + - Inputs already failing structural checks (`FHIR_TASK_INPUT_REQUIRED_CODING_SYSTEM_AND_CODING_CODE`) are not re-reported by terminology checks #### StructureDefinition Resources