diff --git a/api/legalconsenthub.yml b/api/legalconsenthub.yml index 3cf17ca..bbc496f 100644 --- a/api/legalconsenthub.yml +++ b/api/legalconsenthub.yml @@ -1548,10 +1548,9 @@ components: format: uuid nullable: true visibilityConditions: - type: array - items: - $ref: "#/components/schemas/FormElementVisibilityCondition" - description: List of visibility conditions (all must be met for element to be visible - AND logic) + $ref: "#/components/schemas/VisibilityConditionGroup" + nullable: true + description: Recursive visibility condition tree (AND/OR groups with leaf conditions) sectionSpawnTriggers: type: array items: @@ -1612,9 +1611,8 @@ components: items: $ref: "#/components/schemas/FormOptionDto" visibilityConditions: - type: array - items: - $ref: "#/components/schemas/FormElementVisibilityCondition" + $ref: "#/components/schemas/VisibilityConditionGroup" + nullable: true sectionSpawnTriggers: type: array items: @@ -1643,6 +1641,8 @@ components: $ref: "#/components/schemas/EmployeeDataCategory" columnConfig: $ref: "#/components/schemas/TableColumnConfigDto" + visibilityConditions: + $ref: "#/components/schemas/VisibilityConditionGroup" TableColumnConfigDto: type: object @@ -1716,24 +1716,56 @@ components: - TABLE - FILE_UPLOAD - FormElementVisibilityCondition: + VisibilityConditionNode: type: object - required: - - formElementConditionType - - sourceFormElementReference + description: A visibility condition node - either a leaf (single condition) or a group (AND/OR of conditions). Use nodeType to determine which properties are relevant. properties: + nodeType: + type: string + enum: [LEAF, GROUP] + default: LEAF + description: Type discriminator - LEAF for single condition, GROUP for AND/OR of conditions + # Leaf properties (used when nodeType=LEAF) formElementConditionType: $ref: "#/components/schemas/VisibilityConditionType" sourceFormElementReference: type: string - description: Reference key of the source form element to check + nullable: true + description: "[LEAF] Reference key of the source form element to check" formElementExpectedValue: type: string nullable: true - description: Expected value to compare against the source element's value property. Not required for IS_EMPTY and IS_NOT_EMPTY operators. + description: "[LEAF] Expected value to compare against the source element's value" formElementOperator: $ref: "#/components/schemas/VisibilityConditionOperator" - default: EQUALS + # Group properties (used when nodeType=GROUP) + groupOperator: + type: string + enum: [AND, OR] + nullable: true + description: "[GROUP] Logical operator to combine conditions" + conditions: + type: array + nullable: true + items: + $ref: "#/components/schemas/VisibilityConditionNode" + description: "[GROUP] List of child conditions" + + VisibilityConditionGroup: + type: object + description: Root-level visibility condition group containing child conditions + properties: + operator: + type: string + enum: [AND, OR] + nullable: true + description: Logical operator to combine conditions + conditions: + type: array + nullable: true + items: + $ref: "#/components/schemas/VisibilityConditionNode" + description: List of child conditions (can be leaves or nested groups) VisibilityConditionType: type: string @@ -1748,6 +1780,8 @@ components: - NOT_EQUALS - IS_EMPTY - IS_NOT_EMPTY + - CONTAINS + - NOT_CONTAINS SectionSpawnTriggerDto: type: object diff --git a/legalconsenthub-backend/src/main/kotlin/com/betriebsratkanzlei/legalconsenthub/application_form/ApplicationFormFormatService.kt b/legalconsenthub-backend/src/main/kotlin/com/betriebsratkanzlei/legalconsenthub/application_form/ApplicationFormFormatService.kt index 82000a3..ba387e3 100644 --- a/legalconsenthub-backend/src/main/kotlin/com/betriebsratkanzlei/legalconsenthub/application_form/ApplicationFormFormatService.kt +++ b/legalconsenthub-backend/src/main/kotlin/com/betriebsratkanzlei/legalconsenthub/application_form/ApplicationFormFormatService.kt @@ -11,7 +11,6 @@ import com.betriebsratkanzlei.legalconsenthub_api.model.ApplicationFormSnapshotD import com.betriebsratkanzlei.legalconsenthub_api.model.FormElementSectionSnapshotDto import com.betriebsratkanzlei.legalconsenthub_api.model.FormElementSnapshotDto import com.betriebsratkanzlei.legalconsenthub_api.model.FormElementSubSectionSnapshotDto -import com.betriebsratkanzlei.legalconsenthub_api.model.FormElementVisibilityCondition import com.fasterxml.jackson.core.type.TypeReference import com.fasterxml.jackson.module.kotlin.jacksonObjectMapper import org.springframework.stereotype.Service @@ -21,6 +20,8 @@ import java.time.Instant import java.time.LocalDate import java.time.ZoneId import java.time.format.DateTimeFormatter +import com.betriebsratkanzlei.legalconsenthub_api.model.VisibilityConditionGroup as VisibilityConditionGroupDto +import com.betriebsratkanzlei.legalconsenthub_api.model.VisibilityConditionNode as VisibilityConditionNodeDto import com.betriebsratkanzlei.legalconsenthub_api.model.VisibilityConditionOperator as VisibilityConditionOperatorDto import com.betriebsratkanzlei.legalconsenthub_api.model.VisibilityConditionType as VisibilityConditionTypeDto @@ -168,12 +169,12 @@ class ApplicationFormFormatService( if (element.options.isEmpty()) return "Keine Daten" to false val objectMapper = jacksonObjectMapper() - val headers = element.options.map { LatexEscaper.escape(it.label ?: "") } + val headers = element.options.map { LatexEscaper.escape(it.label) } val columnData = element.options.map { option -> try { val typeRef = object : TypeReference>() {} - objectMapper.readValue(option.value ?: "[]", typeRef) + objectMapper.readValue(option.value, typeRef) } catch (e: Exception) { emptyList() } @@ -268,26 +269,61 @@ class ApplicationFormFormatService( element: FormElementSnapshotDto, formElementsByRef: Map, ): Boolean { - val conditions = element.visibilityConditions - if (conditions.isNullOrEmpty()) return true + val group = element.visibilityConditions ?: return true + if (group.conditions?.isEmpty() != false) return true - // All conditions must be met (AND logic) - return conditions.all { condition -> evaluateSingleCondition(condition, formElementsByRef) } + return evaluateGroup(group, formElementsByRef) } - private fun evaluateSingleCondition( - condition: FormElementVisibilityCondition, + private fun evaluateGroup( + group: VisibilityConditionGroupDto, formElementsByRef: Map, ): Boolean { - val sourceElement = formElementsByRef[condition.sourceFormElementReference] ?: return false + val conditions = group.conditions ?: return true + val results = conditions.map { evaluateNode(it, formElementsByRef) } + return when (group.operator) { + VisibilityConditionGroupDto.Operator.AND -> results.all { it } + VisibilityConditionGroupDto.Operator.OR -> results.any { it } + null -> true + } + } + + private fun evaluateNode( + node: VisibilityConditionNodeDto, + formElementsByRef: Map, + ): Boolean = + when (node.nodeType) { + VisibilityConditionNodeDto.NodeType.LEAF, null -> evaluateLeafCondition(node, formElementsByRef) + VisibilityConditionNodeDto.NodeType.GROUP -> { + val nestedGroup = + VisibilityConditionGroupDto( + operator = + when (node.groupOperator) { + VisibilityConditionNodeDto.GroupOperator.AND -> VisibilityConditionGroupDto.Operator.AND + VisibilityConditionNodeDto.GroupOperator.OR -> VisibilityConditionGroupDto.Operator.OR + null -> VisibilityConditionGroupDto.Operator.AND + }, + conditions = node.conditions, + ) + evaluateGroup(nestedGroup, formElementsByRef) + } + } + + private fun evaluateLeafCondition( + node: VisibilityConditionNodeDto, + formElementsByRef: Map, + ): Boolean { + val sourceRef = node.sourceFormElementReference ?: return false + val sourceElement = formElementsByRef[sourceRef] ?: return false val sourceValue = getFormElementValue(sourceElement) - val operator = condition.formElementOperator ?: VisibilityConditionOperatorDto.EQUALS - val conditionMet = evaluateCondition(sourceValue, condition.formElementExpectedValue, operator) + val operator = node.formElementOperator ?: VisibilityConditionOperatorDto.EQUALS + val conditionMet = evaluateCondition(sourceValue, node.formElementExpectedValue ?: "", operator) - return when (condition.formElementConditionType) { + return when (node.formElementConditionType) { VisibilityConditionTypeDto.SHOW -> conditionMet VisibilityConditionTypeDto.HIDE -> !conditionMet + null -> conditionMet } } @@ -314,5 +350,9 @@ class ApplicationFormFormatService( expectedValue?.let { !actualValue.equals(it, ignoreCase = true) } ?: false VisibilityConditionOperatorDto.IS_EMPTY -> actualValue.isEmpty() VisibilityConditionOperatorDto.IS_NOT_EMPTY -> actualValue.isNotEmpty() + VisibilityConditionOperatorDto.CONTAINS -> + expectedValue?.let { actualValue.contains(it, ignoreCase = true) } ?: false + VisibilityConditionOperatorDto.NOT_CONTAINS -> + expectedValue?.let { !actualValue.contains(it, ignoreCase = true) } ?: true } } diff --git a/legalconsenthub-backend/src/main/kotlin/com/betriebsratkanzlei/legalconsenthub/application_form_version/ApplicationFormVersionService.kt b/legalconsenthub-backend/src/main/kotlin/com/betriebsratkanzlei/legalconsenthub/application_form_version/ApplicationFormVersionService.kt index 4272e04..a5beacb 100644 --- a/legalconsenthub-backend/src/main/kotlin/com/betriebsratkanzlei/legalconsenthub/application_form_version/ApplicationFormVersionService.kt +++ b/legalconsenthub-backend/src/main/kotlin/com/betriebsratkanzlei/legalconsenthub/application_form_version/ApplicationFormVersionService.kt @@ -127,11 +127,9 @@ class ApplicationFormVersionService( type = element.type, options = element.options.map { formOptionMapper.toFormOptionDto(it) }, visibilityConditions = - element.visibilityConditions - .map { - visibilityConditionMapper - .toFormElementVisibilityConditionDto(it) - }, + element.visibilityConditions?.let { + visibilityConditionMapper.toGroupConditionDto(it) + }, sectionSpawnTriggers = element.sectionSpawnTriggers.map { spawnTriggerMapper.toSectionSpawnTriggerDto(it) @@ -186,10 +184,9 @@ class ApplicationFormVersionService( .map { formOptionMapper.toFormOption(it) } .toMutableList(), visibilityConditions = - elementSnapshot.visibilityConditions - ?.map { visibilityConditionMapper.toFormElementVisibilityCondition(it) } - ?.toMutableList() - ?: mutableListOf(), + elementSnapshot.visibilityConditions?.let { + visibilityConditionMapper.toGroupCondition(it) + }, sectionSpawnTriggers = elementSnapshot.sectionSpawnTriggers ?.map { spawnTriggerMapper.toSectionSpawnTrigger(it) } diff --git a/legalconsenthub-backend/src/main/kotlin/com/betriebsratkanzlei/legalconsenthub/config/JacksonConfig.kt b/legalconsenthub-backend/src/main/kotlin/com/betriebsratkanzlei/legalconsenthub/config/JacksonConfig.kt new file mode 100644 index 0000000..49d2abc --- /dev/null +++ b/legalconsenthub-backend/src/main/kotlin/com/betriebsratkanzlei/legalconsenthub/config/JacksonConfig.kt @@ -0,0 +1,11 @@ +package com.betriebsratkanzlei.legalconsenthub.config + +import com.fasterxml.jackson.databind.Module +import org.springframework.context.annotation.Bean +import org.springframework.context.annotation.Configuration + +@Configuration +class JacksonConfig { + @Bean + fun visibilityConditionJacksonModule(): Module = visibilityConditionModule() +} diff --git a/legalconsenthub-backend/src/main/kotlin/com/betriebsratkanzlei/legalconsenthub/config/VisibilityConditionNodeDeserializer.kt b/legalconsenthub-backend/src/main/kotlin/com/betriebsratkanzlei/legalconsenthub/config/VisibilityConditionNodeDeserializer.kt new file mode 100644 index 0000000..f694941 --- /dev/null +++ b/legalconsenthub-backend/src/main/kotlin/com/betriebsratkanzlei/legalconsenthub/config/VisibilityConditionNodeDeserializer.kt @@ -0,0 +1,99 @@ +package com.betriebsratkanzlei.legalconsenthub.config + +import com.betriebsratkanzlei.legalconsenthub_api.model.VisibilityConditionNode +import com.betriebsratkanzlei.legalconsenthub_api.model.VisibilityConditionOperator +import com.betriebsratkanzlei.legalconsenthub_api.model.VisibilityConditionType +import com.fasterxml.jackson.core.JsonGenerator +import com.fasterxml.jackson.core.JsonParser +import com.fasterxml.jackson.databind.DeserializationContext +import com.fasterxml.jackson.databind.JsonDeserializer +import com.fasterxml.jackson.databind.JsonNode +import com.fasterxml.jackson.databind.JsonSerializer +import com.fasterxml.jackson.databind.SerializerProvider +import com.fasterxml.jackson.databind.module.SimpleModule + +class VisibilityConditionNodeDeserializer : JsonDeserializer() { + override fun deserialize( + p: JsonParser, + ctxt: DeserializationContext, + ): VisibilityConditionNode { + val node = p.codec.readTree(p) + + val nodeType = node.get("nodeType")?.asText() + + return if (nodeType == "GROUP") { + val groupOperator = + node.get("groupOperator")?.asText()?.let { + VisibilityConditionNode.GroupOperator.forValue(it) + } + val conditions = + node.get("conditions")?.map { childNode -> + val childParser = childNode.traverse(p.codec) + childParser.nextToken() + deserialize(childParser, ctxt) + } ?: emptyList() + VisibilityConditionNode( + nodeType = VisibilityConditionNode.NodeType.GROUP, + groupOperator = groupOperator, + conditions = conditions, + ) + } else { + // Default to LEAF for backward compatibility + val sourceRef = node.get("sourceFormElementReference")?.asText() + val conditionType = + node.get("formElementConditionType")?.asText()?.let { + VisibilityConditionType.valueOf(it) + } + val expectedValue = node.get("formElementExpectedValue")?.asText() + val formElementOperator = + node.get("formElementOperator")?.asText()?.let { + VisibilityConditionOperator.valueOf(it) + } + VisibilityConditionNode( + nodeType = VisibilityConditionNode.NodeType.LEAF, + sourceFormElementReference = sourceRef, + formElementConditionType = conditionType, + formElementExpectedValue = expectedValue, + formElementOperator = formElementOperator, + ) + } + } +} + +class VisibilityConditionNodeSerializer : JsonSerializer() { + override fun serialize( + value: VisibilityConditionNode, + gen: JsonGenerator, + serializers: SerializerProvider, + ) { + gen.writeStartObject() + gen.writeStringField("nodeType", (value.nodeType ?: VisibilityConditionNode.NodeType.LEAF).value) + + if (value.nodeType == VisibilityConditionNode.NodeType.GROUP) { + value.groupOperator?.let { gen.writeStringField("groupOperator", it.value) } + gen.writeArrayFieldStart("conditions") + value.conditions?.forEach { serialize(it, gen, serializers) } + gen.writeEndArray() + } else { + value.formElementConditionType?.let { + gen.writeStringField("formElementConditionType", it.value) + } + value.sourceFormElementReference?.let { + gen.writeStringField("sourceFormElementReference", it) + } + value.formElementExpectedValue?.let { + gen.writeStringField("formElementExpectedValue", it) + } + value.formElementOperator?.let { + gen.writeStringField("formElementOperator", it.value) + } + } + gen.writeEndObject() + } +} + +fun visibilityConditionModule(): SimpleModule = + SimpleModule("VisibilityConditionModule").apply { + addDeserializer(VisibilityConditionNode::class.java, VisibilityConditionNodeDeserializer()) + addSerializer(VisibilityConditionNode::class.java, VisibilityConditionNodeSerializer()) + } diff --git a/legalconsenthub-backend/src/main/kotlin/com/betriebsratkanzlei/legalconsenthub/form_element/FormElement.kt b/legalconsenthub-backend/src/main/kotlin/com/betriebsratkanzlei/legalconsenthub/form_element/FormElement.kt index 8ac7f3e..b4ea183 100644 --- a/legalconsenthub-backend/src/main/kotlin/com/betriebsratkanzlei/legalconsenthub/form_element/FormElement.kt +++ b/legalconsenthub-backend/src/main/kotlin/com/betriebsratkanzlei/legalconsenthub/form_element/FormElement.kt @@ -12,6 +12,8 @@ import jakarta.persistence.GeneratedValue import jakarta.persistence.Id import jakarta.persistence.JoinColumn import jakarta.persistence.ManyToOne +import org.hibernate.annotations.JdbcTypeCode +import org.hibernate.type.SqlTypes import java.util.UUID @Entity @@ -30,9 +32,9 @@ class FormElement( @ManyToOne @JoinColumn(name = "form_element_sub_section_id", nullable = false) var formElementSubSection: FormElementSubSection? = null, - @ElementCollection - @CollectionTable(name = "visibility_conditions", joinColumns = [JoinColumn(name = "form_element_id")]) - var visibilityConditions: MutableList = mutableListOf(), + @JdbcTypeCode(SqlTypes.JSON) + @Column(columnDefinition = "jsonb") + var visibilityConditions: GroupCondition? = null, @ElementCollection @CollectionTable(name = "section_spawn_triggers", joinColumns = [JoinColumn(name = "form_element_id")]) var sectionSpawnTriggers: MutableList = mutableListOf(), diff --git a/legalconsenthub-backend/src/main/kotlin/com/betriebsratkanzlei/legalconsenthub/form_element/FormElementMapper.kt b/legalconsenthub-backend/src/main/kotlin/com/betriebsratkanzlei/legalconsenthub/form_element/FormElementMapper.kt index e810cd7..87f73b2 100644 --- a/legalconsenthub-backend/src/main/kotlin/com/betriebsratkanzlei/legalconsenthub/form_element/FormElementMapper.kt +++ b/legalconsenthub-backend/src/main/kotlin/com/betriebsratkanzlei/legalconsenthub/form_element/FormElementMapper.kt @@ -22,8 +22,8 @@ class FormElementMapper( formElement.formElementSubSection?.id ?: throw IllegalStateException("FormElementSubSection ID must not be null!"), visibilityConditions = - formElement.visibilityConditions.map { - visibilityConditionMapper.toFormElementVisibilityConditionDto(it) + formElement.visibilityConditions?.let { + visibilityConditionMapper.toGroupConditionDto(it) }, sectionSpawnTriggers = formElement.sectionSpawnTriggers.map { @@ -49,10 +49,9 @@ class FormElementMapper( type = formElement.type, formElementSubSection = formElementSubSection, visibilityConditions = - formElement.visibilityConditions - ?.map { visibilityConditionMapper.toFormElementVisibilityCondition(it) } - ?.toMutableList() - ?: mutableListOf(), + formElement.visibilityConditions?.let { + visibilityConditionMapper.toGroupCondition(it) + }, sectionSpawnTriggers = formElement.sectionSpawnTriggers ?.map { spawnTriggerMapper.toSectionSpawnTrigger(it) } @@ -78,10 +77,9 @@ class FormElementMapper( type = formElement.type, formElementSubSection = formElementSubSection, visibilityConditions = - formElement.visibilityConditions - ?.map { visibilityConditionMapper.toFormElementVisibilityCondition(it) } - ?.toMutableList() - ?: mutableListOf(), + formElement.visibilityConditions?.let { + visibilityConditionMapper.toGroupCondition(it) + }, sectionSpawnTriggers = formElement.sectionSpawnTriggers ?.map { spawnTriggerMapper.toSectionSpawnTrigger(it) } diff --git a/legalconsenthub-backend/src/main/kotlin/com/betriebsratkanzlei/legalconsenthub/form_element/FormElementVisibilityCondition.kt b/legalconsenthub-backend/src/main/kotlin/com/betriebsratkanzlei/legalconsenthub/form_element/FormElementVisibilityCondition.kt deleted file mode 100644 index 3ece496..0000000 --- a/legalconsenthub-backend/src/main/kotlin/com/betriebsratkanzlei/legalconsenthub/form_element/FormElementVisibilityCondition.kt +++ /dev/null @@ -1,15 +0,0 @@ -package com.betriebsratkanzlei.legalconsenthub.form_element - -import jakarta.persistence.Embeddable -import jakarta.persistence.EnumType -import jakarta.persistence.Enumerated - -@Embeddable -data class FormElementVisibilityCondition( - @Enumerated(EnumType.STRING) - val formElementConditionType: VisibilityConditionType, - val sourceFormElementReference: String, - val formElementExpectedValue: String?, - @Enumerated(EnumType.STRING) - val formElementOperator: VisibilityConditionOperator = VisibilityConditionOperator.EQUALS, -) diff --git a/legalconsenthub-backend/src/main/kotlin/com/betriebsratkanzlei/legalconsenthub/form_element/FormElementVisibilityConditionMapper.kt b/legalconsenthub-backend/src/main/kotlin/com/betriebsratkanzlei/legalconsenthub/form_element/FormElementVisibilityConditionMapper.kt index cc1fb4f..a414f0d 100644 --- a/legalconsenthub-backend/src/main/kotlin/com/betriebsratkanzlei/legalconsenthub/form_element/FormElementVisibilityConditionMapper.kt +++ b/legalconsenthub-backend/src/main/kotlin/com/betriebsratkanzlei/legalconsenthub/form_element/FormElementVisibilityConditionMapper.kt @@ -1,34 +1,87 @@ package com.betriebsratkanzlei.legalconsenthub.form_element import org.springframework.stereotype.Component -import com.betriebsratkanzlei.legalconsenthub_api.model.FormElementVisibilityCondition as FormElementVisibilityConditionDto +import com.betriebsratkanzlei.legalconsenthub_api.model.VisibilityConditionGroup as VisibilityConditionGroupDto +import com.betriebsratkanzlei.legalconsenthub_api.model.VisibilityConditionNode as VisibilityConditionNodeDto import com.betriebsratkanzlei.legalconsenthub_api.model.VisibilityConditionOperator as VisibilityConditionOperatorDto import com.betriebsratkanzlei.legalconsenthub_api.model.VisibilityConditionType as VisibilityConditionTypeDto @Component class FormElementVisibilityConditionMapper { - fun toFormElementVisibilityConditionDto( - condition: FormElementVisibilityCondition, - ): FormElementVisibilityConditionDto = - FormElementVisibilityConditionDto( - formElementConditionType = toVisibilityConditionTypeDto(condition.formElementConditionType), - sourceFormElementReference = condition.sourceFormElementReference, - formElementExpectedValue = condition.formElementExpectedValue, - formElementOperator = toVisibilityConditionOperatorDto(condition.formElementOperator), + fun toGroupConditionDto(group: GroupCondition): VisibilityConditionGroupDto = + VisibilityConditionGroupDto( + operator = toGroupOperatorDto(group.operator), + conditions = group.conditions.map { toNodeDto(it) }, ) - fun toFormElementVisibilityCondition( - conditionDto: FormElementVisibilityConditionDto, - ): FormElementVisibilityCondition = - FormElementVisibilityCondition( - formElementConditionType = toVisibilityConditionType(conditionDto.formElementConditionType), - sourceFormElementReference = conditionDto.sourceFormElementReference, - formElementExpectedValue = conditionDto.formElementExpectedValue, - formElementOperator = - conditionDto.formElementOperator?.let { toVisibilityConditionOperator(it) } - ?: VisibilityConditionOperator.EQUALS, + fun toGroupCondition(groupDto: VisibilityConditionGroupDto): GroupCondition = + GroupCondition( + operator = toGroupOperator(groupDto.operator ?: VisibilityConditionGroupDto.Operator.AND), + conditions = groupDto.conditions?.map { toNode(it) } ?: emptyList(), ) + private fun toNodeDto(node: VisibilityConditionNode): VisibilityConditionNodeDto = + when (node) { + is LeafCondition -> + VisibilityConditionNodeDto( + nodeType = VisibilityConditionNodeDto.NodeType.LEAF, + sourceFormElementReference = node.sourceFormElementReference, + formElementConditionType = node.formElementConditionType?.let { toVisibilityConditionTypeDto(it) }, + formElementExpectedValue = node.formElementExpectedValue, + formElementOperator = toVisibilityConditionOperatorDto(node.formElementOperator), + ) + + is GroupCondition -> + VisibilityConditionNodeDto( + nodeType = VisibilityConditionNodeDto.NodeType.GROUP, + groupOperator = toNodeGroupOperatorDto(node.operator), + conditions = node.conditions.map { toNodeDto(it) }, + ) + } + + private fun toNode(nodeDto: VisibilityConditionNodeDto): VisibilityConditionNode = + when (nodeDto.nodeType) { + VisibilityConditionNodeDto.NodeType.GROUP -> + GroupCondition( + operator = toGroupOperatorFromNode(nodeDto.groupOperator), + conditions = nodeDto.conditions?.map { toNode(it) } ?: emptyList(), + ) + VisibilityConditionNodeDto.NodeType.LEAF, null -> + LeafCondition( + formElementConditionType = nodeDto.formElementConditionType?.let { toVisibilityConditionType(it) }, + sourceFormElementReference = nodeDto.sourceFormElementReference ?: "", + formElementExpectedValue = nodeDto.formElementExpectedValue, + formElementOperator = + nodeDto.formElementOperator?.let { toVisibilityConditionOperator(it) } + ?: VisibilityConditionOperator.EQUALS, + ) + } + + private fun toGroupOperatorDto(op: GroupOperator): VisibilityConditionGroupDto.Operator = + when (op) { + GroupOperator.AND -> VisibilityConditionGroupDto.Operator.AND + GroupOperator.OR -> VisibilityConditionGroupDto.Operator.OR + } + + private fun toGroupOperator(op: VisibilityConditionGroupDto.Operator): GroupOperator = + when (op) { + VisibilityConditionGroupDto.Operator.AND -> GroupOperator.AND + VisibilityConditionGroupDto.Operator.OR -> GroupOperator.OR + } + + private fun toNodeGroupOperatorDto(op: GroupOperator): VisibilityConditionNodeDto.GroupOperator = + when (op) { + GroupOperator.AND -> VisibilityConditionNodeDto.GroupOperator.AND + GroupOperator.OR -> VisibilityConditionNodeDto.GroupOperator.OR + } + + private fun toGroupOperatorFromNode(op: VisibilityConditionNodeDto.GroupOperator?): GroupOperator = + when (op) { + VisibilityConditionNodeDto.GroupOperator.AND -> GroupOperator.AND + VisibilityConditionNodeDto.GroupOperator.OR -> GroupOperator.OR + null -> GroupOperator.AND + } + private fun toVisibilityConditionTypeDto(type: VisibilityConditionType): VisibilityConditionTypeDto = when (type) { VisibilityConditionType.SHOW -> VisibilityConditionTypeDto.SHOW @@ -45,27 +98,23 @@ class FormElementVisibilityConditionMapper { operator: VisibilityConditionOperator, ): VisibilityConditionOperatorDto = when (operator) { - VisibilityConditionOperator.EQUALS -> - VisibilityConditionOperatorDto.EQUALS - VisibilityConditionOperator.NOT_EQUALS -> - VisibilityConditionOperatorDto.NOT_EQUALS - VisibilityConditionOperator.IS_EMPTY -> - VisibilityConditionOperatorDto.IS_EMPTY - VisibilityConditionOperator.IS_NOT_EMPTY -> - VisibilityConditionOperatorDto.IS_NOT_EMPTY + VisibilityConditionOperator.EQUALS -> VisibilityConditionOperatorDto.EQUALS + VisibilityConditionOperator.NOT_EQUALS -> VisibilityConditionOperatorDto.NOT_EQUALS + VisibilityConditionOperator.IS_EMPTY -> VisibilityConditionOperatorDto.IS_EMPTY + VisibilityConditionOperator.IS_NOT_EMPTY -> VisibilityConditionOperatorDto.IS_NOT_EMPTY + VisibilityConditionOperator.CONTAINS -> VisibilityConditionOperatorDto.CONTAINS + VisibilityConditionOperator.NOT_CONTAINS -> VisibilityConditionOperatorDto.NOT_CONTAINS } private fun toVisibilityConditionOperator( operatorDto: VisibilityConditionOperatorDto, ): VisibilityConditionOperator = when (operatorDto) { - VisibilityConditionOperatorDto.EQUALS -> - VisibilityConditionOperator.EQUALS - VisibilityConditionOperatorDto.NOT_EQUALS -> - VisibilityConditionOperator.NOT_EQUALS - VisibilityConditionOperatorDto.IS_EMPTY -> - VisibilityConditionOperator.IS_EMPTY - VisibilityConditionOperatorDto.IS_NOT_EMPTY -> - VisibilityConditionOperator.IS_NOT_EMPTY + VisibilityConditionOperatorDto.EQUALS -> VisibilityConditionOperator.EQUALS + VisibilityConditionOperatorDto.NOT_EQUALS -> VisibilityConditionOperator.NOT_EQUALS + VisibilityConditionOperatorDto.IS_EMPTY -> VisibilityConditionOperator.IS_EMPTY + VisibilityConditionOperatorDto.IS_NOT_EMPTY -> VisibilityConditionOperator.IS_NOT_EMPTY + VisibilityConditionOperatorDto.CONTAINS -> VisibilityConditionOperator.CONTAINS + VisibilityConditionOperatorDto.NOT_CONTAINS -> VisibilityConditionOperator.NOT_CONTAINS } } diff --git a/legalconsenthub-backend/src/main/kotlin/com/betriebsratkanzlei/legalconsenthub/form_element/FormOption.kt b/legalconsenthub-backend/src/main/kotlin/com/betriebsratkanzlei/legalconsenthub/form_element/FormOption.kt index 2c767fa..04eb66d 100644 --- a/legalconsenthub-backend/src/main/kotlin/com/betriebsratkanzlei/legalconsenthub/form_element/FormOption.kt +++ b/legalconsenthub-backend/src/main/kotlin/com/betriebsratkanzlei/legalconsenthub/form_element/FormOption.kt @@ -7,6 +7,8 @@ import jakarta.persistence.AttributeOverrides import jakarta.persistence.Column import jakarta.persistence.Embeddable import jakarta.persistence.Embedded +import org.hibernate.annotations.JdbcTypeCode +import org.hibernate.type.SqlTypes @Embeddable class FormOption( @@ -35,4 +37,7 @@ class FormOption( AttributeOverride(name = "isCheckbox", column = Column(name = "col_config_is_checkbox")), ) var columnConfig: TableColumnConfig? = null, + @JdbcTypeCode(SqlTypes.JSON) + @Column(columnDefinition = "jsonb", name = "visibility_conditions") + var visibilityConditions: GroupCondition? = null, ) diff --git a/legalconsenthub-backend/src/main/kotlin/com/betriebsratkanzlei/legalconsenthub/form_element/FormOptionMapper.kt b/legalconsenthub-backend/src/main/kotlin/com/betriebsratkanzlei/legalconsenthub/form_element/FormOptionMapper.kt index 8faf9d9..f890125 100644 --- a/legalconsenthub-backend/src/main/kotlin/com/betriebsratkanzlei/legalconsenthub/form_element/FormOptionMapper.kt +++ b/legalconsenthub-backend/src/main/kotlin/com/betriebsratkanzlei/legalconsenthub/form_element/FormOptionMapper.kt @@ -6,6 +6,7 @@ import org.springframework.stereotype.Component @Component class FormOptionMapper( private val columnConfigMapper: TableColumnConfigMapper, + private val visibilityConditionMapper: FormElementVisibilityConditionMapper, ) { fun toFormOptionDto(formOption: FormOption): FormOptionDto = FormOptionDto( @@ -14,6 +15,10 @@ class FormOptionMapper( processingPurpose = formOption.processingPurpose, employeeDataCategory = formOption.employeeDataCategory, columnConfig = formOption.columnConfig?.let { columnConfigMapper.toTableColumnConfigDto(it) }, + visibilityConditions = + formOption.visibilityConditions?.let { + visibilityConditionMapper.toGroupConditionDto(it) + }, ) fun toFormOption(formOptionDto: FormOptionDto): FormOption = @@ -23,5 +28,9 @@ class FormOptionMapper( processingPurpose = formOptionDto.processingPurpose, employeeDataCategory = formOptionDto.employeeDataCategory, columnConfig = formOptionDto.columnConfig?.let { columnConfigMapper.toTableColumnConfig(it) }, + visibilityConditions = + formOptionDto.visibilityConditions?.let { + visibilityConditionMapper.toGroupCondition(it) + }, ) } diff --git a/legalconsenthub-backend/src/main/kotlin/com/betriebsratkanzlei/legalconsenthub/form_element/SectionSpawnTriggerMapper.kt b/legalconsenthub-backend/src/main/kotlin/com/betriebsratkanzlei/legalconsenthub/form_element/SectionSpawnTriggerMapper.kt index 67b1be0..7127f89 100644 --- a/legalconsenthub-backend/src/main/kotlin/com/betriebsratkanzlei/legalconsenthub/form_element/SectionSpawnTriggerMapper.kt +++ b/legalconsenthub-backend/src/main/kotlin/com/betriebsratkanzlei/legalconsenthub/form_element/SectionSpawnTriggerMapper.kt @@ -43,6 +43,8 @@ class SectionSpawnTriggerMapper { VisibilityConditionOperator.NOT_EQUALS -> VisibilityConditionOperatorDto.NOT_EQUALS VisibilityConditionOperator.IS_EMPTY -> VisibilityConditionOperatorDto.IS_EMPTY VisibilityConditionOperator.IS_NOT_EMPTY -> VisibilityConditionOperatorDto.IS_NOT_EMPTY + VisibilityConditionOperator.CONTAINS -> VisibilityConditionOperatorDto.CONTAINS + VisibilityConditionOperator.NOT_CONTAINS -> VisibilityConditionOperatorDto.NOT_CONTAINS } private fun toVisibilityConditionOperator( @@ -53,5 +55,7 @@ class SectionSpawnTriggerMapper { VisibilityConditionOperatorDto.NOT_EQUALS -> VisibilityConditionOperator.NOT_EQUALS VisibilityConditionOperatorDto.IS_EMPTY -> VisibilityConditionOperator.IS_EMPTY VisibilityConditionOperatorDto.IS_NOT_EMPTY -> VisibilityConditionOperator.IS_NOT_EMPTY + VisibilityConditionOperatorDto.CONTAINS -> VisibilityConditionOperator.CONTAINS + VisibilityConditionOperatorDto.NOT_CONTAINS -> VisibilityConditionOperator.NOT_CONTAINS } } diff --git a/legalconsenthub-backend/src/main/kotlin/com/betriebsratkanzlei/legalconsenthub/form_element/TableColumnFilterMapper.kt b/legalconsenthub-backend/src/main/kotlin/com/betriebsratkanzlei/legalconsenthub/form_element/TableColumnFilterMapper.kt index 7c7fa91..ca42124 100644 --- a/legalconsenthub-backend/src/main/kotlin/com/betriebsratkanzlei/legalconsenthub/form_element/TableColumnFilterMapper.kt +++ b/legalconsenthub-backend/src/main/kotlin/com/betriebsratkanzlei/legalconsenthub/form_element/TableColumnFilterMapper.kt @@ -26,6 +26,8 @@ class TableColumnFilterMapper { VisibilityConditionOperator.NOT_EQUALS -> VisibilityConditionOperatorDto.NOT_EQUALS VisibilityConditionOperator.IS_EMPTY -> VisibilityConditionOperatorDto.IS_EMPTY VisibilityConditionOperator.IS_NOT_EMPTY -> VisibilityConditionOperatorDto.IS_NOT_EMPTY + VisibilityConditionOperator.CONTAINS -> VisibilityConditionOperatorDto.CONTAINS + VisibilityConditionOperator.NOT_CONTAINS -> VisibilityConditionOperatorDto.NOT_CONTAINS } private fun VisibilityConditionOperatorDto.toEntity(): VisibilityConditionOperator = @@ -34,5 +36,7 @@ class TableColumnFilterMapper { VisibilityConditionOperatorDto.NOT_EQUALS -> VisibilityConditionOperator.NOT_EQUALS VisibilityConditionOperatorDto.IS_EMPTY -> VisibilityConditionOperator.IS_EMPTY VisibilityConditionOperatorDto.IS_NOT_EMPTY -> VisibilityConditionOperator.IS_NOT_EMPTY + VisibilityConditionOperatorDto.CONTAINS -> VisibilityConditionOperator.CONTAINS + VisibilityConditionOperatorDto.NOT_CONTAINS -> VisibilityConditionOperator.NOT_CONTAINS } } diff --git a/legalconsenthub-backend/src/main/kotlin/com/betriebsratkanzlei/legalconsenthub/form_element/VisibilityConditionNode.kt b/legalconsenthub-backend/src/main/kotlin/com/betriebsratkanzlei/legalconsenthub/form_element/VisibilityConditionNode.kt new file mode 100644 index 0000000..7153e20 --- /dev/null +++ b/legalconsenthub-backend/src/main/kotlin/com/betriebsratkanzlei/legalconsenthub/form_element/VisibilityConditionNode.kt @@ -0,0 +1,31 @@ +package com.betriebsratkanzlei.legalconsenthub.form_element + +import com.fasterxml.jackson.annotation.JsonSubTypes +import com.fasterxml.jackson.annotation.JsonTypeInfo + +@JsonTypeInfo( + use = JsonTypeInfo.Id.DEDUCTION, + defaultImpl = LeafCondition::class, +) +@JsonSubTypes( + JsonSubTypes.Type(GroupCondition::class), + JsonSubTypes.Type(LeafCondition::class), +) +sealed interface VisibilityConditionNode + +data class GroupCondition( + val operator: GroupOperator, + val conditions: List, +) : VisibilityConditionNode + +data class LeafCondition( + val formElementConditionType: VisibilityConditionType? = null, + val sourceFormElementReference: String, + val formElementExpectedValue: String? = null, + val formElementOperator: VisibilityConditionOperator = VisibilityConditionOperator.EQUALS, +) : VisibilityConditionNode + +enum class GroupOperator { + AND, + OR, +} diff --git a/legalconsenthub-backend/src/main/kotlin/com/betriebsratkanzlei/legalconsenthub/form_element/VisibilityConditionOperator.kt b/legalconsenthub-backend/src/main/kotlin/com/betriebsratkanzlei/legalconsenthub/form_element/VisibilityConditionOperator.kt index 7782569..b3097f0 100644 --- a/legalconsenthub-backend/src/main/kotlin/com/betriebsratkanzlei/legalconsenthub/form_element/VisibilityConditionOperator.kt +++ b/legalconsenthub-backend/src/main/kotlin/com/betriebsratkanzlei/legalconsenthub/form_element/VisibilityConditionOperator.kt @@ -5,4 +5,6 @@ enum class VisibilityConditionOperator { NOT_EQUALS, IS_EMPTY, IS_NOT_EMPTY, + CONTAINS, + NOT_CONTAINS, } diff --git a/legalconsenthub-backend/src/main/kotlin/com/betriebsratkanzlei/legalconsenthub/seed/InitialApplicationFormSeeder.kt b/legalconsenthub-backend/src/main/kotlin/com/betriebsratkanzlei/legalconsenthub/seed/InitialApplicationFormSeeder.kt index f00e2a2..6a85c12 100644 --- a/legalconsenthub-backend/src/main/kotlin/com/betriebsratkanzlei/legalconsenthub/seed/InitialApplicationFormSeeder.kt +++ b/legalconsenthub-backend/src/main/kotlin/com/betriebsratkanzlei/legalconsenthub/seed/InitialApplicationFormSeeder.kt @@ -3,6 +3,7 @@ package com.betriebsratkanzlei.legalconsenthub.seed import com.betriebsratkanzlei.legalconsenthub.application_form.ApplicationFormMapper import com.betriebsratkanzlei.legalconsenthub.application_form.ApplicationFormRepository import com.betriebsratkanzlei.legalconsenthub.application_form_version.ApplicationFormVersionService +import com.betriebsratkanzlei.legalconsenthub.config.visibilityConditionModule import com.betriebsratkanzlei.legalconsenthub.user.User import com.betriebsratkanzlei.legalconsenthub.user.UserRepository import com.betriebsratkanzlei.legalconsenthub_api.model.ApplicationFormDto @@ -25,7 +26,10 @@ class InitialApplicationFormSeeder( private val userRepository: UserRepository, private val versionService: ApplicationFormVersionService, ) : ApplicationRunner { - private val yamlMapper = ObjectMapper(YAMLFactory()).findAndRegisterModules() + private val yamlMapper = + ObjectMapper( + YAMLFactory(), + ).findAndRegisterModules().registerModule(visibilityConditionModule()) override fun run(args: ApplicationArguments) { seedInitialFormIfMissing() diff --git a/legalconsenthub-backend/src/main/kotlin/com/betriebsratkanzlei/legalconsenthub/seed/InitialApplicationFormTemplateSeeder.kt b/legalconsenthub-backend/src/main/kotlin/com/betriebsratkanzlei/legalconsenthub/seed/InitialApplicationFormTemplateSeeder.kt index 9cad8a3..4a8c6a8 100644 --- a/legalconsenthub-backend/src/main/kotlin/com/betriebsratkanzlei/legalconsenthub/seed/InitialApplicationFormTemplateSeeder.kt +++ b/legalconsenthub-backend/src/main/kotlin/com/betriebsratkanzlei/legalconsenthub/seed/InitialApplicationFormTemplateSeeder.kt @@ -2,6 +2,7 @@ package com.betriebsratkanzlei.legalconsenthub.seed import com.betriebsratkanzlei.legalconsenthub.application_form.ApplicationFormMapper import com.betriebsratkanzlei.legalconsenthub.application_form.ApplicationFormRepository +import com.betriebsratkanzlei.legalconsenthub.config.visibilityConditionModule import com.betriebsratkanzlei.legalconsenthub.user.User import com.betriebsratkanzlei.legalconsenthub.user.UserRepository import com.betriebsratkanzlei.legalconsenthub_api.model.ApplicationFormDto @@ -22,7 +23,10 @@ class InitialApplicationFormTemplateSeeder( private val applicationFormMapper: ApplicationFormMapper, private val userRepository: UserRepository, ) : ApplicationRunner { - private val yamlMapper = ObjectMapper(YAMLFactory()).findAndRegisterModules() + private val yamlMapper = + ObjectMapper( + YAMLFactory(), + ).findAndRegisterModules().registerModule(visibilityConditionModule()) override fun run(args: ApplicationArguments) { seedInitialTemplateIfMissing() diff --git a/legalconsenthub-backend/src/main/resources/application-testcontainers.yaml b/legalconsenthub-backend/src/main/resources/application-testcontainers.yaml index a34882a..a8929d4 100644 --- a/legalconsenthub-backend/src/main/resources/application-testcontainers.yaml +++ b/legalconsenthub-backend/src/main/resources/application-testcontainers.yaml @@ -13,7 +13,7 @@ spring: database-platform: org.hibernate.dialect.PostgreSQLDialect hibernate: ddl-auto: create - show-sql: true + show-sql: false properties: hibernate: format_sql: true diff --git a/legalconsenthub-backend/src/main/resources/db/migrations/001-schema.sql b/legalconsenthub-backend/src/main/resources/db/migrations/001-schema.sql index 82fca24..4fd6333 100644 --- a/legalconsenthub-backend/src/main/resources/db/migrations/001-schema.sql +++ b/legalconsenthub-backend/src/main/resources/db/migrations/001-schema.sql @@ -68,12 +68,13 @@ create table form_element_options form_element_id uuid not null, col_config_filter_expected_val varchar(255), col_config_filter_operator varchar(255) check (col_config_filter_operator in - ('EQUALS', 'NOT_EQUALS', 'IS_EMPTY', - 'IS_NOT_EMPTY')), + ('EQUALS', 'NOT_EQUALS', 'IS_EMPTY', 'IS_NOT_EMPTY', + 'CONTAINS', 'NOT_CONTAINS')), col_config_source_table_ref varchar(255), label varchar(255) not null, option_value TEXT not null, - row_constraint_table_reference varchar(255) + row_constraint_table_reference varchar(255), + visibility_conditions jsonb ); create table form_element @@ -89,9 +90,11 @@ create table form_element reference varchar(255), row_preset_filter_expected_val varchar(255), row_preset_filter_operator varchar(255) check (row_preset_filter_operator in - ('EQUALS', 'NOT_EQUALS', 'IS_EMPTY', 'IS_NOT_EMPTY')), + ('EQUALS', 'NOT_EQUALS', 'IS_EMPTY', 'IS_NOT_EMPTY', 'CONTAINS', + 'NOT_CONTAINS')), row_preset_source_table_ref varchar(255), title varchar(255), + visibility_conditions jsonb, primary key (id) ); @@ -141,7 +144,8 @@ create table section_spawn_triggers section_spawn_condition_type varchar(255) check (section_spawn_condition_type in ('SHOW', 'HIDE')), section_spawn_expected_value varchar(255), section_spawn_operator varchar(255) check (section_spawn_operator in - ('EQUALS', 'NOT_EQUALS', 'IS_EMPTY', 'IS_NOT_EMPTY')), + ('EQUALS', 'NOT_EQUALS', 'IS_EMPTY', 'IS_NOT_EMPTY', 'CONTAINS', + 'NOT_CONTAINS')), template_reference varchar(255) ); @@ -169,16 +173,6 @@ create table uploaded_file primary key (id) ); -create table visibility_conditions -( - form_element_id uuid not null, - form_element_condition_type varchar(255) check (form_element_condition_type in ('SHOW', 'HIDE')), - form_element_expected_value varchar(255), - form_element_operator varchar(255) check (form_element_operator in - ('EQUALS', 'NOT_EQUALS', 'IS_EMPTY', 'IS_NOT_EMPTY')), - source_form_element_reference varchar(255) -); - alter table if exists application_form add constraint FKhtad5onoy2jknhtyfmx6cvvey foreign key (created_by_id) @@ -259,8 +253,3 @@ alter table if exists uploaded_file add constraint FKtg323a9339lx0do79gu4eftao foreign key (uploaded_by_id) references app_user; - -alter table if exists visibility_conditions - add constraint FK5xuf7bd179ogpq5a1m3g8q7jb - foreign key (form_element_id) - references form_element; diff --git a/legalconsenthub-backend/src/main/resources/seed/initial_application_form.yaml b/legalconsenthub-backend/src/main/resources/seed/initial_application_form.yaml index 98c5945..7fbc2aa 100644 --- a/legalconsenthub-backend/src/main/resources/seed/initial_application_form.yaml +++ b/legalconsenthub-backend/src/main/resources/seed/initial_application_form.yaml @@ -37,18 +37,10 @@ formElementSections: sectionSpawnConditionType: SHOW sectionSpawnExpectedValue: Einführung sectionSpawnOperator: EQUALS - - templateReference: verarbeitung_mitarbeiterdaten_template - sectionSpawnConditionType: SHOW - sectionSpawnExpectedValue: Einführung - sectionSpawnOperator: EQUALS - templateReference: loeschkonzept_template sectionSpawnConditionType: SHOW sectionSpawnExpectedValue: Einführung sectionSpawnOperator: EQUALS - - templateReference: schnittstellen_template - sectionSpawnConditionType: SHOW - sectionSpawnExpectedValue: Einführung - sectionSpawnOperator: EQUALS - templateReference: datenschutz_template sectionSpawnConditionType: SHOW sectionSpawnExpectedValue: Einführung @@ -58,10 +50,44 @@ formElementSections: sectionSpawnExpectedValue: Einführung sectionSpawnOperator: EQUALS - # Einführung: Allgemeine Informationen + # Allgemeine Informationen (Einführung, Ablösung, Änderung) - title: Allgemeine Informationen - subtitle: Grundlegende Informationen zur Einführung + subtitle: Grundlegende Informationen formElements: + - reference: abloesung_name_system + title: Wie lautet der Name des abgelösten IT-Systems? + description: '' + options: + - value: '' + label: Name des abgelösten IT-Systems + processingPurpose: SYSTEM_OPERATION + employeeDataCategory: NON_CRITICAL + type: TEXTAREA + visibilityConditions: + operator: AND + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: art_der_massnahme + formElementExpectedValue: Einführung mit einhergehender Ablösung + formElementOperator: EQUALS + - reference: aenderung_zeitpunkt + title: Wann ist der geplante Zeitpunkt der Änderungen? + description: '' + options: + - value: '' + label: Geplanter Zeitpunkt + processingPurpose: SYSTEM_OPERATION + employeeDataCategory: NON_CRITICAL + type: DATE + visibilityConditions: + operator: AND + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: art_der_massnahme + formElementExpectedValue: Änderung IT-System + formElementOperator: EQUALS - reference: testphase_findet_statt title: Findet eine Testphase statt? description: '' @@ -76,10 +102,17 @@ formElementSections: employeeDataCategory: NON_CRITICAL type: RADIOBUTTON visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: art_der_massnahme - formElementExpectedValue: Einführung - formElementOperator: EQUALS + operator: OR + conditions: + - sourceFormElementReference: art_der_massnahme + formElementExpectedValue: Einführung + formElementOperator: EQUALS + - sourceFormElementReference: art_der_massnahme + formElementExpectedValue: Einführung mit einhergehender Ablösung + formElementOperator: EQUALS + - sourceFormElementReference: art_der_massnahme + formElementExpectedValue: Änderung IT-System + formElementOperator: EQUALS - reference: mitarbeiterdaten_nicht_anonymisiert title: Werden Arbeitnehmerdaten in der Testphase nicht-anonymisiert oder -pseudonymsiert verarbeitet? description: '' @@ -94,10 +127,13 @@ formElementSections: employeeDataCategory: NON_CRITICAL type: RADIOBUTTON visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: testphase_findet_statt - formElementExpectedValue: Ja - formElementOperator: EQUALS + operator: AND + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: testphase_findet_statt + formElementExpectedValue: Ja + formElementOperator: EQUALS - reference: art_der_mitarbeiterdaten title: Welche Kategorien von Arbeitnehmerdaten werden verarbeitet? description: '' @@ -108,10 +144,13 @@ formElementSections: employeeDataCategory: SENSITIVE type: TEXTAREA visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: mitarbeiterdaten_nicht_anonymisiert - formElementExpectedValue: Ja - formElementOperator: EQUALS + operator: AND + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: mitarbeiterdaten_nicht_anonymisiert + formElementExpectedValue: Ja + formElementOperator: EQUALS - reference: anzahl_betroffener_mitarbeiter title: Wie viele Mitarbeiter sind von der Testphase betroffen? description: '' @@ -122,17 +161,20 @@ formElementSections: employeeDataCategory: REVIEW_REQUIRED type: TEXTAREA visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: testphase_findet_statt - formElementExpectedValue: Ja - formElementOperator: EQUALS + operator: AND + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: testphase_findet_statt + formElementExpectedValue: Ja + formElementOperator: EQUALS - # Einführung: Betroffene Einheiten + # Betroffene Einheiten und Verantwortlichkeiten (Einführung, Ablösung, Änderung) - title: Betroffene Einheiten und Verantwortlichkeiten subtitle: Informationen zu betroffenen Einheiten und Verantwortlichen formElements: - reference: betroffene_unternehmen - title: Für welche Unternehmen soll das IT-System eingeführt werden? + title: Welche Unternehmen sind betroffen? description: '' options: - value: 'Alle Gesellschaften der Unternehmensgruppe: Holding AG, Produktions GmbH, Services GmbH, International Inc.' @@ -141,12 +183,19 @@ formElementSections: employeeDataCategory: NON_CRITICAL type: TEXTAREA visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: art_der_massnahme - formElementExpectedValue: Einführung - formElementOperator: EQUALS + operator: OR + conditions: + - sourceFormElementReference: art_der_massnahme + formElementExpectedValue: Einführung + formElementOperator: EQUALS + - sourceFormElementReference: art_der_massnahme + formElementExpectedValue: Einführung mit einhergehender Ablösung + formElementOperator: EQUALS + - sourceFormElementReference: art_der_massnahme + formElementExpectedValue: Änderung IT-System + formElementOperator: EQUALS - reference: betroffene_betriebe - title: Für welche Betriebe/Betriebsteile wird das IT-System eingeführt? + title: Welche Betriebe/Betriebsteile sind betroffen? description: '' options: - value: 'Zentrale Verwaltung Frankfurt, Produktionsstandorte München und Stuttgart, Vertriebsniederlassungen Hamburg, Berlin, Köln, Außenstandorte international' @@ -155,10 +204,17 @@ formElementSections: employeeDataCategory: REVIEW_REQUIRED type: TEXTAREA visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: art_der_massnahme - formElementExpectedValue: Einführung - formElementOperator: EQUALS + operator: OR + conditions: + - sourceFormElementReference: art_der_massnahme + formElementExpectedValue: Einführung + formElementOperator: EQUALS + - sourceFormElementReference: art_der_massnahme + formElementExpectedValue: Einführung mit einhergehender Ablösung + formElementOperator: EQUALS + - sourceFormElementReference: art_der_massnahme + formElementExpectedValue: Änderung IT-System + formElementOperator: EQUALS - reference: betroffene_bereiche title: Für welche Bereiche bzw. Abteilungen wird das IT-System zum Einsatz kommen? description: '' @@ -169,10 +225,17 @@ formElementSections: employeeDataCategory: REVIEW_REQUIRED type: TEXTAREA visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: art_der_massnahme - formElementExpectedValue: Einführung - formElementOperator: EQUALS + operator: OR + conditions: + - sourceFormElementReference: art_der_massnahme + formElementExpectedValue: Einführung + formElementOperator: EQUALS + - sourceFormElementReference: art_der_massnahme + formElementExpectedValue: Einführung mit einhergehender Ablösung + formElementOperator: EQUALS + - sourceFormElementReference: art_der_massnahme + formElementExpectedValue: Änderung IT-System + formElementOperator: EQUALS - reference: verantwortlicher_fachbereich title: Wer ist der verantwortliche Fachbereich und Ansprechpartner? description: '' @@ -183,12 +246,19 @@ formElementSections: employeeDataCategory: NON_CRITICAL type: TEXTAREA visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: art_der_massnahme - formElementExpectedValue: Einführung - formElementOperator: EQUALS + operator: OR + conditions: + - sourceFormElementReference: art_der_massnahme + formElementExpectedValue: Einführung + formElementOperator: EQUALS + - sourceFormElementReference: art_der_massnahme + formElementExpectedValue: Einführung mit einhergehender Ablösung + formElementOperator: EQUALS + - sourceFormElementReference: art_der_massnahme + formElementExpectedValue: Änderung IT-System + formElementOperator: EQUALS - # Einführung: Angaben zum IT-System + # Angaben zum IT-System (Einführung, Ablösung) - title: Angaben zum IT-System subtitle: Detaillierte Informationen zum IT-System formElements: @@ -202,10 +272,14 @@ formElementSections: employeeDataCategory: NON_CRITICAL type: TEXTAREA visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: art_der_massnahme - formElementExpectedValue: Einführung - formElementOperator: EQUALS + operator: OR + conditions: + - sourceFormElementReference: art_der_massnahme + formElementExpectedValue: Einführung + formElementOperator: EQUALS + - sourceFormElementReference: art_der_massnahme + formElementExpectedValue: Einführung mit einhergehender Ablösung + formElementOperator: EQUALS - reference: anbieter title: Wer ist der Anbieter des IT-Systems? description: '' @@ -216,10 +290,14 @@ formElementSections: employeeDataCategory: NON_CRITICAL type: TEXTAREA visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: art_der_massnahme - formElementExpectedValue: Einführung - formElementOperator: EQUALS + operator: OR + conditions: + - sourceFormElementReference: art_der_massnahme + formElementExpectedValue: Einführung + formElementOperator: EQUALS + - sourceFormElementReference: art_der_massnahme + formElementExpectedValue: Einführung mit einhergehender Ablösung + formElementOperator: EQUALS - reference: speicherort title: Wo werden die Daten gespeichert? description: '' @@ -234,10 +312,14 @@ formElementSections: employeeDataCategory: SENSITIVE type: CHECKBOX visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: art_der_massnahme - formElementExpectedValue: Einführung - formElementOperator: EQUALS + operator: OR + conditions: + - sourceFormElementReference: art_der_massnahme + formElementExpectedValue: Einführung + formElementOperator: EQUALS + - sourceFormElementReference: art_der_massnahme + formElementExpectedValue: Einführung mit einhergehender Ablösung + formElementOperator: EQUALS - reference: zugriff_art title: Wie erfolgt der Zugriff auf das IT-System? description: '' @@ -252,10 +334,14 @@ formElementSections: employeeDataCategory: REVIEW_REQUIRED type: CHECKBOX visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: art_der_massnahme - formElementExpectedValue: Einführung - formElementOperator: EQUALS + operator: OR + conditions: + - sourceFormElementReference: art_der_massnahme + formElementExpectedValue: Einführung + formElementOperator: EQUALS + - sourceFormElementReference: art_der_massnahme + formElementExpectedValue: Einführung mit einhergehender Ablösung + formElementOperator: EQUALS - reference: endgeraetezugriff title: Mit welchen Endgeräten wird auf das IT-System zugegriffen? description: '' @@ -270,10 +356,14 @@ formElementSections: employeeDataCategory: SENSITIVE type: CHECKBOX visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: art_der_massnahme - formElementExpectedValue: Einführung - formElementOperator: EQUALS + operator: OR + conditions: + - sourceFormElementReference: art_der_massnahme + formElementExpectedValue: Einführung + formElementOperator: EQUALS + - sourceFormElementReference: art_der_massnahme + formElementExpectedValue: Einführung mit einhergehender Ablösung + formElementOperator: EQUALS - reference: einfuehrung_module_komponenten title: Werden Module oder Komponenten eingeführt? description: '' @@ -288,10 +378,14 @@ formElementSections: employeeDataCategory: NON_CRITICAL type: RADIOBUTTON visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: art_der_massnahme - formElementExpectedValue: Einführung - formElementOperator: EQUALS + operator: OR + conditions: + - sourceFormElementReference: art_der_massnahme + formElementExpectedValue: Einführung + formElementOperator: EQUALS + - sourceFormElementReference: art_der_massnahme + formElementExpectedValue: Einführung mit einhergehender Ablösung + formElementOperator: EQUALS - reference: modul_1 title: Modul 1 description: '' @@ -307,10 +401,13 @@ formElementSections: sectionSpawnConditionType: SHOW sectionSpawnOperator: IS_NOT_EMPTY visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: einfuehrung_module_komponenten - formElementExpectedValue: Modul - formElementOperator: EQUALS + operator: AND + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: einfuehrung_module_komponenten + formElementExpectedValue: Modul + formElementOperator: EQUALS - reference: modul_2 title: Modul 2 description: '' @@ -326,10 +423,13 @@ formElementSections: sectionSpawnConditionType: SHOW sectionSpawnOperator: IS_NOT_EMPTY visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: einfuehrung_module_komponenten - formElementExpectedValue: Modul - formElementOperator: EQUALS + operator: AND + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: einfuehrung_module_komponenten + formElementExpectedValue: Modul + formElementOperator: EQUALS - reference: modul_3 title: Modul 3 description: '' @@ -345,12 +445,478 @@ formElementSections: sectionSpawnConditionType: SHOW sectionSpawnOperator: IS_NOT_EMPTY visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: einfuehrung_module_komponenten - formElementExpectedValue: Modul - formElementOperator: EQUALS - - reference: ki_einsatz - title: Kommt im IT-System Künstliche Intelligenz zum Einsatz? + operator: AND + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: einfuehrung_module_komponenten + formElementExpectedValue: Modul + formElementOperator: EQUALS + - reference: wirtschaftliche_auswirkungen + title: Sind wirtschaftliche Auswirkungen des Systemeinsatzes zu erwarten? + description: '' + options: + - value: 'true' + label: Ja + processingPurpose: BUSINESS_PROCESS + employeeDataCategory: REVIEW_REQUIRED + - value: '' + label: Nein + processingPurpose: BUSINESS_PROCESS + employeeDataCategory: NON_CRITICAL + type: RADIOBUTTON + visibilityConditions: + operator: OR + conditions: + - sourceFormElementReference: art_der_massnahme + formElementExpectedValue: Einführung + formElementOperator: EQUALS + - sourceFormElementReference: art_der_massnahme + formElementExpectedValue: Einführung mit einhergehender Ablösung + formElementOperator: EQUALS + - reference: beschreibung_wirtschaftliche_auswirkungen + title: Beschreibung der wirtschaftlichen Auswirkungen + description: '' + options: + - value: 'Steigerung der Prozesseffizienz um ca. 25-30% durch Automatisierung und Echtzeitdatenverarbeitung. Reduzierung von Fehlerraten in der Abrechnung um 15-20%. Verbesserte Transparenz in der Finanzplanung und im Controlling ermöglicht schnellere Entscheidungsfindung. Einsparungen bei manuellen Prozessen: ca. 45 FTE-Äquivalente. Geschätzter ROI nach 3 Jahren. Investitionsvolumen: ca. 12 Mio. EUR (Lizenzen, Implementation, Change Management).' + label: Beschreibung der Auswirkungen + processingPurpose: BUSINESS_PROCESS + employeeDataCategory: REVIEW_REQUIRED + type: TEXTAREA + visibilityConditions: + operator: AND + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: wirtschaftliche_auswirkungen + formElementExpectedValue: Ja + formElementOperator: EQUALS + + # Sensitivitäts-Check + - title: Sensitivitäts-Check + subtitle: Bewertung der Sensitivität des IT-Systems hinsichtlich Arbeitnehmerdaten + formElements: + - reference: sens_verarbeitung_arbeitnehmerdaten + title: Verarbeitet das System Arbeitnehmerdaten? + description: '' + options: + - value: 'true' + label: Personenbeziehbar + processingPurpose: DATA_ANALYSIS + employeeDataCategory: SENSITIVE + - value: '' + label: Anonymisiert (ohne Reidentifikation) + processingPurpose: DATA_ANALYSIS + employeeDataCategory: NON_CRITICAL + - value: '' + label: Keine Arbeitnehmerdaten + processingPurpose: SYSTEM_OPERATION + employeeDataCategory: NON_CRITICAL + type: RADIOBUTTON + sectionSpawnTriggers: + - templateReference: verarbeitung_mitarbeiterdaten_template + sectionSpawnConditionType: SHOW + sectionSpawnExpectedValue: Personenbeziehbar + sectionSpawnOperator: EQUALS + visibilityConditions: + operator: OR + conditions: + - sourceFormElementReference: art_der_massnahme + formElementExpectedValue: Einführung + formElementOperator: EQUALS + - sourceFormElementReference: art_der_massnahme + formElementExpectedValue: Einführung mit einhergehender Ablösung + formElementOperator: EQUALS + - sourceFormElementReference: art_der_massnahme + formElementExpectedValue: Änderung IT-System + formElementOperator: EQUALS + - reference: sens_sichtbarkeit + title: Sind Arbeitnehmerdaten im System sichtbar? + description: '' + options: + - value: '' + label: Nein + processingPurpose: SYSTEM_OPERATION + employeeDataCategory: NON_CRITICAL + - value: '' + label: Aggregiert + processingPurpose: DATA_ANALYSIS + employeeDataCategory: NON_CRITICAL + - value: '' + label: Für Administrator + processingPurpose: DATA_ANALYSIS + employeeDataCategory: REVIEW_REQUIRED + - value: 'true' + label: Für mehrere Rollen + processingPurpose: DATA_ANALYSIS + employeeDataCategory: SENSITIVE + type: RADIOBUTTON + visibilityConditions: + operator: AND + conditions: + - nodeType: GROUP + groupOperator: OR + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: art_der_massnahme + formElementExpectedValue: Einführung + formElementOperator: EQUALS + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: art_der_massnahme + formElementExpectedValue: Einführung mit einhergehender Ablösung + formElementOperator: EQUALS + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: art_der_massnahme + formElementExpectedValue: Änderung IT-System + formElementOperator: EQUALS + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: sens_verarbeitung_arbeitnehmerdaten + formElementExpectedValue: Personenbeziehbar + formElementOperator: EQUALS + - reference: sens_auswertung + title: Gibt es analytische Funktionen im System, mit denen Leistung und Verhalten von Arbeitnehmern kontrolliert werden könnten? + description: '' + options: + - value: '' + label: Keine + processingPurpose: SYSTEM_OPERATION + employeeDataCategory: NON_CRITICAL + - value: 'true' + label: Funktionen vorhanden + processingPurpose: DATA_ANALYSIS + employeeDataCategory: REVIEW_REQUIRED + type: RADIOBUTTON + visibilityConditions: + operator: AND + conditions: + - nodeType: GROUP + groupOperator: OR + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: art_der_massnahme + formElementExpectedValue: Einführung + formElementOperator: EQUALS + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: art_der_massnahme + formElementExpectedValue: Einführung mit einhergehender Ablösung + formElementOperator: EQUALS + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: art_der_massnahme + formElementExpectedValue: Änderung IT-System + formElementOperator: EQUALS + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: sens_sichtbarkeit + formElementExpectedValue: Für mehrere Rollen + formElementOperator: EQUALS + - reference: sens_art_analytische_funktionen + title: Welche analytischen Funktionen sind vorhanden? + description: '' + options: + - value: 'true' + label: Berichte + processingPurpose: DATA_ANALYSIS + employeeDataCategory: REVIEW_REQUIRED + - value: 'true' + label: Reports + processingPurpose: DATA_ANALYSIS + employeeDataCategory: REVIEW_REQUIRED + - value: 'true' + label: Dashboards + processingPurpose: DATA_ANALYSIS + employeeDataCategory: REVIEW_REQUIRED + - value: 'false' + label: Rankings + processingPurpose: DATA_ANALYSIS + employeeDataCategory: SENSITIVE + - value: 'false' + label: Scores + processingPurpose: DATA_ANALYSIS + employeeDataCategory: SENSITIVE + - value: 'false' + label: Vergleiche + processingPurpose: DATA_ANALYSIS + employeeDataCategory: SENSITIVE + - value: 'false' + label: Sonstiges + processingPurpose: DATA_ANALYSIS + employeeDataCategory: REVIEW_REQUIRED + type: CHECKBOX + visibilityConditions: + operator: AND + conditions: + - nodeType: GROUP + groupOperator: OR + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: art_der_massnahme + formElementExpectedValue: Einführung + formElementOperator: EQUALS + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: art_der_massnahme + formElementExpectedValue: Einführung mit einhergehender Ablösung + formElementOperator: EQUALS + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: art_der_massnahme + formElementExpectedValue: Änderung IT-System + formElementOperator: EQUALS + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: sens_auswertung + formElementExpectedValue: Funktionen vorhanden + formElementOperator: EQUALS + - reference: sens_ranking_scoring + title: Gibt es Rankings/Scores/Benchmarks? + description: '' + options: + - value: '' + label: Nein + processingPurpose: SYSTEM_OPERATION + employeeDataCategory: NON_CRITICAL + - value: 'true' + label: Konfigurierbar (deaktiviert) + processingPurpose: DATA_ANALYSIS + employeeDataCategory: REVIEW_REQUIRED + - value: '' + label: Aktiviert + processingPurpose: DATA_ANALYSIS + employeeDataCategory: SENSITIVE + type: RADIOBUTTON + visibilityConditions: + operator: AND + conditions: + - nodeType: GROUP + groupOperator: OR + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: art_der_massnahme + formElementExpectedValue: Einführung + formElementOperator: EQUALS + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: art_der_massnahme + formElementExpectedValue: Einführung mit einhergehender Ablösung + formElementOperator: EQUALS + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: art_der_massnahme + formElementExpectedValue: Änderung IT-System + formElementOperator: EQUALS + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: sens_auswertung + formElementExpectedValue: Funktionen vorhanden + formElementOperator: EQUALS + - reference: sens_erhebung_tracking + title: Werden Ereignisse, Nutzungen und Logs erfasst? + description: '' + options: + - value: '' + label: Nein + processingPurpose: SYSTEM_OPERATION + employeeDataCategory: NON_CRITICAL + - value: 'true' + label: Technisch (Betrieb, Sicherheit) + processingPurpose: SYSTEM_OPERATION + employeeDataCategory: NON_CRITICAL + - value: '' + label: Ja (Nutzer-/Aktivitätsbezug) + processingPurpose: DATA_ANALYSIS + employeeDataCategory: SENSITIVE + type: RADIOBUTTON + visibilityConditions: + operator: AND + conditions: + - nodeType: GROUP + groupOperator: OR + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: art_der_massnahme + formElementExpectedValue: Einführung + formElementOperator: EQUALS + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: art_der_massnahme + formElementExpectedValue: Einführung mit einhergehender Ablösung + formElementOperator: EQUALS + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: art_der_massnahme + formElementExpectedValue: Änderung IT-System + formElementOperator: EQUALS + - nodeType: GROUP + groupOperator: OR + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: sens_sichtbarkeit + formElementExpectedValue: Für Administrator + formElementOperator: EQUALS + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: sens_sichtbarkeit + formElementExpectedValue: Für mehrere Rollen + formElementOperator: EQUALS + - reference: sens_alarme + title: Gibt es automatische Alarme/Trigger/Benachrichtigungen? + description: '' + options: + - value: '' + label: Nein + processingPurpose: SYSTEM_OPERATION + employeeDataCategory: NON_CRITICAL + - value: 'true' + label: Technisch (Betrieb, Sicherheit) + processingPurpose: SYSTEM_OPERATION + employeeDataCategory: NON_CRITICAL + - value: '' + label: Fachlich + processingPurpose: DATA_ANALYSIS + employeeDataCategory: REVIEW_REQUIRED + type: RADIOBUTTON + visibilityConditions: + operator: AND + conditions: + - nodeType: GROUP + groupOperator: OR + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: art_der_massnahme + formElementExpectedValue: Einführung + formElementOperator: EQUALS + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: art_der_massnahme + formElementExpectedValue: Einführung mit einhergehender Ablösung + formElementOperator: EQUALS + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: art_der_massnahme + formElementExpectedValue: Änderung IT-System + formElementOperator: EQUALS + - nodeType: GROUP + groupOperator: OR + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: sens_sichtbarkeit + formElementExpectedValue: Für Administrator + formElementOperator: EQUALS + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: sens_sichtbarkeit + formElementExpectedValue: Für mehrere Rollen + formElementOperator: EQUALS + - reference: sens_luv + title: Werden analytische Funktionen für Leistungs-/Verhaltenskontrolle genutzt? + description: '' + options: + - value: '' + label: Nein + processingPurpose: SYSTEM_OPERATION + employeeDataCategory: NON_CRITICAL + - value: 'true' + label: Aggregiert (Team) + processingPurpose: DATA_ANALYSIS + employeeDataCategory: REVIEW_REQUIRED + - value: '' + label: Aggregiert (Abteilung) + processingPurpose: DATA_ANALYSIS + employeeDataCategory: REVIEW_REQUIRED + - value: '' + label: Aggregiert (Standort) + processingPurpose: DATA_ANALYSIS + employeeDataCategory: REVIEW_REQUIRED + - value: 'true' + label: Individuell/vergleichend + processingPurpose: DATA_ANALYSIS + employeeDataCategory: SENSITIVE + type: CHECKBOX + visibilityConditions: + operator: OR + conditions: + - sourceFormElementReference: art_der_massnahme + formElementExpectedValue: Einführung + formElementOperator: EQUALS + - sourceFormElementReference: art_der_massnahme + formElementExpectedValue: Einführung mit einhergehender Ablösung + formElementOperator: EQUALS + - sourceFormElementReference: art_der_massnahme + formElementExpectedValue: Änderung IT-System + formElementOperator: EQUALS + - reference: sens_analytische_funktionen + title: Gibt es analytische Funktionen (Dashboards / Reports / Trends)? + description: '' + options: + - value: '' + label: Keine + processingPurpose: SYSTEM_OPERATION + employeeDataCategory: NON_CRITICAL + - value: 'true' + label: Aggregiert + processingPurpose: DATA_ANALYSIS + employeeDataCategory: REVIEW_REQUIRED + - value: '' + label: Individualisiert + processingPurpose: DATA_ANALYSIS + employeeDataCategory: SENSITIVE + type: RADIOBUTTON + visibilityConditions: + operator: OR + conditions: + - sourceFormElementReference: art_der_massnahme + formElementExpectedValue: Einführung + formElementOperator: EQUALS + - sourceFormElementReference: art_der_massnahme + formElementExpectedValue: Einführung mit einhergehender Ablösung + formElementOperator: EQUALS + - sourceFormElementReference: art_der_massnahme + formElementExpectedValue: Änderung IT-System + formElementOperator: EQUALS + - reference: sens_automatisierte_entscheidungen + title: Bewertet / empfiehlt das System Maßnahmen über Beschäftigte oder bereitet Entscheidungen maßgeblich vor? + description: '' + options: + - value: '' + label: Nein + processingPurpose: SYSTEM_OPERATION + employeeDataCategory: NON_CRITICAL + - value: 'true' + label: Unterstützend (Empfehlung) + processingPurpose: DATA_ANALYSIS + employeeDataCategory: REVIEW_REQUIRED + - value: '' + label: Auto-Entscheidungen + processingPurpose: DATA_ANALYSIS + employeeDataCategory: SENSITIVE + type: RADIOBUTTON + visibilityConditions: + operator: OR + conditions: + - sourceFormElementReference: art_der_massnahme + formElementExpectedValue: Einführung + formElementOperator: EQUALS + - sourceFormElementReference: art_der_massnahme + formElementExpectedValue: Einführung mit einhergehender Ablösung + formElementOperator: EQUALS + - sourceFormElementReference: art_der_massnahme + formElementExpectedValue: Änderung IT-System + formElementOperator: EQUALS + - reference: sens_ki + title: Kommt im System Künstliche Intelligenz zum Einsatz? description: '' options: - value: '' @@ -369,42 +935,113 @@ formElementSections: sectionSpawnExpectedValue: Ja sectionSpawnOperator: EQUALS visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: art_der_massnahme - formElementExpectedValue: Einführung - formElementOperator: EQUALS - - reference: wirtschaftliche_auswirkungen - title: Sind wirtschaftliche Auswirkungen des Systemeinsatzes zu erwarten? + operator: OR + conditions: + - sourceFormElementReference: art_der_massnahme + formElementExpectedValue: Einführung + formElementOperator: EQUALS + - sourceFormElementReference: art_der_massnahme + formElementExpectedValue: Einführung mit einhergehender Ablösung + formElementOperator: EQUALS + - sourceFormElementReference: art_der_massnahme + formElementExpectedValue: Änderung IT-System + formElementOperator: EQUALS + - reference: sens_schnittstellen_export + title: Gibt es Schnittstellen oder Exportmöglichkeiten? description: '' options: - value: 'true' - label: Ja - processingPurpose: BUSINESS_PROCESS + label: Schnittstellen vorhanden + processingPurpose: DATA_ANALYSIS employeeDataCategory: REVIEW_REQUIRED - value: '' - label: Nein - processingPurpose: BUSINESS_PROCESS + label: Exporte möglich + processingPurpose: DATA_ANALYSIS + employeeDataCategory: REVIEW_REQUIRED + - value: '' + label: Nur SSO/IAM + processingPurpose: SYSTEM_OPERATION employeeDataCategory: NON_CRITICAL - type: RADIOBUTTON + - value: '' + label: Nein + processingPurpose: SYSTEM_OPERATION + employeeDataCategory: NON_CRITICAL + type: CHECKBOX + sectionSpawnTriggers: + - templateReference: schnittstellen_template + sectionSpawnConditionType: SHOW + sectionSpawnExpectedValue: Schnittstellen vorhanden + sectionSpawnOperator: EQUALS visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: art_der_massnahme - formElementExpectedValue: Einführung - formElementOperator: EQUALS - - reference: beschreibung_wirtschaftliche_auswirkungen - title: Beschreibung der wirtschaftlichen Auswirkungen + operator: OR + conditions: + - sourceFormElementReference: art_der_massnahme + formElementExpectedValue: Einführung + formElementOperator: EQUALS + - sourceFormElementReference: art_der_massnahme + formElementExpectedValue: Einführung mit einhergehender Ablösung + formElementOperator: EQUALS + - sourceFormElementReference: art_der_massnahme + formElementExpectedValue: Änderung IT-System + formElementOperator: EQUALS + - reference: sens_updates + title: Finden automatische Updates ohne Freigabeprozess statt? description: '' options: - - value: 'Steigerung der Prozesseffizienz um ca. 25-30% durch Automatisierung und Echtzeitdatenverarbeitung. Reduzierung von Fehlerraten in der Abrechnung um 15-20%. Verbesserte Transparenz in der Finanzplanung und im Controlling ermöglicht schnellere Entscheidungsfindung. Einsparungen bei manuellen Prozessen: ca. 45 FTE-Äquivalente. Geschätzter ROI nach 3 Jahren. Investitionsvolumen: ca. 12 Mio. EUR (Lizenzen, Implementation, Change Management).' - label: Beschreibung der Auswirkungen - processingPurpose: BUSINESS_PROCESS + - value: '' + label: Nein + processingPurpose: SYSTEM_OPERATION + employeeDataCategory: NON_CRITICAL + - value: 'true' + label: Updates mit Release Notes + processingPurpose: SYSTEM_OPERATION + employeeDataCategory: NON_CRITICAL + - value: '' + label: Automatische Updates + processingPurpose: SYSTEM_OPERATION employeeDataCategory: REVIEW_REQUIRED - type: TEXTAREA + type: RADIOBUTTON visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: wirtschaftliche_auswirkungen - formElementExpectedValue: Ja - formElementOperator: EQUALS + operator: OR + conditions: + - sourceFormElementReference: art_der_massnahme + formElementExpectedValue: Einführung + formElementOperator: EQUALS + - sourceFormElementReference: art_der_massnahme + formElementExpectedValue: Einführung mit einhergehender Ablösung + formElementOperator: EQUALS + - sourceFormElementReference: art_der_massnahme + formElementExpectedValue: Änderung IT-System + formElementOperator: EQUALS + - reference: sens_admin_support + title: Sind Remote-Admin-/Supportzugriffe möglich? + description: '' + options: + - value: '' + label: Kein Remotezugriff + processingPurpose: SYSTEM_OPERATION + employeeDataCategory: NON_CRITICAL + - value: 'true' + label: Remotezugriff anlassbezogen + processingPurpose: SYSTEM_OPERATION + employeeDataCategory: REVIEW_REQUIRED + - value: '' + label: Umfassender Remotezugriff + processingPurpose: SYSTEM_OPERATION + employeeDataCategory: SENSITIVE + type: RADIOBUTTON + visibilityConditions: + operator: OR + conditions: + - sourceFormElementReference: art_der_massnahme + formElementExpectedValue: Einführung + formElementOperator: EQUALS + - sourceFormElementReference: art_der_massnahme + formElementExpectedValue: Einführung mit einhergehender Ablösung + formElementOperator: EQUALS + - sourceFormElementReference: art_der_massnahme + formElementExpectedValue: Änderung IT-System + formElementOperator: EQUALS # --- Eingabeseite 2: Rollen und Berechtigungen (spawned section) --- - title: Rollen und Berechtigungen @@ -415,24 +1052,7 @@ formElementSections: spawnedFromElementReference: art_der_massnahme formElementSubSections: - # Question: Performance/Behavior monitoring - - title: Leistungs-/Verhaltensüberwachung - formElements: - - reference: luv_beabsichtigt - title: Soll durch das IT-System Leistung und/oder Verhalten von Arbeitnehmern überwacht werden? - description: '' - type: RADIOBUTTON - options: - - value: 'true' - label: Ja - processingPurpose: DATA_ANALYSIS - employeeDataCategory: SENSITIVE - - value: '' - label: Nein - processingPurpose: SYSTEM_OPERATION - employeeDataCategory: NON_CRITICAL - - # Simple roles table (shown when LuV = Nein) + # Simple roles table (shown when sens_luv does NOT contain Individuell/vergleichend) - title: Einfache Darstellung Rollen/Berechtigungen formElements: - reference: einfache_rollen_tabelle @@ -440,10 +1060,13 @@ formElementSections: description: '' type: TABLE visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: luv_beabsichtigt - formElementExpectedValue: Nein - formElementOperator: EQUALS + operator: AND + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: sens_luv + formElementExpectedValue: Individuell/vergleichend + formElementOperator: NOT_CONTAINS options: - value: '[]' label: Rollen-ID @@ -466,7 +1089,7 @@ formElementSections: processingPurpose: SYSTEM_OPERATION employeeDataCategory: REVIEW_REQUIRED - # Detailed roles matrix (shown when LuV = Ja) + # Detailed roles matrix (shown when sens_luv CONTAINS Individuell/vergleichend) - title: 1. Rollenstamm formElements: - reference: rollenstamm_tabelle @@ -474,10 +1097,13 @@ formElementSections: description: '' type: TABLE visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: luv_beabsichtigt - formElementExpectedValue: Ja - formElementOperator: EQUALS + operator: AND + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: sens_luv + formElementExpectedValue: Individuell/vergleichend + formElementOperator: CONTAINS options: - value: '["R001", "R002", "R003", "R004", "R005"]' label: Rollen-ID @@ -499,10 +1125,13 @@ formElementSections: description: '' type: TABLE visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: luv_beabsichtigt - formElementExpectedValue: Ja - formElementOperator: EQUALS + operator: AND + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: sens_luv + formElementExpectedValue: Individuell/vergleichend + formElementOperator: CONTAINS options: - value: '["P001", "P002", "P003", "P004", "P005", "P006"]' label: Permission-ID @@ -524,10 +1153,13 @@ formElementSections: description: '' type: TABLE visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: luv_beabsichtigt - formElementExpectedValue: Ja - formElementOperator: EQUALS + operator: AND + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: sens_luv + formElementExpectedValue: Individuell/vergleichend + formElementOperator: CONTAINS options: - value: '["S001", "S002", "S003", "S004"]' label: Scope-ID @@ -549,10 +1181,13 @@ formElementSections: description: '' type: TABLE visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: luv_beabsichtigt - formElementExpectedValue: Ja - formElementOperator: EQUALS + operator: AND + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: sens_luv + formElementExpectedValue: Individuell/vergleichend + formElementOperator: CONTAINS options: - value: '["R001", "R002", "R003", "R004", "R005"]' label: Rollen-ID @@ -581,10 +1216,13 @@ formElementSections: description: '' type: TABLE visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: luv_beabsichtigt - formElementExpectedValue: Ja - formElementOperator: EQUALS + operator: AND + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: sens_luv + formElementExpectedValue: Individuell/vergleichend + formElementOperator: CONTAINS options: - value: '["R001", "R002", "R003", "R004", "R005"]' label: Rollen-ID @@ -640,14 +1278,18 @@ formElementSections: description: '' type: TABLE visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: personenbezogene_daten_verarbeitet - formElementExpectedValue: Ja - formElementOperator: EQUALS - - formElementConditionType: SHOW - sourceFormElementReference: luv_beabsichtigt - formElementExpectedValue: Ja - formElementOperator: EQUALS + operator: AND + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: personenbezogene_daten_verarbeitet + formElementExpectedValue: Ja + formElementOperator: EQUALS + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: sens_luv + formElementExpectedValue: Individuell/vergleichend + formElementOperator: CONTAINS options: - value: '["V001", "V002", "V003", "V004", "V005"]' label: Verarbeitungsvorgang-ID @@ -693,6 +1335,19 @@ formElementSections: sourceTableReference: rollenstamm_tabelle sourceColumnIndex: 0 isMultipleAllowed: true + visibilityConditions: + operator: AND + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: sens_sichtbarkeit + formElementExpectedValue: Nein + formElementOperator: NOT_EQUALS + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: sens_sichtbarkeit + formElementExpectedValue: Für Administrator + formElementOperator: NOT_EQUALS - value: '["Nein", "Ja - an Vorgesetzte", "Nein", "Ja - an Management", "Ja - an Produktionsleitung"]' label: Export/Weitergabe (Ja/Nein + Ziel) processingPurpose: DATA_ANALYSIS @@ -722,14 +1377,18 @@ formElementSections: targetColumnIndex: 0 canAddRows: false visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: personenbezogene_daten_verarbeitet - formElementExpectedValue: Ja - formElementOperator: EQUALS - - formElementConditionType: SHOW - sourceFormElementReference: luv_beabsichtigt - formElementExpectedValue: Ja - formElementOperator: EQUALS + operator: AND + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: personenbezogene_daten_verarbeitet + formElementExpectedValue: Ja + formElementOperator: EQUALS + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: sens_luv + formElementExpectedValue: Individuell/vergleichend + formElementOperator: CONTAINS options: - value: '["V002", "V004", "V005"]' label: Verarbeitungsvorgang-ID @@ -759,10 +1418,31 @@ formElementSections: label: Drilldown bis Person möglich? processingPurpose: DATA_ANALYSIS employeeDataCategory: SENSITIVE + visibilityConditions: + operator: AND + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: sens_analytische_funktionen + formElementExpectedValue: Individualisiert + formElementOperator: EQUALS - value: '["Nein", "Ja - Ranking im Team", "Ja - Vergleich mit Durchschnitt"]' label: Ranking/Scoring processingPurpose: DATA_ANALYSIS employeeDataCategory: SENSITIVE + visibilityConditions: + operator: OR + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: sens_auswertung + formElementExpectedValue: Rankings + formElementOperator: CONTAINS + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: sens_auswertung + formElementExpectedValue: Scores + formElementOperator: CONTAINS - value: '["N/A", "Min. 5 Personen im Vergleich", "Min. 10 Personen pro Auswertung"]' label: Mindestgruppe/Schwelle processingPurpose: DATA_ANALYSIS @@ -790,14 +1470,18 @@ formElementSections: description: '' type: TABLE visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: personenbezogene_daten_verarbeitet - formElementExpectedValue: Ja - formElementOperator: EQUALS - - formElementConditionType: SHOW - sourceFormElementReference: luv_beabsichtigt - formElementExpectedValue: Ja - formElementOperator: EQUALS + operator: AND + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: personenbezogene_daten_verarbeitet + formElementExpectedValue: Ja + formElementOperator: EQUALS + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: sens_luv + formElementExpectedValue: Individuell/vergleichend + formElementOperator: CONTAINS options: - value: '["V001", "V002", "V003", "V004", "V005"]' label: Verarbeitungsvorgang-ID @@ -840,14 +1524,18 @@ formElementSections: description: '' type: TABLE visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: personenbezogene_daten_verarbeitet - formElementExpectedValue: Ja - formElementOperator: EQUALS - - formElementConditionType: SHOW - sourceFormElementReference: luv_beabsichtigt - formElementExpectedValue: Ja - formElementOperator: EQUALS + operator: AND + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: personenbezogene_daten_verarbeitet + formElementExpectedValue: Ja + formElementOperator: EQUALS + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: sens_luv + formElementExpectedValue: Individuell/vergleichend + formElementOperator: CONTAINS options: - value: '["V001", "V002", "V003", "V004", "V005"]' label: Verarbeitungsvorgang-ID @@ -901,10 +1589,13 @@ formElementSections: description: '' type: CHECKBOX visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: personenbezogene_daten_verarbeitet - formElementExpectedValue: Ja - formElementOperator: EQUALS + operator: AND + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: personenbezogene_daten_verarbeitet + formElementExpectedValue: Ja + formElementOperator: EQUALS options: - value: 'true' label: Löschkonzept für die Verarbeitungsvorgänge, Datenkategorien und Arbeitnehmerdaten hinterlegen @@ -915,10 +1606,13 @@ formElementSections: description: '' type: CHECKBOX visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: personenbezogene_daten_verarbeitet - formElementExpectedValue: Ja - formElementOperator: EQUALS + operator: AND + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: personenbezogene_daten_verarbeitet + formElementExpectedValue: Ja + formElementOperator: EQUALS options: - value: 'false' label: Es kommt ein globales Löschkonzept hinsichtlich aller Verarbeitungsvorgänge, Datenkategorien und Arbeitnehmerdaten zum Einsatz @@ -929,14 +1623,18 @@ formElementSections: description: '' type: TEXTFIELD visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: personenbezogene_daten_verarbeitet - formElementExpectedValue: Ja - formElementOperator: EQUALS - - formElementConditionType: SHOW - sourceFormElementReference: globales_loeschkonzept - formElementExpectedValue: 'true' - formElementOperator: EQUALS + operator: AND + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: personenbezogene_daten_verarbeitet + formElementExpectedValue: Ja + formElementOperator: EQUALS + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: globales_loeschkonzept + formElementExpectedValue: 'true' + formElementOperator: EQUALS options: - value: '' label: Dokumentreferenz @@ -947,10 +1645,13 @@ formElementSections: description: '' type: CHECKBOX visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: personenbezogene_daten_verarbeitet - formElementExpectedValue: Ja - formElementOperator: EQUALS + operator: AND + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: personenbezogene_daten_verarbeitet + formElementExpectedValue: Ja + formElementOperator: EQUALS options: - value: 'false' label: Ein globales Löschkonzept kommt teilweise zum Einsatz @@ -961,14 +1662,18 @@ formElementSections: description: '' type: TEXTFIELD visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: personenbezogene_daten_verarbeitet - formElementExpectedValue: Ja - formElementOperator: EQUALS - - formElementConditionType: SHOW - sourceFormElementReference: teilweises_globales_loeschkonzept - formElementExpectedValue: 'true' - formElementOperator: EQUALS + operator: AND + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: personenbezogene_daten_verarbeitet + formElementExpectedValue: Ja + formElementOperator: EQUALS + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: teilweises_globales_loeschkonzept + formElementExpectedValue: 'true' + formElementOperator: EQUALS options: - value: '' label: Dokumentreferenz @@ -979,14 +1684,18 @@ formElementSections: description: '' type: RICH_TEXT visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: personenbezogene_daten_verarbeitet - formElementExpectedValue: Ja - formElementOperator: EQUALS - - formElementConditionType: SHOW - sourceFormElementReference: teilweises_globales_loeschkonzept - formElementExpectedValue: 'true' - formElementOperator: EQUALS + operator: AND + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: personenbezogene_daten_verarbeitet + formElementExpectedValue: Ja + formElementOperator: EQUALS + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: teilweises_globales_loeschkonzept + formElementExpectedValue: 'true' + formElementOperator: EQUALS options: - value: '' label: Abweichungen @@ -1014,18 +1723,23 @@ formElementSections: targetColumnIndex: 2 canAddRows: false visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: personenbezogene_daten_verarbeitet - formElementExpectedValue: Ja - formElementOperator: EQUALS - - formElementConditionType: SHOW - sourceFormElementReference: luv_beabsichtigt - formElementExpectedValue: Ja - formElementOperator: EQUALS - - formElementConditionType: SHOW - sourceFormElementReference: loeschkonzept_hinterlegen - formElementExpectedValue: 'true' - formElementOperator: EQUALS + operator: AND + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: personenbezogene_daten_verarbeitet + formElementExpectedValue: Ja + formElementOperator: EQUALS + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: sens_luv + formElementExpectedValue: Individuell/vergleichend + formElementOperator: CONTAINS + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: loeschkonzept_hinterlegen + formElementExpectedValue: 'true' + formElementOperator: EQUALS options: # Column 0: Verarbeitungsvorgang-ID (cross-referenced, auto-populated, read-only) - value: '["V001", "V002", "V003", "V004", "V005"]' @@ -1110,14 +1824,18 @@ formElementSections: description: '' type: TABLE visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: personenbezogene_daten_verarbeitet - formElementExpectedValue: Ja - formElementOperator: EQUALS - - formElementConditionType: SHOW - sourceFormElementReference: luv_beabsichtigt - formElementExpectedValue: Ja - formElementOperator: EQUALS + operator: AND + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: personenbezogene_daten_verarbeitet + formElementExpectedValue: Ja + formElementOperator: EQUALS + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: sens_luv + formElementExpectedValue: Individuell/vergleichend + formElementOperator: CONTAINS options: # Column 0: Schnittstellen-ID - value: '["IF001", "IF002", "IF003", "IF004", "IF005"]' @@ -1190,10 +1908,13 @@ formElementSections: description: '' type: TABLE visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: personenbezogene_daten_verarbeitet - formElementExpectedValue: Ja - formElementOperator: EQUALS + operator: AND + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: personenbezogene_daten_verarbeitet + formElementExpectedValue: Ja + formElementOperator: EQUALS tableRowPreset: sourceTableReference: umfassende_datenverarbeitung_tabelle columnMappings: @@ -1267,10 +1988,13 @@ formElementSections: description: '' type: CHECKBOX visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: personenbezogene_daten_verarbeitet - formElementExpectedValue: Ja - formElementOperator: EQUALS + operator: AND + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: personenbezogene_daten_verarbeitet + formElementExpectedValue: Ja + formElementOperator: EQUALS options: - value: 'true' label: Auftragsdatenverarbeitung @@ -1297,14 +2021,18 @@ formElementSections: description: '' type: TABLE visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: datenschutz_verantwortlichkeit_art - formElementExpectedValue: Auftragsdatenverarbeitung - formElementOperator: EQUALS - - formElementConditionType: SHOW - sourceFormElementReference: luv_beabsichtigt - formElementExpectedValue: Ja - formElementOperator: EQUALS + operator: AND + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: datenschutz_verantwortlichkeit_art + formElementExpectedValue: Auftragsdatenverarbeitung + formElementOperator: EQUALS + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: sens_luv + formElementExpectedValue: Individuell/vergleichend + formElementOperator: CONTAINS options: - value: '["SAP SE (Cloud Services)", "Amazon Web Services EMEA SARL"]' label: Auftragsdatenverarbeiter @@ -1361,14 +2089,18 @@ formElementSections: description: '' type: TABLE visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: datenschutz_verantwortlichkeit_art - formElementExpectedValue: Gemeinsame Verantwortlichkeit - formElementOperator: EQUALS - - formElementConditionType: SHOW - sourceFormElementReference: luv_beabsichtigt - formElementExpectedValue: Ja - formElementOperator: EQUALS + operator: AND + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: datenschutz_verantwortlichkeit_art + formElementExpectedValue: Gemeinsame Verantwortlichkeit + formElementOperator: EQUALS + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: sens_luv + formElementExpectedValue: Individuell/vergleichend + formElementOperator: CONTAINS options: - value: '["Betriebsrat", "Konzern-IT"]' label: Gemeinsame Verantwortlichkeit mit @@ -1421,10 +2153,13 @@ formElementSections: description: '' type: TABLE visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: personenbezogene_daten_verarbeitet - formElementExpectedValue: Ja - formElementOperator: EQUALS + operator: AND + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: personenbezogene_daten_verarbeitet + formElementExpectedValue: Ja + formElementOperator: EQUALS tableRowPreset: sourceTableReference: umfassende_datenverarbeitung_tabelle columnMappings: @@ -1475,10 +2210,13 @@ formElementSections: description: '' type: RADIOBUTTON visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: personenbezogene_daten_verarbeitet - formElementExpectedValue: Ja - formElementOperator: EQUALS + operator: AND + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: personenbezogene_daten_verarbeitet + formElementExpectedValue: Ja + formElementOperator: EQUALS options: - value: '' label: Ja @@ -1497,10 +2235,13 @@ formElementSections: description: '' type: TABLE visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: personenbezogene_daten_verarbeitet - formElementExpectedValue: Ja - formElementOperator: EQUALS + operator: AND + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: personenbezogene_daten_verarbeitet + formElementExpectedValue: Ja + formElementOperator: EQUALS options: - value: '["Zugriffskontrolle (RBAC)", "Protokollierung/Audit", "Transportverschlüsselung", "Verschlüsselung at Rest", "Berechtigungsreview", "Incident-Handling", "Backup/Recovery", "Löschung/Retention technisch"]' label: TOM-Baustein @@ -1597,10 +2338,13 @@ formElementSections: description: '' type: TABLE visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: modul_konfigurierbar - formElementExpectedValue: Ja - formElementOperator: EQUALS + operator: AND + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: modul_konfigurierbar + formElementExpectedValue: Ja + formElementOperator: EQUALS options: - value: '["Berechtigungsgruppen für Kostenstellenberichte", "Mindestgruppengröße für Personalkostenauswertungen", "Anonymisierung für Reisekostenberichte"]' label: Konfiguration @@ -1737,10 +2481,13 @@ formElementSections: description: '' type: TABLE visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: modul_konfigurierbar - formElementExpectedValue: Ja - formElementOperator: EQUALS + operator: AND + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: modul_konfigurierbar + formElementExpectedValue: Ja + formElementOperator: EQUALS options: - value: '["Zugriffsbeschränkung auf eigene Organisationseinheit", "4-Augen-Prinzip bei Leistungsbeurteilungen", "Betriebsrat-Freigabe für Fehlzeitenauswertungen", "Mindestgruppengröße für statistische Auswertungen", "Audit-Logging für sensible Zugriffe"]' label: Konfiguration @@ -1877,10 +2624,13 @@ formElementSections: description: '' type: TABLE visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: modul_konfigurierbar - formElementExpectedValue: Ja - formElementOperator: EQUALS + operator: AND + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: modul_konfigurierbar + formElementExpectedValue: Ja + formElementOperator: EQUALS options: - value: '["Aggregation auf Schicht-/Teamebene", "Mindestgruppengröße für Produktivitätsauswertungen", "Betriebsrat-Freigabe für Einzelauswertungen", "Zeitverzögerung für Echtzeit-Dashboards"]' label: Konfiguration @@ -1965,10 +2715,13 @@ formElementSections: description: '' type: TEXTAREA visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: auswirkungen_arbeitsablaeufe - formElementExpectedValue: Ja - formElementOperator: EQUALS + operator: AND + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: auswirkungen_arbeitsablaeufe + formElementExpectedValue: Ja + formElementOperator: EQUALS options: - value: 'Finanzabteilung, Controlling, Personalwesen, Produktionsplanung, Vertrieb, Einkauf' label: Betroffene Bereiche @@ -1979,10 +2732,13 @@ formElementSections: description: '' type: TEXTAREA visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: auswirkungen_arbeitsablaeufe - formElementExpectedValue: Ja - formElementOperator: EQUALS + operator: AND + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: auswirkungen_arbeitsablaeufe + formElementExpectedValue: Ja + formElementOperator: EQUALS options: - value: 'Buchungsprozesse werden digitalisiert und automatisiert. Manuelle Rechnungsfreigaben entfallen weitgehend. Zeiterfassung erfolgt direkt im System. Gehaltsabrechnungen werden vollständig systemgestützt. Produktionsplanung erfolgt integriert mit Echtzeitdaten.' label: Betroffene Arbeitsabläufe / Arbeitsprozesse @@ -1993,10 +2749,13 @@ formElementSections: description: '' type: TEXTAREA visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: auswirkungen_arbeitsablaeufe - formElementExpectedValue: Ja - formElementOperator: EQUALS + operator: AND + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: auswirkungen_arbeitsablaeufe + formElementExpectedValue: Ja + formElementOperator: EQUALS options: - value: 'Papierbasierte Prozesse werden durch digitale Workflows ersetzt. Die Bearbeitungszeit verkürzt sich durch Automatisierung. Mehr Transparenz durch zentrale Datenhaltung. Wegfall von Medienbrüchen zwischen Abteilungen. Echtzeit-Reporting ermöglicht schnellere Entscheidungen.' label: Art der Änderungen @@ -2024,10 +2783,13 @@ formElementSections: description: '' type: TEXTAREA visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: auswirkungen_arbeitsbedingungen - formElementExpectedValue: Ja - formElementOperator: EQUALS + operator: AND + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: auswirkungen_arbeitsbedingungen + formElementExpectedValue: Ja + formElementOperator: EQUALS options: - value: 'Mitarbeiter arbeiten verstärkt am Bildschirm. Mobile Arbeit wird durch Cloudanbindung erleichtert. Durchgängige Systemnutzung erforderlich. Höhere IT-Kompetenz wird vorausgesetzt. Flexiblere Arbeitszeiten durch Remote-Zugriff möglich.' label: Beschreibung der Änderungen @@ -2055,10 +2817,13 @@ formElementSections: description: '' type: TEXTAREA visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: auswirkungen_zustaendigkeiten - formElementExpectedValue: Ja - formElementOperator: EQUALS + operator: AND + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: auswirkungen_zustaendigkeiten + formElementExpectedValue: Ja + formElementOperator: EQUALS options: - value: 'Rollen werden systemseitig definiert und zugewiesen. Freigabeberechtigungen werden im System abgebildet. Vorgesetzte erhalten erweiterte Einsichtsrechte in Mitarbeiterdaten. IT-Administration übernimmt Benutzerverwaltung. Datenschutzbeauftragte erhält Monitoring-Rechte.' label: Beschreibung der Änderungen @@ -2086,10 +2851,13 @@ formElementSections: description: '' type: TEXTAREA visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: auswirkungen_arbeitsplaetze_entfallen - formElementExpectedValue: Ja - formElementOperator: EQUALS + operator: AND + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: auswirkungen_arbeitsplaetze_entfallen + formElementExpectedValue: Ja + formElementOperator: EQUALS options: - value: '' label: Beschreibung @@ -2117,10 +2885,13 @@ formElementSections: description: '' type: TEXTAREA visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: auswirkungen_taetigkeitsumfang - formElementExpectedValue: Ja - formElementOperator: EQUALS + operator: AND + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: auswirkungen_taetigkeitsumfang + formElementExpectedValue: Ja + formElementOperator: EQUALS options: - value: 'Manuelle Dateneingaben reduzieren sich durch Automatisierung. Administrative Tätigkeiten werden teilweise systemseitig übernommen. Qualitätssicherungsaufgaben verschieben sich von manuell zu systemgestützt.' label: Beschreibung @@ -2148,10 +2919,13 @@ formElementSections: description: '' type: TEXTAREA visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: auswirkungen_arbeitsverdichtung - formElementExpectedValue: Ja - formElementOperator: EQUALS + operator: AND + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: auswirkungen_arbeitsverdichtung + formElementExpectedValue: Ja + formElementOperator: EQUALS options: - value: '' label: Beschreibung @@ -2179,10 +2953,13 @@ formElementSections: description: '' type: TEXTAREA visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: auswirkungen_software_ergonomie - formElementExpectedValue: Ja - formElementOperator: EQUALS + operator: AND + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: auswirkungen_software_ergonomie + formElementExpectedValue: Ja + formElementOperator: EQUALS options: - value: 'SAP Fiori Benutzeroberfläche entspricht den Anforderungen der ISO 9241. Intuitive Bedienung, responsive Design für verschiedene Endgeräte. Personalisierbare Dashboards. Barrierefreie Gestaltung nach WCAG 2.1 Standard AA. Usability-Tests mit positiven Ergebnissen durchgeführt.' label: Ergebnis der Prüfung @@ -2210,10 +2987,13 @@ formElementSections: description: '' type: TEXTAREA visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: auswirkungen_barrierefreiheit - formElementExpectedValue: Ja - formElementOperator: EQUALS + operator: AND + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: auswirkungen_barrierefreiheit + formElementExpectedValue: Ja + formElementOperator: EQUALS options: - value: 'WCAG 2.1 Level AA konform. Screenreader-Kompatibilität gegeben. Tastaturnavigation vollständig unterstützt. Kontrastverhältnisse nach Standards. Skalierbare Schriftgrößen. Alternativtexte für grafische Elemente.' label: Beschreibung der Maßnahmen @@ -2241,10 +3021,13 @@ formElementSections: description: '' type: TEXTAREA visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: auswirkungen_gefaehrdungsbeurteilung - formElementExpectedValue: Ja - formElementOperator: EQUALS + operator: AND + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: auswirkungen_gefaehrdungsbeurteilung + formElementExpectedValue: Ja + formElementOperator: EQUALS options: - value: 'Ergonomische Bildschirmarbeitsplätze nach ArbStättV eingerichtet. Beleuchtung angepasst. Bildschirmarbeitsplatzbrille wird bei Bedarf gestellt. Pausenregelungen implementiert. Schulungen zu ergonomischer Arbeitshaltung durchgeführt. Psychische Belastung durch Umstellung als gering eingestuft.' label: Ergebnisse der Gefährdungsbeurteilung @@ -2272,10 +3055,13 @@ formElementSections: description: '' type: RICH_TEXT visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: auswirkungen_schulungen - formElementExpectedValue: Ja - formElementOperator: EQUALS + operator: AND + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: auswirkungen_schulungen + formElementExpectedValue: Ja + formElementOperator: EQUALS options: - value: '

Schulungskonzept SAP S/4HANA

Phase 1: Grundlagenschulung (3 Tage)

  • SAP Fiori Benutzeroberfläche
  • Grundlegende Navigation
  • Stammdatenpflege

Phase 2: Rollenspezifische Schulung (2-5 Tage)

  • Finanzwesen: Buchungslogik, Abschlüsse, Reporting
  • Personal: Zeitwirtschaft, Gehaltsabrechnung, Self-Service
  • Produktion: MRP, Kapazitätsplanung, Shopfloor
  • Vertrieb: Auftragsabwickung, Preisfindung, CRM-Integration

Phase 3: Power-User Training (2 Tage)

  • Erweiterte Funktionen
  • Customizing-Grundlagen
  • Support-Aufgaben

Zeitplan: 3 Monate vor Go-Live bis 1 Monat nach Go-Live

Format: Präsenzschulung, E-Learning-Module, Sandbox-Umgebung zum Üben

Teilnahme: Verpflichtend für alle betroffenen Mitarbeiter während der Arbeitszeit

' label: Beschreibung der Schulungsmaßnahmen @@ -2288,7 +3074,7 @@ formElementSections: description: Detaillierte Angaben zum Einsatz von Künstlicher Intelligenz gemäß EU-KI-Verordnung templateReference: ki_informationen_template titleTemplate: Informationen zur Künstlichen Intelligenz - spawnedFromElementReference: ki_einsatz + spawnedFromElementReference: sens_ki formElementSubSections: # Risk class selection @@ -2365,10 +3151,13 @@ formElementSections: description: '' type: TEXTAREA visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: ki_info_pilotprojekt - formElementExpectedValue: Ja - formElementOperator: EQUALS + operator: AND + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: ki_info_pilotprojekt + formElementExpectedValue: Ja + formElementOperator: EQUALS options: - value: 'Pilotphase von April bis Juni 2025 in Werk Hamburg durchgeführt. Predictive Maintenance reduzierte ungeplante Anlagenstillstände um 32%. Rechnungsverarbeitung beschleunigt um 45%. Bestellvorschläge wurden in 87% der Fälle von Mitarbeitern akzeptiert. Feedback der Mitarbeiter überwiegend positiv - KI wird als hilfreiche Unterstützung wahrgenommen, nicht als Bedrohung. Anpassungsbedarf bei der Benutzeroberfläche identifiziert und umgesetzt.' label: Erkenntnisse @@ -2424,13 +3213,17 @@ formElementSections: description: '' type: RADIOBUTTON visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: ki_info_risikoklasse - formElementOperator: IS_NOT_EMPTY - - formElementConditionType: SHOW - sourceFormElementReference: ki_info_risikoklasse - formElementExpectedValue: Risikoklasse 1 (kein oder geringes Risiko) - formElementOperator: NOT_EQUALS + operator: AND + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: ki_info_risikoklasse + formElementOperator: IS_NOT_EMPTY + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: ki_info_risikoklasse + formElementExpectedValue: Risikoklasse 1 (kein oder geringes Risiko) + formElementOperator: NOT_EQUALS options: - value: 'true' label: Ja @@ -2446,10 +3239,13 @@ formElementSections: description: '' type: TEXTAREA visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: ki_info_trainingsdaten_doku - formElementExpectedValue: Ja - formElementOperator: EQUALS + operator: AND + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: ki_info_trainingsdaten_doku + formElementExpectedValue: Ja + formElementOperator: EQUALS options: - value: 'Trainingsdaten stammen aus historischen Betriebsdaten der letzten 5 Jahre (2020-2025). Predictive Maintenance: Maschinenlaufzeiten, Wartungsprotokolle, Sensordaten von 45 Produktionsanlagen. Rechnungsverarbeitung: 250.000 anonymisierte Rechnungen verschiedener Formate. Bestellvorschläge: Bestellhistorie, Lagerbestände, Lieferantenperformance. Daten wurden bereinigt, anonymisiert und auf Bias überprüft. Keine personenbezogenen Mitarbeiterdaten im Training verwendet. Trainingsdaten-Dokumentation gemäß Art. 10 KI-VO erstellt.' label: Zusammenfassung @@ -2461,13 +3257,17 @@ formElementSections: description: '' type: RADIOBUTTON visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: ki_info_risikoklasse - formElementOperator: IS_NOT_EMPTY - - formElementConditionType: SHOW - sourceFormElementReference: ki_info_risikoklasse - formElementExpectedValue: Risikoklasse 1 (kein oder geringes Risiko) - formElementOperator: NOT_EQUALS + operator: AND + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: ki_info_risikoklasse + formElementOperator: IS_NOT_EMPTY + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: ki_info_risikoklasse + formElementExpectedValue: Risikoklasse 1 (kein oder geringes Risiko) + formElementOperator: NOT_EQUALS options: - value: 'true' label: Ja @@ -2483,10 +3283,13 @@ formElementSections: description: '' type: TEXTAREA visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: ki_info_arbeitnehmer_informiert - formElementExpectedValue: Ja - formElementOperator: EQUALS + operator: AND + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: ki_info_arbeitnehmer_informiert + formElementExpectedValue: Ja + formElementOperator: EQUALS options: - value: 'Umfassende Information erfolgt über: 1) Betriebsvereinbarung zum KI-Einsatz mit detaillierter Beschreibung aller KI-Funktionen. 2) Verpflichtende Schulungen vor Go-Live mit Schwerpunkt auf KI-Funktionen und deren Grenzen. 3) Transparente Kennzeichnung in der Benutzeroberfläche wenn KI-gestützte Vorschläge angezeigt werden. 4) Informationsbroschüre für alle betroffenen Mitarbeiter. 5) Regelmäßige Informationsveranstaltungen mit Q&A. Klarstellung: KI dient der Unterstützung, nicht der Überwachung. Keine personenbezogene Leistungsbewertung durch KI. Finale Entscheidungen liegen beim Menschen.' label: Beschreibung @@ -2498,13 +3301,17 @@ formElementSections: description: '' type: RADIOBUTTON visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: ki_info_risikoklasse - formElementOperator: IS_NOT_EMPTY - - formElementConditionType: SHOW - sourceFormElementReference: ki_info_risikoklasse - formElementExpectedValue: Risikoklasse 1 (kein oder geringes Risiko) - formElementOperator: NOT_EQUALS + operator: AND + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: ki_info_risikoklasse + formElementOperator: IS_NOT_EMPTY + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: ki_info_risikoklasse + formElementExpectedValue: Risikoklasse 1 (kein oder geringes Risiko) + formElementOperator: NOT_EQUALS options: - value: 'true' label: Ja @@ -2520,10 +3327,13 @@ formElementSections: description: '' type: TEXTAREA visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: ki_info_ergebnisse_gekennzeichnet - formElementExpectedValue: Ja - formElementOperator: EQUALS + operator: AND + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: ki_info_ergebnisse_gekennzeichnet + formElementExpectedValue: Ja + formElementOperator: EQUALS options: - value: 'Alle KI-generierten Empfehlungen sind in der Benutzeroberfläche mit einem deutlich sichtbaren "KI-Vorschlag" Badge gekennzeichnet. Zusätzlich wird eine Konfidenz-Score (Vertrauenswert) angezeigt. Bei Bestellvorschlägen: Grünes KI-Symbol mit Hinweis "Basierend auf historischen Daten". Bei Wartungsempfehlungen: Orange Wartungs-Symbol mit "Predictive Maintenance Empfehlung". Rechnungserkennung: Automatisch erkannte Felder sind farblich hervorgehoben mit Genauigkeitsangabe. Nutzer können KI-Vorschläge jederzeit überschreiben.' label: Beschreibung @@ -2535,13 +3345,17 @@ formElementSections: description: '' type: RADIOBUTTON visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: ki_info_risikoklasse - formElementOperator: IS_NOT_EMPTY - - formElementConditionType: SHOW - sourceFormElementReference: ki_info_risikoklasse - formElementExpectedValue: Risikoklasse 1 (kein oder geringes Risiko) - formElementOperator: NOT_EQUALS + operator: AND + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: ki_info_risikoklasse + formElementOperator: IS_NOT_EMPTY + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: ki_info_risikoklasse + formElementExpectedValue: Risikoklasse 1 (kein oder geringes Risiko) + formElementOperator: NOT_EQUALS options: - value: 'true' label: Nein @@ -2557,13 +3371,17 @@ formElementSections: description: '' type: RADIOBUTTON visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: ki_info_risikoklasse - formElementOperator: IS_NOT_EMPTY - - formElementConditionType: SHOW - sourceFormElementReference: ki_info_risikoklasse - formElementExpectedValue: Risikoklasse 1 (kein oder geringes Risiko) - formElementOperator: NOT_EQUALS + operator: AND + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: ki_info_risikoklasse + formElementOperator: IS_NOT_EMPTY + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: ki_info_risikoklasse + formElementExpectedValue: Risikoklasse 1 (kein oder geringes Risiko) + formElementOperator: NOT_EQUALS options: - value: 'true' label: Nein @@ -2579,13 +3397,17 @@ formElementSections: description: '' type: RADIOBUTTON visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: ki_info_risikoklasse - formElementOperator: IS_NOT_EMPTY - - formElementConditionType: SHOW - sourceFormElementReference: ki_info_risikoklasse - formElementExpectedValue: Risikoklasse 1 (kein oder geringes Risiko) - formElementOperator: NOT_EQUALS + operator: AND + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: ki_info_risikoklasse + formElementOperator: IS_NOT_EMPTY + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: ki_info_risikoklasse + formElementExpectedValue: Risikoklasse 1 (kein oder geringes Risiko) + formElementOperator: NOT_EQUALS options: - value: 'true' label: Nein @@ -2601,13 +3423,17 @@ formElementSections: description: '' type: RADIOBUTTON visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: ki_info_risikoklasse - formElementOperator: IS_NOT_EMPTY - - formElementConditionType: SHOW - sourceFormElementReference: ki_info_risikoklasse - formElementExpectedValue: Risikoklasse 1 (kein oder geringes Risiko) - formElementOperator: NOT_EQUALS + operator: AND + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: ki_info_risikoklasse + formElementOperator: IS_NOT_EMPTY + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: ki_info_risikoklasse + formElementExpectedValue: Risikoklasse 1 (kein oder geringes Risiko) + formElementOperator: NOT_EQUALS options: - value: '' label: Nein @@ -2623,10 +3449,13 @@ formElementSections: description: '' type: TEXTAREA visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: ki_info_eingabehistorie - formElementExpectedValue: Ja - formElementOperator: EQUALS + operator: AND + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: ki_info_eingabehistorie + formElementExpectedValue: Ja + formElementOperator: EQUALS options: - value: 'Eingabehistorie wird ausschließlich für Audit-Zwecke gespeichert, nicht für Re-Training. Speicherung erfolgt anonymisiert ohne Personenbezug. Zweck: Nachvollziehbarkeit von Entscheidungen, Qualitätssicherung, Fehleranalyse bei Systemstörungen. Aufbewahrungsfrist: 3 Jahre gemäß gesetzlicher Aufbewahrungspflichten. Zugriff nur durch autorisierte Auditoren und System-Administratoren mit protokollierter Zugriffskontrolle.' label: Zweck @@ -2638,13 +3467,17 @@ formElementSections: description: '' type: RADIOBUTTON visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: ki_info_risikoklasse - formElementOperator: IS_NOT_EMPTY - - formElementConditionType: SHOW - sourceFormElementReference: ki_info_risikoklasse - formElementExpectedValue: Risikoklasse 1 (kein oder geringes Risiko) - formElementOperator: NOT_EQUALS + operator: AND + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: ki_info_risikoklasse + formElementOperator: IS_NOT_EMPTY + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: ki_info_risikoklasse + formElementExpectedValue: Risikoklasse 1 (kein oder geringes Risiko) + formElementOperator: NOT_EQUALS options: - value: 'true' label: Ja @@ -2660,10 +3493,13 @@ formElementSections: description: '' type: TEXTAREA visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: ki_info_nachvollziehbarkeit - formElementExpectedValue: Ja - formElementOperator: EQUALS + operator: AND + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: ki_info_nachvollziehbarkeit + formElementExpectedValue: Ja + formElementOperator: EQUALS options: - value: 'SAP S/4HANA bietet Explainability-Features für alle KI-Entscheidungen. Bei jedem KI-Vorschlag kann der Nutzer auf "Erklärung anzeigen" klicken und erhält: 1) Die wichtigsten Einflussfaktoren für die Empfehlung, 2) Vergleichbare historische Fälle, 3) Statistische Konfidenz. Predictive Maintenance: Anzeige der relevanten Sensordaten und Schwellwerte. Bestellvorschläge: Visualisierung von Verbrauchstrends und saisonalen Mustern. Vollständige Audit-Trails dokumentieren Input, Output und menschliche Entscheidungen. Model Cards dokumentieren Modell-Architektur, Training und Limitations.' label: Beschreibung @@ -2675,13 +3511,17 @@ formElementSections: description: '' type: TEXTAREA visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: ki_info_risikoklasse - formElementOperator: IS_NOT_EMPTY - - formElementConditionType: SHOW - sourceFormElementReference: ki_info_risikoklasse - formElementExpectedValue: Risikoklasse 1 (kein oder geringes Risiko) - formElementOperator: NOT_EQUALS + operator: AND + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: ki_info_risikoklasse + formElementOperator: IS_NOT_EMPTY + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: ki_info_risikoklasse + formElementExpectedValue: Risikoklasse 1 (kein oder geringes Risiko) + formElementOperator: NOT_EQUALS options: - value: 'Predictive Maintenance: 89% Genauigkeit bei Vorhersage von Wartungsbedarf (validiert im Pilotprojekt). Rechnungserkennung: 94% korrekte Feldextraktion, 6% benötigen manuelle Nachbearbeitung. Bestellvorschläge: 87% Akzeptanzrate durch Einkäufer im Pilotbetrieb. Modelle werden kontinuierlich überwacht. Bei Abweichung der Performance-Metriken erfolgt automatischer Alert. Wichtig: KI dient als Unterstützung, finale Entscheidung liegt beim Fachanwender. Bei kritischen Entscheidungen ist menschliche Überprüfung obligatorisch.' label: Vertrauen in Richtigkeit @@ -2693,13 +3533,17 @@ formElementSections: description: '' type: TEXTAREA visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: ki_info_risikoklasse - formElementOperator: IS_NOT_EMPTY - - formElementConditionType: SHOW - sourceFormElementReference: ki_info_risikoklasse - formElementExpectedValue: Risikoklasse 1 (kein oder geringes Risiko) - formElementOperator: NOT_EQUALS + operator: AND + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: ki_info_risikoklasse + formElementOperator: IS_NOT_EMPTY + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: ki_info_risikoklasse + formElementExpectedValue: Risikoklasse 1 (kein oder geringes Risiko) + formElementOperator: NOT_EQUALS options: - value: 'Umfassende Bias-Prüfung der Trainingsdaten auf diskriminierende Muster. Diverse Test-Datasets zur Validierung. Statistische Fairness-Metriken werden monatlich überprüft. Kein Einsatz von generativen KI-Modellen (keine Halluzinationsgefahr). Regelbasierte Plausibilitätsprüfungen für alle KI-Outputs. A/B-Testing vor Rollout neuer Modellversionen. Kontinuierliches Monitoring mit automatischen Alerts bei Anomalien. Feedback-Loop: Nutzer können fehlerhafte KI-Vorschläge melden. Vierteljährliche Reviews durch interdisziplinäres KI-Governance-Board. SAP als Anbieter führt regelmäßige Quality Gates durch.' label: Qualitätssicherungsmaßnahmen diff --git a/legalconsenthub-backend/src/main/resources/seed/initial_application_form_template.yaml b/legalconsenthub-backend/src/main/resources/seed/initial_application_form_template.yaml index f034470..7a7eedb 100644 --- a/legalconsenthub-backend/src/main/resources/seed/initial_application_form_template.yaml +++ b/legalconsenthub-backend/src/main/resources/seed/initial_application_form_template.yaml @@ -1,15 +1,10 @@ isTemplate: true name: Name des IT-Systems - formElementSections: - -# --- Main Section --- - title: Angaben zum IT-System shortTitle: IT-System description: Alle Angaben zum IT-System formElementSubSections: - - # Art der Maßnahme (primary branching point) - title: Art der Maßnahme subtitle: Handelt es sich um eine Einführung, Änderung, Erweiterung oder Ablösung/Einstellung eines IT-Systems? formElements: @@ -37,18 +32,10 @@ formElementSections: sectionSpawnConditionType: SHOW sectionSpawnExpectedValue: Einführung sectionSpawnOperator: EQUALS - - templateReference: verarbeitung_mitarbeiterdaten_template - sectionSpawnConditionType: SHOW - sectionSpawnExpectedValue: Einführung - sectionSpawnOperator: EQUALS - templateReference: loeschkonzept_template sectionSpawnConditionType: SHOW sectionSpawnExpectedValue: Einführung sectionSpawnOperator: EQUALS - - templateReference: schnittstellen_template - sectionSpawnConditionType: SHOW - sectionSpawnExpectedValue: Einführung - sectionSpawnOperator: EQUALS - templateReference: datenschutz_template sectionSpawnConditionType: SHOW sectionSpawnExpectedValue: Einführung @@ -57,11 +44,43 @@ formElementSections: sectionSpawnConditionType: SHOW sectionSpawnExpectedValue: Einführung sectionSpawnOperator: EQUALS - - # Einführung: Allgemeine Informationen - title: Allgemeine Informationen - subtitle: Grundlegende Informationen zur Einführung + subtitle: Grundlegende Informationen formElements: + - reference: abloesung_name_system + title: Wie lautet der Name des abgelösten IT-Systems? + description: '' + options: + - value: '' + label: Name des abgelösten IT-Systems + processingPurpose: SYSTEM_OPERATION + employeeDataCategory: NON_CRITICAL + type: TEXTAREA + visibilityConditions: + operator: AND + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: art_der_massnahme + formElementExpectedValue: Einführung mit einhergehender Ablösung + formElementOperator: EQUALS + - reference: aenderung_zeitpunkt + title: Wann ist der geplante Zeitpunkt der Änderungen? + description: '' + options: + - value: '' + label: Geplanter Zeitpunkt + processingPurpose: SYSTEM_OPERATION + employeeDataCategory: NON_CRITICAL + type: DATE + visibilityConditions: + operator: AND + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: art_der_massnahme + formElementExpectedValue: Änderung IT-System + formElementOperator: EQUALS - reference: testphase_findet_statt title: Findet eine Testphase statt? description: '' @@ -76,10 +95,17 @@ formElementSections: employeeDataCategory: NON_CRITICAL type: RADIOBUTTON visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: art_der_massnahme - formElementExpectedValue: Einführung - formElementOperator: EQUALS + operator: OR + conditions: + - sourceFormElementReference: art_der_massnahme + formElementExpectedValue: Einführung + formElementOperator: EQUALS + - sourceFormElementReference: art_der_massnahme + formElementExpectedValue: Einführung mit einhergehender Ablösung + formElementOperator: EQUALS + - sourceFormElementReference: art_der_massnahme + formElementExpectedValue: Änderung IT-System + formElementOperator: EQUALS - reference: mitarbeiterdaten_nicht_anonymisiert title: Werden Arbeitnehmerdaten in der Testphase nicht-anonymisiert oder -pseudonymsiert verarbeitet? description: '' @@ -94,10 +120,13 @@ formElementSections: employeeDataCategory: NON_CRITICAL type: RADIOBUTTON visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: testphase_findet_statt - formElementExpectedValue: Ja - formElementOperator: EQUALS + operator: AND + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: testphase_findet_statt + formElementExpectedValue: Ja + formElementOperator: EQUALS - reference: art_der_mitarbeiterdaten title: Welche Kategorien von Arbeitnehmerdaten werden verarbeitet? description: '' @@ -108,10 +137,13 @@ formElementSections: employeeDataCategory: SENSITIVE type: TEXTAREA visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: mitarbeiterdaten_nicht_anonymisiert - formElementExpectedValue: Ja - formElementOperator: EQUALS + operator: AND + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: mitarbeiterdaten_nicht_anonymisiert + formElementExpectedValue: Ja + formElementOperator: EQUALS - reference: anzahl_betroffener_mitarbeiter title: Wie viele Mitarbeiter sind von der Testphase betroffen? description: '' @@ -122,17 +154,18 @@ formElementSections: employeeDataCategory: REVIEW_REQUIRED type: TEXTAREA visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: testphase_findet_statt - formElementExpectedValue: Ja - formElementOperator: EQUALS - - # Einführung: Betroffene Einheiten + operator: AND + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: testphase_findet_statt + formElementExpectedValue: Ja + formElementOperator: EQUALS - title: Betroffene Einheiten und Verantwortlichkeiten subtitle: Informationen zu betroffenen Einheiten und Verantwortlichen formElements: - reference: betroffene_unternehmen - title: Für welche Unternehmen soll das IT-System eingeführt werden? + title: Welche Unternehmen sind betroffen? description: '' options: - value: '' @@ -141,12 +174,19 @@ formElementSections: employeeDataCategory: NON_CRITICAL type: TEXTAREA visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: art_der_massnahme - formElementExpectedValue: Einführung - formElementOperator: EQUALS + operator: OR + conditions: + - sourceFormElementReference: art_der_massnahme + formElementExpectedValue: Einführung + formElementOperator: EQUALS + - sourceFormElementReference: art_der_massnahme + formElementExpectedValue: Einführung mit einhergehender Ablösung + formElementOperator: EQUALS + - sourceFormElementReference: art_der_massnahme + formElementExpectedValue: Änderung IT-System + formElementOperator: EQUALS - reference: betroffene_betriebe - title: Für welche Betriebe/Betriebsteile wird das IT-System eingeführt? + title: Welche Betriebe/Betriebsteile sind betroffen? description: '' options: - value: '' @@ -155,10 +195,17 @@ formElementSections: employeeDataCategory: REVIEW_REQUIRED type: TEXTAREA visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: art_der_massnahme - formElementExpectedValue: Einführung - formElementOperator: EQUALS + operator: OR + conditions: + - sourceFormElementReference: art_der_massnahme + formElementExpectedValue: Einführung + formElementOperator: EQUALS + - sourceFormElementReference: art_der_massnahme + formElementExpectedValue: Einführung mit einhergehender Ablösung + formElementOperator: EQUALS + - sourceFormElementReference: art_der_massnahme + formElementExpectedValue: Änderung IT-System + formElementOperator: EQUALS - reference: betroffene_bereiche title: Für welche Bereiche bzw. Abteilungen wird das IT-System zum Einsatz kommen? description: '' @@ -169,10 +216,17 @@ formElementSections: employeeDataCategory: REVIEW_REQUIRED type: TEXTAREA visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: art_der_massnahme - formElementExpectedValue: Einführung - formElementOperator: EQUALS + operator: OR + conditions: + - sourceFormElementReference: art_der_massnahme + formElementExpectedValue: Einführung + formElementOperator: EQUALS + - sourceFormElementReference: art_der_massnahme + formElementExpectedValue: Einführung mit einhergehender Ablösung + formElementOperator: EQUALS + - sourceFormElementReference: art_der_massnahme + formElementExpectedValue: Änderung IT-System + formElementOperator: EQUALS - reference: verantwortlicher_fachbereich title: Wer ist der verantwortliche Fachbereich und Ansprechpartner? description: '' @@ -183,12 +237,17 @@ formElementSections: employeeDataCategory: NON_CRITICAL type: TEXTAREA visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: art_der_massnahme - formElementExpectedValue: Einführung - formElementOperator: EQUALS - - # Einführung: Angaben zum IT-System + operator: OR + conditions: + - sourceFormElementReference: art_der_massnahme + formElementExpectedValue: Einführung + formElementOperator: EQUALS + - sourceFormElementReference: art_der_massnahme + formElementExpectedValue: Einführung mit einhergehender Ablösung + formElementOperator: EQUALS + - sourceFormElementReference: art_der_massnahme + formElementExpectedValue: Änderung IT-System + formElementOperator: EQUALS - title: Angaben zum IT-System subtitle: Detaillierte Informationen zum IT-System formElements: @@ -202,10 +261,14 @@ formElementSections: employeeDataCategory: NON_CRITICAL type: TEXTAREA visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: art_der_massnahme - formElementExpectedValue: Einführung - formElementOperator: EQUALS + operator: OR + conditions: + - sourceFormElementReference: art_der_massnahme + formElementExpectedValue: Einführung + formElementOperator: EQUALS + - sourceFormElementReference: art_der_massnahme + formElementExpectedValue: Einführung mit einhergehender Ablösung + formElementOperator: EQUALS - reference: anbieter title: Wer ist der Anbieter des IT-Systems? description: '' @@ -216,10 +279,14 @@ formElementSections: employeeDataCategory: NON_CRITICAL type: TEXTAREA visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: art_der_massnahme - formElementExpectedValue: Einführung - formElementOperator: EQUALS + operator: OR + conditions: + - sourceFormElementReference: art_der_massnahme + formElementExpectedValue: Einführung + formElementOperator: EQUALS + - sourceFormElementReference: art_der_massnahme + formElementExpectedValue: Einführung mit einhergehender Ablösung + formElementOperator: EQUALS - reference: speicherort title: Wo werden die Daten gespeichert? description: '' @@ -234,10 +301,14 @@ formElementSections: employeeDataCategory: SENSITIVE type: CHECKBOX visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: art_der_massnahme - formElementExpectedValue: Einführung - formElementOperator: EQUALS + operator: OR + conditions: + - sourceFormElementReference: art_der_massnahme + formElementExpectedValue: Einführung + formElementOperator: EQUALS + - sourceFormElementReference: art_der_massnahme + formElementExpectedValue: Einführung mit einhergehender Ablösung + formElementOperator: EQUALS - reference: zugriff_art title: Wie erfolgt der Zugriff auf das IT-System? description: '' @@ -252,10 +323,14 @@ formElementSections: employeeDataCategory: REVIEW_REQUIRED type: CHECKBOX visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: art_der_massnahme - formElementExpectedValue: Einführung - formElementOperator: EQUALS + operator: OR + conditions: + - sourceFormElementReference: art_der_massnahme + formElementExpectedValue: Einführung + formElementOperator: EQUALS + - sourceFormElementReference: art_der_massnahme + formElementExpectedValue: Einführung mit einhergehender Ablösung + formElementOperator: EQUALS - reference: endgeraetezugriff title: Mit welchen Endgeräten wird auf das IT-System zugegriffen? description: '' @@ -270,10 +345,14 @@ formElementSections: employeeDataCategory: SENSITIVE type: CHECKBOX visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: art_der_massnahme - formElementExpectedValue: Einführung - formElementOperator: EQUALS + operator: OR + conditions: + - sourceFormElementReference: art_der_massnahme + formElementExpectedValue: Einführung + formElementOperator: EQUALS + - sourceFormElementReference: art_der_massnahme + formElementExpectedValue: Einführung mit einhergehender Ablösung + formElementOperator: EQUALS - reference: einfuehrung_module_komponenten title: Werden Module oder Komponenten eingeführt? description: '' @@ -288,10 +367,14 @@ formElementSections: employeeDataCategory: NON_CRITICAL type: RADIOBUTTON visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: art_der_massnahme - formElementExpectedValue: Einführung - formElementOperator: EQUALS + operator: OR + conditions: + - sourceFormElementReference: art_der_massnahme + formElementExpectedValue: Einführung + formElementOperator: EQUALS + - sourceFormElementReference: art_der_massnahme + formElementExpectedValue: Einführung mit einhergehender Ablösung + formElementOperator: EQUALS - reference: modul_1 title: Modulname description: '' @@ -307,10 +390,13 @@ formElementSections: sectionSpawnConditionType: SHOW sectionSpawnOperator: IS_NOT_EMPTY visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: einfuehrung_module_komponenten - formElementExpectedValue: Modul - formElementOperator: EQUALS + operator: AND + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: einfuehrung_module_komponenten + formElementExpectedValue: Modul + formElementOperator: EQUALS - reference: komponente_1 title: Komponentenname description: '' @@ -326,34 +412,13 @@ formElementSections: sectionSpawnConditionType: SHOW sectionSpawnOperator: IS_NOT_EMPTY visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: einfuehrung_module_komponenten - formElementExpectedValue: Komponente - formElementOperator: EQUALS - - reference: ki_einsatz - title: Kommt im IT-System Künstliche Intelligenz zum Einsatz? - description: '' - options: - - value: Nein - label: Nein - processingPurpose: SYSTEM_OPERATION - employeeDataCategory: NON_CRITICAL - - value: Ja - label: Ja - processingPurpose: DATA_ANALYSIS - employeeDataCategory: SENSITIVE - type: RADIOBUTTON - isClonable: false - sectionSpawnTriggers: - - templateReference: ki_informationen_template - sectionSpawnConditionType: SHOW - sectionSpawnExpectedValue: Ja - sectionSpawnOperator: EQUALS - visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: art_der_massnahme - formElementExpectedValue: Einführung - formElementOperator: EQUALS + operator: AND + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: einfuehrung_module_komponenten + formElementExpectedValue: Komponente + formElementOperator: EQUALS - reference: wirtschaftliche_auswirkungen title: Sind wirtschaftliche Auswirkungen des Systemeinsatzes zu erwarten? description: '' @@ -368,10 +433,14 @@ formElementSections: employeeDataCategory: NON_CRITICAL type: RADIOBUTTON visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: art_der_massnahme - formElementExpectedValue: Einführung - formElementOperator: EQUALS + operator: OR + conditions: + - sourceFormElementReference: art_der_massnahme + formElementExpectedValue: Einführung + formElementOperator: EQUALS + - sourceFormElementReference: art_der_massnahme + formElementExpectedValue: Einführung mit einhergehender Ablösung + formElementOperator: EQUALS - reference: beschreibung_wirtschaftliche_auswirkungen title: Beschreibung der wirtschaftlichen Auswirkungen description: '' @@ -382,11 +451,562 @@ formElementSections: employeeDataCategory: REVIEW_REQUIRED type: TEXTAREA visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: wirtschaftliche_auswirkungen - formElementExpectedValue: Ja - formElementOperator: EQUALS - # Einstellung IT-System + operator: AND + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: wirtschaftliche_auswirkungen + formElementExpectedValue: Ja + formElementOperator: EQUALS + - title: Sensitivitäts-Check + subtitle: Bewertung der Sensitivität des IT-Systems hinsichtlich Arbeitnehmerdaten + formElements: + - reference: sens_verarbeitung_arbeitnehmerdaten + title: Verarbeitet das System Arbeitnehmerdaten? + description: '' + options: + - value: '' + label: Personenbeziehbar + processingPurpose: DATA_ANALYSIS + employeeDataCategory: SENSITIVE + - value: '' + label: Anonymisiert (ohne Reidentifikation) + processingPurpose: DATA_ANALYSIS + employeeDataCategory: NON_CRITICAL + - value: '' + label: Keine Arbeitnehmerdaten + processingPurpose: SYSTEM_OPERATION + employeeDataCategory: NON_CRITICAL + type: RADIOBUTTON + sectionSpawnTriggers: + - templateReference: verarbeitung_mitarbeiterdaten_template + sectionSpawnConditionType: SHOW + sectionSpawnExpectedValue: Personenbeziehbar + sectionSpawnOperator: EQUALS + visibilityConditions: + operator: OR + conditions: + - sourceFormElementReference: art_der_massnahme + formElementExpectedValue: Einführung + formElementOperator: EQUALS + - sourceFormElementReference: art_der_massnahme + formElementExpectedValue: Einführung mit einhergehender Ablösung + formElementOperator: EQUALS + - sourceFormElementReference: art_der_massnahme + formElementExpectedValue: Änderung IT-System + formElementOperator: EQUALS + - reference: sens_sichtbarkeit + title: Sind Arbeitnehmerdaten im System sichtbar? + description: '' + options: + - value: '' + label: Nein + processingPurpose: SYSTEM_OPERATION + employeeDataCategory: NON_CRITICAL + - value: '' + label: Aggregiert + processingPurpose: DATA_ANALYSIS + employeeDataCategory: NON_CRITICAL + - value: '' + label: Für Administrator + processingPurpose: DATA_ANALYSIS + employeeDataCategory: REVIEW_REQUIRED + - value: '' + label: Für mehrere Rollen + processingPurpose: DATA_ANALYSIS + employeeDataCategory: SENSITIVE + type: RADIOBUTTON + visibilityConditions: + operator: AND + conditions: + - nodeType: GROUP + groupOperator: OR + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: art_der_massnahme + formElementExpectedValue: Einführung + formElementOperator: EQUALS + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: art_der_massnahme + formElementExpectedValue: Einführung mit einhergehender Ablösung + formElementOperator: EQUALS + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: art_der_massnahme + formElementExpectedValue: Änderung IT-System + formElementOperator: EQUALS + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: sens_verarbeitung_arbeitnehmerdaten + formElementExpectedValue: Personenbeziehbar + formElementOperator: EQUALS + - reference: sens_auswertung + title: Gibt es analytische Funktionen im System, mit denen Leistung und Verhalten von Arbeitnehmern kontrolliert werden könnten? + description: '' + options: + - value: '' + label: Keine + processingPurpose: SYSTEM_OPERATION + employeeDataCategory: NON_CRITICAL + - value: '' + label: Funktionen vorhanden + processingPurpose: DATA_ANALYSIS + employeeDataCategory: REVIEW_REQUIRED + type: RADIOBUTTON + visibilityConditions: + operator: AND + conditions: + - nodeType: GROUP + groupOperator: OR + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: art_der_massnahme + formElementExpectedValue: Einführung + formElementOperator: EQUALS + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: art_der_massnahme + formElementExpectedValue: Einführung mit einhergehender Ablösung + formElementOperator: EQUALS + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: art_der_massnahme + formElementExpectedValue: Änderung IT-System + formElementOperator: EQUALS + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: sens_sichtbarkeit + formElementExpectedValue: Für mehrere Rollen + formElementOperator: EQUALS + - reference: sens_art_analytische_funktionen + title: Welche analytischen Funktionen sind vorhanden? + description: '' + options: + - value: 'false' + label: Berichte + processingPurpose: DATA_ANALYSIS + employeeDataCategory: REVIEW_REQUIRED + - value: 'false' + label: Reports + processingPurpose: DATA_ANALYSIS + employeeDataCategory: REVIEW_REQUIRED + - value: 'false' + label: Dashboards + processingPurpose: DATA_ANALYSIS + employeeDataCategory: REVIEW_REQUIRED + - value: 'false' + label: Rankings + processingPurpose: DATA_ANALYSIS + employeeDataCategory: SENSITIVE + - value: 'false' + label: Scores + processingPurpose: DATA_ANALYSIS + employeeDataCategory: SENSITIVE + - value: 'false' + label: Vergleiche + processingPurpose: DATA_ANALYSIS + employeeDataCategory: SENSITIVE + - value: 'false' + label: Sonstiges + processingPurpose: DATA_ANALYSIS + employeeDataCategory: REVIEW_REQUIRED + type: CHECKBOX + visibilityConditions: + operator: AND + conditions: + - nodeType: GROUP + groupOperator: OR + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: art_der_massnahme + formElementExpectedValue: Einführung + formElementOperator: EQUALS + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: art_der_massnahme + formElementExpectedValue: Einführung mit einhergehender Ablösung + formElementOperator: EQUALS + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: art_der_massnahme + formElementExpectedValue: Änderung IT-System + formElementOperator: EQUALS + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: sens_auswertung + formElementExpectedValue: Funktionen vorhanden + formElementOperator: EQUALS + - reference: sens_ranking_scoring + title: Gibt es Rankings/Scores/Benchmarks? + description: '' + options: + - value: '' + label: Nein + processingPurpose: SYSTEM_OPERATION + employeeDataCategory: NON_CRITICAL + - value: '' + label: Konfigurierbar (deaktiviert) + processingPurpose: DATA_ANALYSIS + employeeDataCategory: REVIEW_REQUIRED + - value: '' + label: Aktiviert + processingPurpose: DATA_ANALYSIS + employeeDataCategory: SENSITIVE + type: RADIOBUTTON + visibilityConditions: + operator: AND + conditions: + - nodeType: GROUP + groupOperator: OR + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: art_der_massnahme + formElementExpectedValue: Einführung + formElementOperator: EQUALS + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: art_der_massnahme + formElementExpectedValue: Einführung mit einhergehender Ablösung + formElementOperator: EQUALS + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: art_der_massnahme + formElementExpectedValue: Änderung IT-System + formElementOperator: EQUALS + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: sens_auswertung + formElementExpectedValue: Funktionen vorhanden + formElementOperator: EQUALS + - reference: sens_erhebung_tracking + title: Werden Ereignisse, Nutzungen und Logs erfasst? + description: '' + options: + - value: '' + label: Nein + processingPurpose: SYSTEM_OPERATION + employeeDataCategory: NON_CRITICAL + - value: '' + label: Technisch (Betrieb, Sicherheit) + processingPurpose: SYSTEM_OPERATION + employeeDataCategory: NON_CRITICAL + - value: '' + label: Ja (Nutzer-/Aktivitätsbezug) + processingPurpose: DATA_ANALYSIS + employeeDataCategory: SENSITIVE + type: RADIOBUTTON + visibilityConditions: + operator: AND + conditions: + - nodeType: GROUP + groupOperator: OR + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: art_der_massnahme + formElementExpectedValue: Einführung + formElementOperator: EQUALS + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: art_der_massnahme + formElementExpectedValue: Einführung mit einhergehender Ablösung + formElementOperator: EQUALS + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: art_der_massnahme + formElementExpectedValue: Änderung IT-System + formElementOperator: EQUALS + - nodeType: GROUP + groupOperator: OR + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: sens_sichtbarkeit + formElementExpectedValue: Für Administrator + formElementOperator: EQUALS + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: sens_sichtbarkeit + formElementExpectedValue: Für mehrere Rollen + formElementOperator: EQUALS + - reference: sens_alarme + title: Gibt es automatische Alarme/Trigger/Benachrichtigungen? + description: '' + options: + - value: '' + label: Nein + processingPurpose: SYSTEM_OPERATION + employeeDataCategory: NON_CRITICAL + - value: '' + label: Technisch (Betrieb, Sicherheit) + processingPurpose: SYSTEM_OPERATION + employeeDataCategory: NON_CRITICAL + - value: '' + label: Fachlich + processingPurpose: DATA_ANALYSIS + employeeDataCategory: REVIEW_REQUIRED + type: RADIOBUTTON + visibilityConditions: + operator: AND + conditions: + - nodeType: GROUP + groupOperator: OR + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: art_der_massnahme + formElementExpectedValue: Einführung + formElementOperator: EQUALS + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: art_der_massnahme + formElementExpectedValue: Einführung mit einhergehender Ablösung + formElementOperator: EQUALS + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: art_der_massnahme + formElementExpectedValue: Änderung IT-System + formElementOperator: EQUALS + - nodeType: GROUP + groupOperator: OR + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: sens_sichtbarkeit + formElementExpectedValue: Für Administrator + formElementOperator: EQUALS + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: sens_sichtbarkeit + formElementExpectedValue: Für mehrere Rollen + formElementOperator: EQUALS + - reference: sens_luv + title: Werden analytische Funktionen für Leistungs-/Verhaltenskontrolle genutzt? + description: '' + options: + - value: '' + label: Nein + processingPurpose: SYSTEM_OPERATION + employeeDataCategory: NON_CRITICAL + - value: '' + label: Aggregiert (Team) + processingPurpose: DATA_ANALYSIS + employeeDataCategory: REVIEW_REQUIRED + - value: '' + label: Aggregiert (Abteilung) + processingPurpose: DATA_ANALYSIS + employeeDataCategory: REVIEW_REQUIRED + - value: '' + label: Aggregiert (Standort) + processingPurpose: DATA_ANALYSIS + employeeDataCategory: REVIEW_REQUIRED + - value: '' + label: Individuell/vergleichend + processingPurpose: DATA_ANALYSIS + employeeDataCategory: SENSITIVE + type: CHECKBOX + visibilityConditions: + operator: OR + conditions: + - sourceFormElementReference: art_der_massnahme + formElementExpectedValue: Einführung + formElementOperator: EQUALS + - sourceFormElementReference: art_der_massnahme + formElementExpectedValue: Einführung mit einhergehender Ablösung + formElementOperator: EQUALS + - sourceFormElementReference: art_der_massnahme + formElementExpectedValue: Änderung IT-System + formElementOperator: EQUALS + - reference: sens_analytische_funktionen + title: Gibt es analytische Funktionen (Dashboards / Reports / Trends)? + description: '' + options: + - value: '' + label: Keine + processingPurpose: SYSTEM_OPERATION + employeeDataCategory: NON_CRITICAL + - value: '' + label: Aggregiert + processingPurpose: DATA_ANALYSIS + employeeDataCategory: REVIEW_REQUIRED + - value: '' + label: Individualisiert + processingPurpose: DATA_ANALYSIS + employeeDataCategory: SENSITIVE + type: RADIOBUTTON + visibilityConditions: + operator: OR + conditions: + - sourceFormElementReference: art_der_massnahme + formElementExpectedValue: Einführung + formElementOperator: EQUALS + - sourceFormElementReference: art_der_massnahme + formElementExpectedValue: Einführung mit einhergehender Ablösung + formElementOperator: EQUALS + - sourceFormElementReference: art_der_massnahme + formElementExpectedValue: Änderung IT-System + formElementOperator: EQUALS + - reference: sens_automatisierte_entscheidungen + title: Bewertet / empfiehlt das System Maßnahmen über Beschäftigte oder bereitet Entscheidungen maßgeblich vor? + description: '' + options: + - value: '' + label: Nein + processingPurpose: SYSTEM_OPERATION + employeeDataCategory: NON_CRITICAL + - value: '' + label: Unterstützend (Empfehlung) + processingPurpose: DATA_ANALYSIS + employeeDataCategory: REVIEW_REQUIRED + - value: '' + label: Auto-Entscheidungen + processingPurpose: DATA_ANALYSIS + employeeDataCategory: SENSITIVE + type: RADIOBUTTON + visibilityConditions: + operator: OR + conditions: + - sourceFormElementReference: art_der_massnahme + formElementExpectedValue: Einführung + formElementOperator: EQUALS + - sourceFormElementReference: art_der_massnahme + formElementExpectedValue: Einführung mit einhergehender Ablösung + formElementOperator: EQUALS + - sourceFormElementReference: art_der_massnahme + formElementExpectedValue: Änderung IT-System + formElementOperator: EQUALS + - reference: sens_ki + title: Kommt im System Künstliche Intelligenz zum Einsatz? + description: '' + options: + - value: '' + label: Nein + processingPurpose: SYSTEM_OPERATION + employeeDataCategory: NON_CRITICAL + - value: '' + label: Ja + processingPurpose: DATA_ANALYSIS + employeeDataCategory: SENSITIVE + type: RADIOBUTTON + isClonable: false + sectionSpawnTriggers: + - templateReference: ki_informationen_template + sectionSpawnConditionType: SHOW + sectionSpawnExpectedValue: Ja + sectionSpawnOperator: EQUALS + visibilityConditions: + operator: OR + conditions: + - sourceFormElementReference: art_der_massnahme + formElementExpectedValue: Einführung + formElementOperator: EQUALS + - sourceFormElementReference: art_der_massnahme + formElementExpectedValue: Einführung mit einhergehender Ablösung + formElementOperator: EQUALS + - sourceFormElementReference: art_der_massnahme + formElementExpectedValue: Änderung IT-System + formElementOperator: EQUALS + - reference: sens_schnittstellen_export + title: Gibt es Schnittstellen oder Exportmöglichkeiten? + description: '' + options: + - value: '' + label: Schnittstellen vorhanden + processingPurpose: DATA_ANALYSIS + employeeDataCategory: REVIEW_REQUIRED + - value: '' + label: Exporte möglich + processingPurpose: DATA_ANALYSIS + employeeDataCategory: REVIEW_REQUIRED + - value: '' + label: Nur SSO/IAM + processingPurpose: SYSTEM_OPERATION + employeeDataCategory: NON_CRITICAL + - value: '' + label: Nein + processingPurpose: SYSTEM_OPERATION + employeeDataCategory: NON_CRITICAL + type: CHECKBOX + sectionSpawnTriggers: + - templateReference: schnittstellen_template + sectionSpawnConditionType: SHOW + sectionSpawnExpectedValue: Schnittstellen vorhanden + sectionSpawnOperator: EQUALS + visibilityConditions: + operator: OR + conditions: + - sourceFormElementReference: art_der_massnahme + formElementExpectedValue: Einführung + formElementOperator: EQUALS + - sourceFormElementReference: art_der_massnahme + formElementExpectedValue: Einführung mit einhergehender Ablösung + formElementOperator: EQUALS + - sourceFormElementReference: art_der_massnahme + formElementExpectedValue: Änderung IT-System + formElementOperator: EQUALS + - reference: sens_updates + title: Finden automatische Updates ohne Freigabeprozess statt? + description: '' + options: + - value: '' + label: Nein + processingPurpose: SYSTEM_OPERATION + employeeDataCategory: NON_CRITICAL + - value: '' + label: Updates mit Release Notes + processingPurpose: SYSTEM_OPERATION + employeeDataCategory: NON_CRITICAL + - value: '' + label: Automatische Updates + processingPurpose: SYSTEM_OPERATION + employeeDataCategory: REVIEW_REQUIRED + type: RADIOBUTTON + visibilityConditions: + operator: OR + conditions: + - sourceFormElementReference: art_der_massnahme + formElementExpectedValue: Einführung + formElementOperator: EQUALS + - sourceFormElementReference: art_der_massnahme + formElementExpectedValue: Einführung mit einhergehender Ablösung + formElementOperator: EQUALS + - sourceFormElementReference: art_der_massnahme + formElementExpectedValue: Änderung IT-System + formElementOperator: EQUALS + - reference: sens_admin_support + title: Sind Remote-Admin-/Supportzugriffe möglich? + description: '' + options: + - value: '' + label: Kein Remotezugriff + processingPurpose: SYSTEM_OPERATION + employeeDataCategory: NON_CRITICAL + - value: '' + label: Remotezugriff anlassbezogen + processingPurpose: SYSTEM_OPERATION + employeeDataCategory: REVIEW_REQUIRED + - value: '' + label: Umfassender Remotezugriff + processingPurpose: SYSTEM_OPERATION + employeeDataCategory: SENSITIVE + type: RADIOBUTTON + visibilityConditions: + operator: OR + conditions: + - sourceFormElementReference: art_der_massnahme + formElementExpectedValue: Einführung + formElementOperator: EQUALS + - sourceFormElementReference: art_der_massnahme + formElementExpectedValue: Einführung mit einhergehender Ablösung + formElementOperator: EQUALS + - sourceFormElementReference: art_der_massnahme + formElementExpectedValue: Änderung IT-System + formElementOperator: EQUALS - title: Einstellung IT-System subtitle: Informationen zur Einstellung des IT-Systems formElements: @@ -400,10 +1020,13 @@ formElementSections: employeeDataCategory: NON_CRITICAL type: TEXTAREA visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: art_der_massnahme - formElementExpectedValue: Einstellung IT-System - formElementOperator: EQUALS + operator: AND + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: art_der_massnahme + formElementExpectedValue: Einstellung IT-System + formElementOperator: EQUALS - reference: einstellung_grund title: Was ist der Grund für die Einstellung? description: '' @@ -414,10 +1037,13 @@ formElementSections: employeeDataCategory: NON_CRITICAL type: TEXTAREA visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: art_der_massnahme - formElementExpectedValue: Einstellung IT-System - formElementOperator: EQUALS + operator: AND + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: art_der_massnahme + formElementExpectedValue: Einstellung IT-System + formElementOperator: EQUALS - reference: einstellung_ersatz_system title: Tritt ein anderes IT-System an dessen Stelle? description: '' @@ -432,10 +1058,13 @@ formElementSections: employeeDataCategory: NON_CRITICAL type: RADIOBUTTON visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: art_der_massnahme - formElementExpectedValue: Einstellung IT-System - formElementOperator: EQUALS + operator: AND + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: art_der_massnahme + formElementExpectedValue: Einstellung IT-System + formElementOperator: EQUALS - reference: einstellung_ersatz_system_name title: Welches IT-System tritt an dessen Stelle? description: '' @@ -446,10 +1075,13 @@ formElementSections: employeeDataCategory: NON_CRITICAL type: TEXTAREA visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: einstellung_ersatz_system - formElementExpectedValue: Ja - formElementOperator: EQUALS + operator: AND + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: einstellung_ersatz_system + formElementExpectedValue: Ja + formElementOperator: EQUALS - reference: einstellung_auswirkungen_arbeitsablaeufe title: Ergeben sich Auswirkungen hinsichtlich der Arbeitsabläufe? description: '' @@ -464,10 +1096,13 @@ formElementSections: employeeDataCategory: NON_CRITICAL type: RADIOBUTTON visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: art_der_massnahme - formElementExpectedValue: Einstellung IT-System - formElementOperator: EQUALS + operator: AND + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: art_der_massnahme + formElementExpectedValue: Einstellung IT-System + formElementOperator: EQUALS - reference: einstellung_auswirkungen_arbeitsablaeufe_beschreibung title: Welche Auswirkungen hat die Einstellung auf die Arbeitsabläufe? description: '' @@ -478,10 +1113,13 @@ formElementSections: employeeDataCategory: REVIEW_REQUIRED type: TEXTAREA visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: einstellung_auswirkungen_arbeitsablaeufe - formElementExpectedValue: Ja - formElementOperator: EQUALS + operator: AND + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: einstellung_auswirkungen_arbeitsablaeufe + formElementExpectedValue: Ja + formElementOperator: EQUALS - reference: einstellung_auswirkungen_personalplanung title: Gibt es Auswirkungen im Hinblick auf die Personalplanung? description: '' @@ -496,10 +1134,13 @@ formElementSections: employeeDataCategory: NON_CRITICAL type: RADIOBUTTON visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: art_der_massnahme - formElementExpectedValue: Einstellung IT-System - formElementOperator: EQUALS + operator: AND + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: art_der_massnahme + formElementExpectedValue: Einstellung IT-System + formElementOperator: EQUALS - reference: einstellung_auswirkungen_personalplanung_beschreibung title: Welche Auswirkungen hat die Einstellung auf die Personalplanung? description: '' @@ -510,10 +1151,13 @@ formElementSections: employeeDataCategory: SENSITIVE type: TEXTAREA visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: einstellung_auswirkungen_personalplanung - formElementExpectedValue: Ja - formElementOperator: EQUALS + operator: AND + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: einstellung_auswirkungen_personalplanung + formElementExpectedValue: Ja + formElementOperator: EQUALS - reference: einstellung_wirtschaftliche_auswirkungen title: Sind wirtschaftliche Auswirkungen zu erwarten? description: '' @@ -528,10 +1172,13 @@ formElementSections: employeeDataCategory: NON_CRITICAL type: RADIOBUTTON visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: art_der_massnahme - formElementExpectedValue: Einstellung IT-System - formElementOperator: EQUALS + operator: AND + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: art_der_massnahme + formElementExpectedValue: Einstellung IT-System + formElementOperator: EQUALS - reference: einstellung_wirtschaftliche_auswirkungen_beschreibung title: Welche wirtschaftlichen Auswirkungen sind zu erwarten? description: '' @@ -542,10 +1189,13 @@ formElementSections: employeeDataCategory: REVIEW_REQUIRED type: TEXTAREA visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: einstellung_wirtschaftliche_auswirkungen - formElementExpectedValue: Ja - formElementOperator: EQUALS + operator: AND + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: einstellung_wirtschaftliche_auswirkungen + formElementExpectedValue: Ja + formElementOperator: EQUALS - reference: einstellung_zeitpunkt title: Zu wann ist die Einstellung geplant? description: '' @@ -556,10 +1206,13 @@ formElementSections: employeeDataCategory: NON_CRITICAL type: DATE visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: art_der_massnahme - formElementExpectedValue: Einstellung IT-System - formElementOperator: EQUALS + operator: AND + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: art_der_massnahme + formElementExpectedValue: Einstellung IT-System + formElementOperator: EQUALS - reference: einstellung_betroffene_betriebe title: Welche Betriebe / Betriebsteile sind von der Einstellung betroffen? description: '' @@ -570,10 +1223,13 @@ formElementSections: employeeDataCategory: REVIEW_REQUIRED type: TEXTAREA visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: art_der_massnahme - formElementExpectedValue: Einstellung IT-System - formElementOperator: EQUALS + operator: AND + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: art_der_massnahme + formElementExpectedValue: Einstellung IT-System + formElementOperator: EQUALS - reference: einstellung_betroffene_abteilungen title: Welche Abteilungen / Bereiche sind von der Einstellung betroffen? description: '' @@ -584,499 +1240,13 @@ formElementSections: employeeDataCategory: REVIEW_REQUIRED type: TEXTAREA visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: art_der_massnahme - formElementExpectedValue: Einstellung IT-System - formElementOperator: EQUALS - - # Einführung mit einhergehender Ablösung: Allgemeine Informationen - - title: Allgemeine Informationen - subtitle: Grundlegende Informationen zur Einführung mit Ablösung - formElements: - - reference: abloesung_name_system - title: Wie lautet der Name des abgelösten IT-Systems? - description: '' - options: - - value: '' - label: Name des abgelösten IT-Systems - processingPurpose: SYSTEM_OPERATION - employeeDataCategory: NON_CRITICAL - type: TEXTAREA - visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: art_der_massnahme - formElementExpectedValue: Einführung mit einhergehender Ablösung - formElementOperator: EQUALS - - reference: abloesung_testphase_findet_statt - title: Findet eine Testphase statt? - description: '' - options: - - value: Ja - label: Ja - processingPurpose: SYSTEM_OPERATION - employeeDataCategory: NON_CRITICAL - - value: Nein - label: Nein - processingPurpose: SYSTEM_OPERATION - employeeDataCategory: NON_CRITICAL - type: RADIOBUTTON - visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: art_der_massnahme - formElementExpectedValue: Einführung mit einhergehender Ablösung - formElementOperator: EQUALS - - reference: abloesung_mitarbeiterdaten_nicht_anonymisiert - title: Werden Arbeitnehmerdaten in der Testphase nicht-anonymisiert oder -pseudonymsiert verarbeitet? - description: '' - options: - - value: Ja - label: Ja - processingPurpose: DATA_ANALYSIS - employeeDataCategory: REVIEW_REQUIRED - - value: Nein - label: Nein - processingPurpose: SYSTEM_OPERATION - employeeDataCategory: NON_CRITICAL - type: RADIOBUTTON - visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: abloesung_testphase_findet_statt - formElementExpectedValue: Ja - formElementOperator: EQUALS - - reference: abloesung_art_der_mitarbeiterdaten - title: Welche Kategorien von Arbeitnehmerdaten werden verarbeitet? - description: '' - options: - - value: '' - label: Art der Mitarbeiterdaten - processingPurpose: DATA_ANALYSIS - employeeDataCategory: SENSITIVE - type: TEXTAREA - visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: abloesung_mitarbeiterdaten_nicht_anonymisiert - formElementExpectedValue: Ja - formElementOperator: EQUALS - - reference: abloesung_anzahl_betroffener_mitarbeiter - title: Wie viele Mitarbeiter sind von der Testphase betroffen? - description: '' - options: - - value: '' - label: Anzahl betroffener Mitarbeiter - processingPurpose: DATA_ANALYSIS - employeeDataCategory: REVIEW_REQUIRED - type: TEXTAREA - visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: abloesung_testphase_findet_statt - formElementExpectedValue: Ja - formElementOperator: EQUALS - - # Einführung mit einhergehender Ablösung: Betroffene Einheiten - - title: Betroffene Einheiten und Verantwortlichkeiten - subtitle: Informationen zu betroffenen Einheiten und Verantwortlichen - formElements: - - reference: abloesung_betroffene_unternehmen - title: Für welche Unternehmen soll das IT-System eingeführt werden? - description: '' - options: - - value: '' - label: Betroffene Unternehmen - processingPurpose: BUSINESS_PROCESS - employeeDataCategory: NON_CRITICAL - type: TEXTAREA - visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: art_der_massnahme - formElementExpectedValue: Einführung mit einhergehender Ablösung - formElementOperator: EQUALS - - reference: abloesung_betroffene_betriebe - title: Für welche Betriebe/Betriebsteile wird das IT-System eingeführt? - description: '' - options: - - value: '' - label: Betroffene Betriebe/Betriebsteile - processingPurpose: BUSINESS_PROCESS - employeeDataCategory: REVIEW_REQUIRED - type: TEXTAREA - visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: art_der_massnahme - formElementExpectedValue: Einführung mit einhergehender Ablösung - formElementOperator: EQUALS - - reference: abloesung_betroffene_bereiche - title: Für welche Bereiche bzw. Abteilungen wird das IT-System zum Einsatz kommen? - description: '' - options: - - value: '' - label: Bereiche/Abteilungen - processingPurpose: BUSINESS_PROCESS - employeeDataCategory: REVIEW_REQUIRED - type: TEXTAREA - visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: art_der_massnahme - formElementExpectedValue: Einführung mit einhergehender Ablösung - formElementOperator: EQUALS - - reference: abloesung_verantwortlicher_fachbereich - title: Wer ist der verantwortliche Fachbereich und Ansprechpartner? - description: '' - options: - - value: '' - label: Fachbereich und Ansprechpartner - processingPurpose: BUSINESS_PROCESS - employeeDataCategory: NON_CRITICAL - type: TEXTAREA - visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: art_der_massnahme - formElementExpectedValue: Einführung mit einhergehender Ablösung - formElementOperator: EQUALS - - # Einführung mit einhergehender Ablösung: Angaben zum IT-System - - title: Angaben zum IT-System - subtitle: Detaillierte Informationen zum IT-System - formElements: - - reference: abloesung_systembeschreibung - title: Kurze Systembeschreibung - description: '' - options: - - value: '' - label: Systembeschreibung - processingPurpose: SYSTEM_OPERATION - employeeDataCategory: NON_CRITICAL - type: TEXTAREA - visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: art_der_massnahme - formElementExpectedValue: Einführung mit einhergehender Ablösung - formElementOperator: EQUALS - - reference: abloesung_anbieter - title: Anbieter des IT-Systems - description: '' - options: - - value: '' - label: Anbieter - processingPurpose: SYSTEM_OPERATION - employeeDataCategory: NON_CRITICAL - type: TEXTAREA - visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: art_der_massnahme - formElementExpectedValue: Einführung mit einhergehender Ablösung - formElementOperator: EQUALS - - reference: abloesung_speicherort - title: Wo werden die Daten gespeichert? - description: '' - options: - - value: 'false' - label: Rechenzentrum - processingPurpose: SYSTEM_OPERATION - employeeDataCategory: REVIEW_REQUIRED - - value: 'false' - label: Cloud - processingPurpose: SYSTEM_OPERATION - employeeDataCategory: SENSITIVE - type: CHECKBOX - visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: art_der_massnahme - formElementExpectedValue: Einführung mit einhergehender Ablösung - formElementOperator: EQUALS - - reference: abloesung_zugriff_art - title: Wie erfolgt der Zugriff auf das IT-System? - description: '' - options: - - value: 'false' - label: Stationär - processingPurpose: SYSTEM_OPERATION - employeeDataCategory: NON_CRITICAL - - value: 'false' - label: Mobil - processingPurpose: SYSTEM_OPERATION - employeeDataCategory: REVIEW_REQUIRED - type: CHECKBOX - visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: art_der_massnahme - formElementExpectedValue: Einführung mit einhergehender Ablösung - formElementOperator: EQUALS - - reference: abloesung_endgeraetezugriff - title: Mit welchen Endgeräten wird auf das IT-System zugegriffen? - description: '' - options: - - value: 'false' - label: Dienstlich - processingPurpose: SYSTEM_OPERATION - employeeDataCategory: NON_CRITICAL - - value: 'false' - label: Privat - processingPurpose: SYSTEM_OPERATION - employeeDataCategory: SENSITIVE - type: CHECKBOX - visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: art_der_massnahme - formElementExpectedValue: Einführung mit einhergehender Ablösung - formElementOperator: EQUALS - - reference: abloesung_einfuehrung_module_komponenten - title: Werden Module oder Komponenten eingeführt? - description: '' - options: - - value: Modul - label: Modul - processingPurpose: SYSTEM_OPERATION - employeeDataCategory: NON_CRITICAL - - value: Komponente - label: Komponente - processingPurpose: SYSTEM_OPERATION - employeeDataCategory: NON_CRITICAL - type: RADIOBUTTON - visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: art_der_massnahme - formElementExpectedValue: Einführung mit einhergehender Ablösung - formElementOperator: EQUALS - - reference: abloesung_modul_1 - title: Modulname - description: '' - options: - - value: '' - label: Modulname - processingPurpose: SYSTEM_OPERATION - employeeDataCategory: NON_CRITICAL - type: TEXTAREA - isClonable: true - sectionSpawnTriggers: - - templateReference: module_details_template - sectionSpawnConditionType: SHOW - sectionSpawnOperator: IS_NOT_EMPTY - visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: abloesung_einfuehrung_module_komponenten - formElementExpectedValue: Modul - formElementOperator: EQUALS - - reference: abloesung_komponente_1 - title: Komponentenname - description: '' - options: - - value: '' - label: Komponentenname - processingPurpose: SYSTEM_OPERATION - employeeDataCategory: NON_CRITICAL - type: TEXTAREA - isClonable: true - sectionSpawnTriggers: - - templateReference: component_details_template - sectionSpawnConditionType: SHOW - sectionSpawnOperator: IS_NOT_EMPTY - visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: abloesung_einfuehrung_module_komponenten - formElementExpectedValue: Komponente - formElementOperator: EQUALS - - reference: abloesung_ki_einsatz - title: Kommt im IT-System Künstliche Intelligenz zum Einsatz? - description: '' - options: - - value: Ja - label: Ja - processingPurpose: DATA_ANALYSIS - employeeDataCategory: SENSITIVE - - value: Nein - label: Nein - processingPurpose: SYSTEM_OPERATION - employeeDataCategory: NON_CRITICAL - type: RADIOBUTTON - isClonable: false - sectionSpawnTriggers: - - templateReference: ki_informationen_template - sectionSpawnConditionType: SHOW - sectionSpawnExpectedValue: Ja - sectionSpawnOperator: EQUALS - visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: art_der_massnahme - formElementExpectedValue: Einführung mit einhergehender Ablösung - formElementOperator: EQUALS - - reference: abloesung_wirtschaftliche_auswirkungen - title: Sind wirtschaftliche Auswirkungen des Systemeinsatzes zu erwarten? - description: '' - options: - - value: Ja - label: Ja - processingPurpose: BUSINESS_PROCESS - employeeDataCategory: REVIEW_REQUIRED - - value: Nein - label: Nein - processingPurpose: BUSINESS_PROCESS - employeeDataCategory: NON_CRITICAL - type: RADIOBUTTON - visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: art_der_massnahme - formElementExpectedValue: Einführung mit einhergehender Ablösung - formElementOperator: EQUALS - - reference: abloesung_beschreibung_wirtschaftliche_auswirkungen - title: Beschreibung der wirtschaftlichen Auswirkungen - description: '' - options: - - value: '' - label: Beschreibung der Auswirkungen - processingPurpose: BUSINESS_PROCESS - employeeDataCategory: REVIEW_REQUIRED - type: TEXTAREA - visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: abloesung_wirtschaftliche_auswirkungen - formElementExpectedValue: Ja - formElementOperator: EQUALS - - # Änderung IT-System: Allgemeine Informationen - - title: Allgemeine Informationen zur Änderung - subtitle: Grundlegende Informationen zur Änderung - formElements: - - reference: aenderung_zeitpunkt - title: Wann ist der geplante Zeitpunkt der Änderungen? - description: '' - options: - - value: '' - label: Geplanter Zeitpunkt - processingPurpose: SYSTEM_OPERATION - employeeDataCategory: NON_CRITICAL - type: DATE - visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: art_der_massnahme - formElementExpectedValue: Änderung IT-System - formElementOperator: EQUALS - - reference: aenderung_testphase_findet_statt - title: Findet eine Testphase statt? - description: '' - options: - - value: Ja - label: Ja - processingPurpose: SYSTEM_OPERATION - employeeDataCategory: NON_CRITICAL - - value: Nein - label: Nein - processingPurpose: SYSTEM_OPERATION - employeeDataCategory: NON_CRITICAL - type: RADIOBUTTON - visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: art_der_massnahme - formElementExpectedValue: Änderung IT-System - formElementOperator: EQUALS - - reference: aenderung_mitarbeiterdaten_nicht_anonymisiert - title: Werden Arbeitnehmerdaten in der Testphase nicht-anonymisiert oder -pseudonymsiert verarbeitet? - description: '' - options: - - value: Ja - label: Ja - processingPurpose: DATA_ANALYSIS - employeeDataCategory: REVIEW_REQUIRED - - value: Nein - label: Nein - processingPurpose: SYSTEM_OPERATION - employeeDataCategory: NON_CRITICAL - type: RADIOBUTTON - visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: aenderung_testphase_findet_statt - formElementExpectedValue: Ja - formElementOperator: EQUALS - - reference: aenderung_art_der_mitarbeiterdaten - title: Welche Kategorien von Arbeitnehmerdaten werden verarbeitet? - description: '' - options: - - value: '' - label: Art der Mitarbeiterdaten - processingPurpose: DATA_ANALYSIS - employeeDataCategory: SENSITIVE - type: TEXTAREA - visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: aenderung_mitarbeiterdaten_nicht_anonymisiert - formElementExpectedValue: Ja - formElementOperator: EQUALS - - reference: aenderung_anzahl_betroffener_mitarbeiter - title: Wie viele Mitarbeiter sind von der Testphase betroffen? - description: '' - options: - - value: '' - label: Anzahl betroffener Mitarbeiter - processingPurpose: DATA_ANALYSIS - employeeDataCategory: REVIEW_REQUIRED - type: TEXTAREA - visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: aenderung_testphase_findet_statt - formElementExpectedValue: Ja - formElementOperator: EQUALS - - # Änderung IT-System: Betroffene Einheiten - - title: Betroffene Einheiten und Verantwortlichkeiten - subtitle: Informationen zu betroffenen Einheiten und Verantwortlichen - formElements: - - reference: aenderung_betroffene_unternehmen - title: Welche Unternehmen sind von der Änderung betroffen? - description: '' - options: - - value: '' - label: Betroffene Unternehmen - processingPurpose: BUSINESS_PROCESS - employeeDataCategory: NON_CRITICAL - type: TEXTAREA - visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: art_der_massnahme - formElementExpectedValue: Änderung IT-System - formElementOperator: EQUALS - - reference: aenderung_betroffene_betriebe - title: Welche Betriebe/Betriebsteile sind von der Änderung betroffen? - description: '' - options: - - value: '' - label: Betroffene Betriebe/Betriebsteile - processingPurpose: BUSINESS_PROCESS - employeeDataCategory: REVIEW_REQUIRED - type: TEXTAREA - visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: art_der_massnahme - formElementExpectedValue: Änderung IT-System - formElementOperator: EQUALS - - reference: aenderung_betroffene_bereiche - title: Für welche Bereiche bzw. Abteilungen wird die Änderung relevant werden? - description: '' - options: - - value: '' - label: Bereiche/Abteilungen - processingPurpose: BUSINESS_PROCESS - employeeDataCategory: REVIEW_REQUIRED - type: TEXTAREA - visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: art_der_massnahme - formElementExpectedValue: Änderung IT-System - formElementOperator: EQUALS - - reference: aenderung_verantwortlicher_fachbereich - title: Wer ist der verantwortliche Fachbereich und Ansprechpartner hinsichtlich der Änderung? - description: '' - options: - - value: '' - label: Fachbereich und Ansprechpartner - processingPurpose: BUSINESS_PROCESS - employeeDataCategory: NON_CRITICAL - type: TEXTAREA - visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: art_der_massnahme - formElementExpectedValue: Änderung IT-System - formElementOperator: EQUALS - - # Änderung IT-System: Art der Änderung + operator: AND + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: art_der_massnahme + formElementExpectedValue: Einstellung IT-System + formElementOperator: EQUALS - title: Art der Änderung subtitle: Welche Art von Änderung wird vorgenommen? formElements: @@ -1094,10 +1264,13 @@ formElementSections: employeeDataCategory: NON_CRITICAL type: RADIOBUTTON visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: art_der_massnahme - formElementExpectedValue: Änderung IT-System - formElementOperator: EQUALS + operator: AND + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: art_der_massnahme + formElementExpectedValue: Änderung IT-System + formElementOperator: EQUALS - reference: aenderung_modul_1 title: Neues Modul / Neue Komponente description: '' @@ -1113,10 +1286,13 @@ formElementSections: sectionSpawnConditionType: SHOW sectionSpawnOperator: IS_NOT_EMPTY visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: aenderung_modul_komponenten_erweiterung - formElementExpectedValue: Ja - formElementOperator: EQUALS + operator: AND + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: aenderung_modul_komponenten_erweiterung + formElementExpectedValue: Ja + formElementOperator: EQUALS - reference: aenderung_funktionserweiterung title: Handelt es sich um eine mitbestimmungspflichtige Funktionserweiterung? description: '' @@ -1131,10 +1307,13 @@ formElementSections: employeeDataCategory: NON_CRITICAL type: RADIOBUTTON visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: art_der_massnahme - formElementExpectedValue: Änderung IT-System - formElementOperator: EQUALS + operator: AND + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: art_der_massnahme + formElementExpectedValue: Änderung IT-System + formElementOperator: EQUALS - reference: aenderung_funktionserweiterung_art title: Handelt es sich um eine modulbezogene oder allgemeine Funktionserweiterung? description: '' @@ -1149,10 +1328,13 @@ formElementSections: employeeDataCategory: REVIEW_REQUIRED type: RADIOBUTTON visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: aenderung_funktionserweiterung - formElementExpectedValue: Ja - formElementOperator: EQUALS + operator: AND + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: aenderung_funktionserweiterung + formElementExpectedValue: Ja + formElementOperator: EQUALS - reference: aenderung_funktionserweiterung_modul_1 title: Betroffenes Modul description: '' @@ -1168,10 +1350,13 @@ formElementSections: sectionSpawnConditionType: SHOW sectionSpawnOperator: IS_NOT_EMPTY visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: aenderung_funktionserweiterung_art - formElementExpectedValue: Modulbezogene Funktionserweiterung - formElementOperator: EQUALS + operator: AND + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: aenderung_funktionserweiterung_art + formElementExpectedValue: Modulbezogene Funktionserweiterung + formElementOperator: EQUALS - reference: aenderung_funktionserweiterung_allgemein_beschreibung title: Beschreibung der allgemeinen Funktionserweiterung description: '' @@ -1182,10 +1367,13 @@ formElementSections: employeeDataCategory: REVIEW_REQUIRED type: TEXTAREA visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: aenderung_funktionserweiterung_art - formElementExpectedValue: Allgemeine Funktionserweiterung - formElementOperator: EQUALS + operator: AND + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: aenderung_funktionserweiterung_art + formElementExpectedValue: Allgemeine Funktionserweiterung + formElementOperator: EQUALS - reference: aenderung_rollen_berechtigungen title: Werden Änderungen am Rollen- oder Berechtigungskonzept vorgenommen? description: '' @@ -1210,10 +1398,13 @@ formElementSections: sectionSpawnExpectedValue: Ja sectionSpawnOperator: EQUALS visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: art_der_massnahme - formElementExpectedValue: Änderung IT-System - formElementOperator: EQUALS + operator: AND + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: art_der_massnahme + formElementExpectedValue: Änderung IT-System + formElementOperator: EQUALS - reference: aenderung_schnittstellen title: Werden Änderungen an Schnittstellen vorgenommen? description: '' @@ -1234,10 +1425,13 @@ formElementSections: sectionSpawnExpectedValue: Ja sectionSpawnOperator: EQUALS visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: art_der_massnahme - formElementExpectedValue: Änderung IT-System - formElementOperator: EQUALS + operator: AND + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: art_der_massnahme + formElementExpectedValue: Änderung IT-System + formElementOperator: EQUALS - reference: aenderung_aufbewahrungs_loeschfristen title: Werden Änderungen an Aufbewahrungs- oder Löschfristen vorgenommen? description: '' @@ -1258,10 +1452,13 @@ formElementSections: sectionSpawnExpectedValue: Ja sectionSpawnOperator: EQUALS visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: art_der_massnahme - formElementExpectedValue: Änderung IT-System - formElementOperator: EQUALS + operator: AND + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: art_der_massnahme + formElementExpectedValue: Änderung IT-System + formElementOperator: EQUALS - reference: aenderung_ki_einsatz title: Wird Künstliche Intelligenz neu eingesetzt oder erweitert? description: '' @@ -1282,10 +1479,13 @@ formElementSections: sectionSpawnExpectedValue: Ja sectionSpawnOperator: EQUALS visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: art_der_massnahme - formElementExpectedValue: Änderung IT-System - formElementOperator: EQUALS + operator: AND + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: art_der_massnahme + formElementExpectedValue: Änderung IT-System + formElementOperator: EQUALS - reference: aenderung_personenbezogene_daten title: Werden Änderungen an der Verarbeitung personenbezogener Daten vorgenommen? description: '' @@ -1306,10 +1506,13 @@ formElementSections: sectionSpawnExpectedValue: Ja sectionSpawnOperator: EQUALS visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: art_der_massnahme - formElementExpectedValue: Änderung IT-System - formElementOperator: EQUALS + operator: AND + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: art_der_massnahme + formElementExpectedValue: Änderung IT-System + formElementOperator: EQUALS - reference: aenderung_sonstige title: Handelt es sich um eine sonstige Änderung? description: '' @@ -1324,10 +1527,13 @@ formElementSections: employeeDataCategory: NON_CRITICAL type: RADIOBUTTON visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: art_der_massnahme - formElementExpectedValue: Änderung IT-System - formElementOperator: EQUALS + operator: AND + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: art_der_massnahme + formElementExpectedValue: Änderung IT-System + formElementOperator: EQUALS - reference: aenderung_sonstige_beschreibung title: Beschreibung der sonstigen Änderung description: '' @@ -1338,14 +1544,13 @@ formElementSections: employeeDataCategory: NON_CRITICAL type: TEXTAREA visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: aenderung_sonstige - formElementExpectedValue: Ja - formElementOperator: EQUALS - -# --- Template Sections (spawned dynamically) --- - -# Eingabeseite 7: Modulbeschreibung (spawned from modul_1, modul_2, etc.) + operator: AND + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: aenderung_sonstige + formElementExpectedValue: Ja + formElementOperator: EQUALS - title: Modulbeschreibung shortTitle: '{{triggerValue}}' description: Detaillierte Informationen zum Modul @@ -1353,10 +1558,8 @@ formElementSections: templateReference: module_details_template titleTemplate: 'Modul: {{triggerValue}}' formElementSubSections: - - title: Modulinformationen formElements: - # 1. Beschreibung des Moduls - reference: modul_beschreibung title: 1. Beschreiben Sie die Funktionalität des Moduls description: '' @@ -1366,8 +1569,6 @@ formElementSections: label: Beschreibung processingPurpose: SYSTEM_OPERATION employeeDataCategory: NON_CRITICAL - - # 2. Nutzergruppen (Rollen-IDs) - reference: modul_nutzergruppen_tabelle title: Welche Nutzergruppen (Rollen) verwenden dieses Modul? description: '' @@ -1384,8 +1585,6 @@ formElementSections: label: Beschreibung processingPurpose: SYSTEM_OPERATION employeeDataCategory: NON_CRITICAL - - # 3. Analytische Funktionen - reference: modul_analytische_funktionen_tabelle title: 3. Welche Funktionen mit analytischem Charakter hinsichtlich Arbeitnehmern sind vorhanden und werden genutzt? description: '' @@ -1405,8 +1604,6 @@ formElementSections: label: Kommentar processingPurpose: SYSTEM_OPERATION employeeDataCategory: NON_CRITICAL - - # 4. Ist das Modul konfigurierbar? - reference: modul_konfigurierbar title: 4. Kann das Modul konfiguriert werden, um die Verarbeitung von Arbeitnehmerdaten / Leistungs-/Verhaltenskontrolle auf das erforderliche zugelassene Maß zu begrenzen? description: '' @@ -1420,17 +1617,18 @@ formElementSections: label: Nein processingPurpose: SYSTEM_OPERATION employeeDataCategory: NON_CRITICAL - - # 4a. Konfigurationen (conditional on modul_konfigurierbar = Ja) - reference: modul_konfigurationen_tabelle title: Konfigurationen zur Begrenzung der Verarbeitung von Arbeitnehmerdaten / Leistungs-/Verhaltenskontrolle auf das erforderliche zugelassene Maß description: '' type: TABLE visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: modul_konfigurierbar - formElementExpectedValue: Ja - formElementOperator: EQUALS + operator: AND + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: modul_konfigurierbar + formElementExpectedValue: Ja + formElementOperator: EQUALS options: - value: '[]' label: Konfiguration @@ -1444,8 +1642,6 @@ formElementSections: label: Beschreibung processingPurpose: SYSTEM_OPERATION employeeDataCategory: REVIEW_REQUIRED - - # 6. Änderungs-/Updatedynamik - reference: modul_update_dynamik title: 6. Wie hoch ist die Änderungs-/Updatedynamik? description: '' @@ -1463,8 +1659,6 @@ formElementSections: label: häufig processingPurpose: SYSTEM_OPERATION employeeDataCategory: NON_CRITICAL - - # 7. Referenzen - reference: modul_referenzen_tabelle title: 7. Referenzen zu Verarbeitungsvorgängen und Schnittstellen description: '' @@ -1484,8 +1678,6 @@ formElementSections: columnConfig: sourceTableReference: schnittstellen_umfassend_tabelle sourceColumnIndex: 0 - -# Einführung: Komponente - title: Komponentendetails shortTitle: '{{triggerValue}}' description: Detaillierte Informationen zur Komponente @@ -1529,8 +1721,6 @@ formElementSections: label: Verhaltensdaten processingPurpose: DATA_ANALYSIS employeeDataCategory: SENSITIVE - -# KI-Einsatz (shared by Einführung and Änderung) - title: Details zum KI-Einsatz shortTitle: KI-Einsatz description: Informationen zum Einsatz künstlicher Intelligenz @@ -1596,8 +1786,6 @@ formElementSections: label: Ja processingPurpose: DATA_ANALYSIS employeeDataCategory: SENSITIVE - -# Änderung: Neues Modul/Komponente - title: Neues Modul / Neue Komponente shortTitle: '{{triggerValue}}' description: Detaillierte Informationen zum neuen Modul oder zur neuen Komponente @@ -1641,8 +1829,6 @@ formElementSections: label: Verhaltensdaten processingPurpose: DATA_ANALYSIS employeeDataCategory: SENSITIVE - -# Änderung: Modulbezogene Funktionserweiterung - title: Modulbezogene Funktionserweiterung shortTitle: '{{triggerValue}}' description: Detaillierte Informationen zur modulbezogenen Funktionserweiterung @@ -1686,8 +1872,6 @@ formElementSections: label: Verhaltensdaten processingPurpose: DATA_ANALYSIS employeeDataCategory: SENSITIVE - -# Eingabeseite 2: Rollen und Berechtigungen (comprehensive template) - title: Rollen und Berechtigungen shortTitle: Rollen/Berechtigungen description: Vollständiges Rollen- und Berechtigungskonzept für das IT-System @@ -1695,25 +1879,6 @@ formElementSections: templateReference: rollen_berechtigungen_template titleTemplate: Rollen und Berechtigungen formElementSubSections: - - # Question: Performance/Behavior monitoring - - title: Leistungs-/Verhaltensüberwachung - formElements: - - reference: luv_beabsichtigt - title: Soll durch das IT-System Leistung und/oder Verhalten von Arbeitnehmern überwacht werden? - description: '' - type: RADIOBUTTON - options: - - value: Ja - label: Ja - processingPurpose: DATA_ANALYSIS - employeeDataCategory: SENSITIVE - - value: Nein - label: Nein - processingPurpose: SYSTEM_OPERATION - employeeDataCategory: NON_CRITICAL - - # Simple roles table (shown when LuV = Nein) - title: Einfache Darstellung Rollen/Berechtigungen formElements: - reference: einfache_rollen_tabelle @@ -1721,10 +1886,13 @@ formElementSections: description: '' type: TABLE visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: luv_beabsichtigt - formElementExpectedValue: Nein - formElementOperator: EQUALS + operator: AND + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: sens_luv + formElementExpectedValue: Individuell/vergleichend + formElementOperator: NOT_CONTAINS options: - value: '[]' label: Rollen-ID @@ -1746,8 +1914,6 @@ formElementSections: label: Zugriffsberechtigungen processingPurpose: SYSTEM_OPERATION employeeDataCategory: REVIEW_REQUIRED - - # Detailed roles matrix (shown when LuV = Ja) - title: 1. Rollenstamm formElements: - reference: rollenstamm_tabelle @@ -1755,10 +1921,13 @@ formElementSections: description: '' type: TABLE visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: luv_beabsichtigt - formElementExpectedValue: Ja - formElementOperator: EQUALS + operator: AND + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: sens_luv + formElementExpectedValue: Individuell/vergleichend + formElementOperator: CONTAINS options: - value: '[]' label: Rollen-ID @@ -1772,7 +1941,6 @@ formElementSections: label: Beschreibung processingPurpose: SYSTEM_OPERATION employeeDataCategory: NON_CRITICAL - - title: 2. Permission-Katalog formElements: - reference: permission_katalog_tabelle @@ -1780,10 +1948,13 @@ formElementSections: description: '' type: TABLE visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: luv_beabsichtigt - formElementExpectedValue: Ja - formElementOperator: EQUALS + operator: AND + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: sens_luv + formElementExpectedValue: Individuell/vergleichend + formElementOperator: CONTAINS options: - value: '[]' label: Permission-ID @@ -1797,7 +1968,6 @@ formElementSections: label: Kurzbeschreibung processingPurpose: SYSTEM_OPERATION employeeDataCategory: NON_CRITICAL - - title: 3. Scope-Katalog formElements: - reference: scope_katalog_tabelle @@ -1805,10 +1975,13 @@ formElementSections: description: '' type: TABLE visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: luv_beabsichtigt - formElementExpectedValue: Ja - formElementOperator: EQUALS + operator: AND + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: sens_luv + formElementExpectedValue: Individuell/vergleichend + formElementOperator: CONTAINS options: - value: '[]' label: Scope-ID @@ -1822,7 +1995,6 @@ formElementSections: label: Bedeutung processingPurpose: SYSTEM_OPERATION employeeDataCategory: NON_CRITICAL - - title: 4. Schranken Rolle → erlaubte Permissions formElements: - reference: schranken_rolle_permissions_tabelle @@ -1830,10 +2002,13 @@ formElementSections: description: '' type: TABLE visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: luv_beabsichtigt - formElementExpectedValue: Ja - formElementOperator: EQUALS + operator: AND + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: sens_luv + formElementExpectedValue: Individuell/vergleichend + formElementOperator: CONTAINS options: - value: '[]' label: Rollen-ID @@ -1854,7 +2029,6 @@ formElementSections: label: Einschränkungen processingPurpose: SYSTEM_OPERATION employeeDataCategory: REVIEW_REQUIRED - - title: 5. Schranke Rolle → Erlaubte Scopes formElements: - reference: schranken_rolle_scopes_tabelle @@ -1862,10 +2036,13 @@ formElementSections: description: '' type: TABLE visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: luv_beabsichtigt - formElementExpectedValue: Ja - formElementOperator: EQUALS + operator: AND + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: sens_luv + formElementExpectedValue: Individuell/vergleichend + formElementOperator: CONTAINS options: - value: '[]' label: Rollen-ID @@ -1886,8 +2063,6 @@ formElementSections: label: Einschränkung / Kommentar processingPurpose: SYSTEM_OPERATION employeeDataCategory: REVIEW_REQUIRED - -# Eingabeseite 3: Verarbeitung Mitarbeiterdaten (comprehensive template) - title: Verarbeitung von Mitarbeiterdaten shortTitle: Mitarbeiterdaten description: Angaben zur Verarbeitung von personenbezogenen Arbeitnehmerdaten @@ -1895,28 +2070,6 @@ formElementSections: templateReference: verarbeitung_mitarbeiterdaten_template titleTemplate: Verarbeitung von Mitarbeiterdaten formElementSubSections: - - # Question: Personal data processing - - title: Grundlegende Fragen - formElements: - - reference: personenbezogene_daten_verarbeitet - title: Werden durch das IT-System personenbezogene Daten von Arbeitnehmern verarbeitet? - description: '' - type: RADIOBUTTON - options: - - value: Ja - label: Ja - processingPurpose: DATA_ANALYSIS - employeeDataCategory: SENSITIVE - - value: Nein - label: Nein - processingPurpose: SYSTEM_OPERATION - employeeDataCategory: NON_CRITICAL - - # ============================================================================ - # CASE 1: Leistungs-/Verhaltenskontrolle NICHT beabsichtigt (LuV = Nein) - # ============================================================================ - - title: Verarbeitete personenbezogene Daten (Einfache Darstellung) formElements: - reference: einfache_datenverarbeitung_tabelle @@ -1924,14 +2077,18 @@ formElementSections: description: '' type: TABLE visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: personenbezogene_daten_verarbeitet - formElementExpectedValue: Ja - formElementOperator: EQUALS - - formElementConditionType: SHOW - sourceFormElementReference: luv_beabsichtigt - formElementExpectedValue: Nein - formElementOperator: EQUALS + operator: OR + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: sens_sichtbarkeit + formElementExpectedValue: Für Administrator + formElementOperator: EQUALS + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: sens_auswertung + formElementExpectedValue: Keine + formElementOperator: EQUALS options: - value: '[]' label: Verarbeitungs-ID @@ -1969,11 +2126,6 @@ formElementSections: label: Leistungs-/Verhaltenskontrolle processingPurpose: DATA_ANALYSIS employeeDataCategory: SENSITIVE - - # ============================================================================ - # CASE 1: Rollen-Sichtbarkeit (Simple case - when luv_beabsichtigt = Nein) - # ============================================================================ - - title: Rollen-Sichtbarkeit (Einfache Darstellung) formElements: - reference: rollen_sichtbarkeit_einfach_tabelle @@ -1981,14 +2133,18 @@ formElementSections: description: '' type: TABLE visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: personenbezogene_daten_verarbeitet - formElementExpectedValue: Ja - formElementOperator: EQUALS - - formElementConditionType: SHOW - sourceFormElementReference: luv_beabsichtigt - formElementExpectedValue: Nein - formElementOperator: EQUALS + operator: OR + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: sens_sichtbarkeit + formElementExpectedValue: Für Administrator + formElementOperator: EQUALS + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: sens_auswertung + formElementExpectedValue: Keine + formElementOperator: EQUALS options: - value: '[]' label: Verarbeitungsvorgang-ID @@ -2020,11 +2176,6 @@ formElementSections: label: Hinweise processingPurpose: SYSTEM_OPERATION employeeDataCategory: NON_CRITICAL - - # ============================================================================ - # CASE 2: Leistungs-/Verhaltenskontrolle beabsichtigt (LuV = Ja) - # ============================================================================ - - title: Verarbeitete personenbezogene Daten (Umfassende Darstellung) formElements: - reference: umfassende_datenverarbeitung_tabelle @@ -2032,14 +2183,36 @@ formElementSections: description: '' type: TABLE visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: personenbezogene_daten_verarbeitet - formElementExpectedValue: Ja - formElementOperator: EQUALS - - formElementConditionType: SHOW - sourceFormElementReference: luv_beabsichtigt - formElementExpectedValue: Ja - formElementOperator: EQUALS + operator: AND + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: sens_sichtbarkeit + formElementExpectedValue: Für Administrator + formElementOperator: NOT_EQUALS + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: sens_auswertung + formElementExpectedValue: Funktionen vorhanden + formElementOperator: EQUALS + - nodeType: GROUP + groupOperator: OR + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: sens_luv + formElementExpectedValue: Aggregiert (Team) + formElementOperator: CONTAINS + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: sens_luv + formElementExpectedValue: Aggregiert (Abteilung) + formElementOperator: CONTAINS + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: sens_luv + formElementExpectedValue: Individuell/vergleichend + formElementOperator: CONTAINS options: - value: '[]' label: Verarbeitungsvorgang-ID @@ -2085,6 +2258,19 @@ formElementSections: sourceTableReference: rollenstamm_tabelle sourceColumnIndex: 0 isMultipleAllowed: true + visibilityConditions: + operator: AND + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: sens_sichtbarkeit + formElementExpectedValue: Nein + formElementOperator: NOT_EQUALS + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: sens_sichtbarkeit + formElementExpectedValue: Für Administrator + formElementOperator: NOT_EQUALS - value: '[]' label: Export/Weitergabe (Ja/Nein + Ziel) processingPurpose: DATA_ANALYSIS @@ -2095,11 +2281,6 @@ formElementSections: employeeDataCategory: SENSITIVE columnConfig: isCheckbox: true - - # ============================================================================ - # CASE 2: Additional tables for LuV = Ja - # ============================================================================ - - title: Angaben zur Leistungs-/Verhaltenskontrolle formElements: - reference: luv_details_tabelle @@ -2117,14 +2298,36 @@ formElementSections: targetColumnIndex: 0 canAddRows: false visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: personenbezogene_daten_verarbeitet - formElementExpectedValue: Ja - formElementOperator: EQUALS - - formElementConditionType: SHOW - sourceFormElementReference: luv_beabsichtigt - formElementExpectedValue: Ja - formElementOperator: EQUALS + operator: AND + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: sens_sichtbarkeit + formElementExpectedValue: Für Administrator + formElementOperator: NOT_EQUALS + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: sens_auswertung + formElementExpectedValue: Funktionen vorhanden + formElementOperator: EQUALS + - nodeType: GROUP + groupOperator: OR + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: sens_luv + formElementExpectedValue: Aggregiert (Team) + formElementOperator: CONTAINS + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: sens_luv + formElementExpectedValue: Aggregiert (Abteilung) + formElementOperator: CONTAINS + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: sens_luv + formElementExpectedValue: Individuell/vergleichend + formElementOperator: CONTAINS options: - value: '[]' label: Verarbeitungsvorgang-ID @@ -2154,10 +2357,31 @@ formElementSections: label: Drilldown bis Person möglich? processingPurpose: DATA_ANALYSIS employeeDataCategory: SENSITIVE + visibilityConditions: + operator: AND + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: sens_analytische_funktionen + formElementExpectedValue: Individualisiert + formElementOperator: EQUALS - value: '[]' label: Ranking/Scoring processingPurpose: DATA_ANALYSIS employeeDataCategory: SENSITIVE + visibilityConditions: + operator: OR + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: sens_auswertung + formElementExpectedValue: Rankings + formElementOperator: CONTAINS + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: sens_auswertung + formElementExpectedValue: Scores + formElementOperator: CONTAINS - value: '[]' label: Mindestgruppe/Schwelle processingPurpose: DATA_ANALYSIS @@ -2176,8 +2400,6 @@ formElementSections: employeeDataCategory: REVIEW_REQUIRED columnConfig: isCheckbox: true - - # Access rules table - references comprehensive rollenstamm_tabelle when LuV = Ja - title: Zugriffsregeln hinsichtlich der Verarbeitungsvorgänge formElements: - reference: zugriffsregeln_tabelle @@ -2185,14 +2407,36 @@ formElementSections: description: '' type: TABLE visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: personenbezogene_daten_verarbeitet - formElementExpectedValue: Ja - formElementOperator: EQUALS - - formElementConditionType: SHOW - sourceFormElementReference: luv_beabsichtigt - formElementExpectedValue: Ja - formElementOperator: EQUALS + operator: AND + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: sens_sichtbarkeit + formElementExpectedValue: Für Administrator + formElementOperator: NOT_EQUALS + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: sens_auswertung + formElementExpectedValue: Funktionen vorhanden + formElementOperator: EQUALS + - nodeType: GROUP + groupOperator: OR + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: sens_luv + formElementExpectedValue: Aggregiert (Team) + formElementOperator: CONTAINS + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: sens_luv + formElementExpectedValue: Aggregiert (Abteilung) + formElementOperator: CONTAINS + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: sens_luv + formElementExpectedValue: Individuell/vergleichend + formElementOperator: CONTAINS options: - value: '[]' label: Verarbeitungsvorgang-ID @@ -2226,8 +2470,6 @@ formElementSections: label: Bedingungen/Restriktionen processingPurpose: SYSTEM_OPERATION employeeDataCategory: REVIEW_REQUIRED - - # Permissions per processing operation table - title: Berechtigungen für die jeweiligen Verarbeitungsvorgänge formElements: - reference: berechtigungen_verarbeitung_tabelle @@ -2235,14 +2477,36 @@ formElementSections: description: '' type: TABLE visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: personenbezogene_daten_verarbeitet - formElementExpectedValue: Ja - formElementOperator: EQUALS - - formElementConditionType: SHOW - sourceFormElementReference: luv_beabsichtigt - formElementExpectedValue: Ja - formElementOperator: EQUALS + operator: AND + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: sens_sichtbarkeit + formElementExpectedValue: Für Administrator + formElementOperator: NOT_EQUALS + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: sens_auswertung + formElementExpectedValue: Funktionen vorhanden + formElementOperator: EQUALS + - nodeType: GROUP + groupOperator: OR + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: sens_luv + formElementExpectedValue: Aggregiert (Team) + formElementOperator: CONTAINS + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: sens_luv + formElementExpectedValue: Aggregiert (Abteilung) + formElementOperator: CONTAINS + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: sens_luv + formElementExpectedValue: Individuell/vergleichend + formElementOperator: CONTAINS options: - value: '[]' label: Verarbeitungsvorgang-ID @@ -2278,8 +2542,6 @@ formElementSections: label: Bedingungen processingPurpose: SYSTEM_OPERATION employeeDataCategory: REVIEW_REQUIRED - -# Eingabeseite 4: Löschkonzept (comprehensive template) - title: Löschkonzept shortTitle: Löschkonzept description: Angaben zum Löschkonzept für Verarbeitungsvorgänge, Datenkategorien und Arbeitnehmerdaten @@ -2287,8 +2549,6 @@ formElementSections: templateReference: loeschkonzept_template titleTemplate: Löschkonzept formElementSubSections: - - # Grundlegende Angaben zum Löschkonzept - title: Grundlegende Angaben zum Löschkonzept formElements: - reference: loeschkonzept_hinterlegen @@ -2296,10 +2556,13 @@ formElementSections: description: '' type: CHECKBOX visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: personenbezogene_daten_verarbeitet - formElementExpectedValue: Ja - formElementOperator: EQUALS + operator: AND + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: personenbezogene_daten_verarbeitet + formElementExpectedValue: Ja + formElementOperator: EQUALS options: - value: 'false' label: Löschkonzept für die Verarbeitungsvorgänge, Datenkategorien und Arbeitnehmerdaten hinterlegen @@ -2310,10 +2573,13 @@ formElementSections: description: '' type: CHECKBOX visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: personenbezogene_daten_verarbeitet - formElementExpectedValue: Ja - formElementOperator: EQUALS + operator: AND + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: personenbezogene_daten_verarbeitet + formElementExpectedValue: Ja + formElementOperator: EQUALS options: - value: 'false' label: Es kommt ein globales Löschkonzept hinsichtlich aller Verarbeitungsvorgänge, Datenkategorien und Arbeitnehmerdaten zum Einsatz @@ -2324,14 +2590,18 @@ formElementSections: description: '' type: TEXTFIELD visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: personenbezogene_daten_verarbeitet - formElementExpectedValue: Ja - formElementOperator: EQUALS - - formElementConditionType: SHOW - sourceFormElementReference: globales_loeschkonzept - formElementExpectedValue: 'true' - formElementOperator: EQUALS + operator: AND + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: personenbezogene_daten_verarbeitet + formElementExpectedValue: Ja + formElementOperator: EQUALS + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: globales_loeschkonzept + formElementExpectedValue: 'true' + formElementOperator: EQUALS options: - value: '' label: Dokumentreferenz @@ -2342,10 +2612,13 @@ formElementSections: description: '' type: CHECKBOX visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: personenbezogene_daten_verarbeitet - formElementExpectedValue: Ja - formElementOperator: EQUALS + operator: AND + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: personenbezogene_daten_verarbeitet + formElementExpectedValue: Ja + formElementOperator: EQUALS options: - value: 'false' label: Ein globales Löschkonzept kommt teilweise zum Einsatz @@ -2356,14 +2629,18 @@ formElementSections: description: '' type: TEXTFIELD visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: personenbezogene_daten_verarbeitet - formElementExpectedValue: Ja - formElementOperator: EQUALS - - formElementConditionType: SHOW - sourceFormElementReference: teilweises_globales_loeschkonzept - formElementExpectedValue: 'true' - formElementOperator: EQUALS + operator: AND + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: personenbezogene_daten_verarbeitet + formElementExpectedValue: Ja + formElementOperator: EQUALS + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: teilweises_globales_loeschkonzept + formElementExpectedValue: 'true' + formElementOperator: EQUALS options: - value: '' label: Dokumentreferenz @@ -2374,24 +2651,23 @@ formElementSections: description: '' type: RICH_TEXT visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: personenbezogene_daten_verarbeitet - formElementExpectedValue: Ja - formElementOperator: EQUALS - - formElementConditionType: SHOW - sourceFormElementReference: teilweises_globales_loeschkonzept - formElementExpectedValue: 'true' - formElementOperator: EQUALS + operator: AND + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: personenbezogene_daten_verarbeitet + formElementExpectedValue: Ja + formElementOperator: EQUALS + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: teilweises_globales_loeschkonzept + formElementExpectedValue: 'true' + formElementOperator: EQUALS options: - value: '' label: Abweichungen processingPurpose: DATA_ANALYSIS employeeDataCategory: SENSITIVE - - # ============================================================================ - # CASE 1: Leistungs-/Verhaltenskontrolle NICHT beabsichtigt (LuV = Nein) - # ============================================================================ - - title: Löschkonzept (Einfache Darstellung) formElements: - reference: loeschkonzept_einfach_tabelle @@ -2407,20 +2683,24 @@ formElementSections: targetColumnIndex: 1 canAddRows: false visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: personenbezogene_daten_verarbeitet - formElementExpectedValue: Ja - formElementOperator: EQUALS - - formElementConditionType: SHOW - sourceFormElementReference: luv_beabsichtigt - formElementExpectedValue: Nein - formElementOperator: EQUALS - - formElementConditionType: SHOW - sourceFormElementReference: loeschkonzept_hinterlegen - formElementExpectedValue: 'true' - formElementOperator: EQUALS + operator: AND + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: personenbezogene_daten_verarbeitet + formElementExpectedValue: Ja + formElementOperator: EQUALS + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: luv_beabsichtigt + formElementExpectedValue: Nein + formElementOperator: EQUALS + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: loeschkonzept_hinterlegen + formElementExpectedValue: 'true' + formElementOperator: EQUALS options: - # Column 0: Verarbeitungsvorgang-ID (cross-referenced, read-only) - value: '[]' label: Verarbeitungsvorgang-ID processingPurpose: SYSTEM_OPERATION @@ -2429,7 +2709,6 @@ formElementSections: sourceTableReference: einfache_datenverarbeitung_tabelle sourceColumnIndex: 0 isReadOnly: true - # Column 1: Datenkategorie (cross-referenced, read-only) - value: '[]' label: Datenkategorie processingPurpose: DATA_ANALYSIS @@ -2438,46 +2717,34 @@ formElementSections: sourceTableReference: einfache_datenverarbeitung_tabelle sourceColumnIndex: 4 isReadOnly: true - # Column 2: Speicherorte / Nebenpfade - value: '[]' label: Speicherorte / Nebenpfade processingPurpose: SYSTEM_OPERATION employeeDataCategory: REVIEW_REQUIRED - # Column 3: Aufbewahrungszweck - value: '[]' label: Aufbewahrungszweck processingPurpose: DATA_ANALYSIS employeeDataCategory: REVIEW_REQUIRED - # Column 4: Aufbewahrungsfrist - value: '[]' label: Aufbewahrungsfrist processingPurpose: DATA_ANALYSIS employeeDataCategory: SENSITIVE - # Column 5: Löschart - value: '[]' label: Löschart processingPurpose: DATA_ANALYSIS employeeDataCategory: SENSITIVE - # Column 6: Löschmethode - value: '[]' label: Löschmethode processingPurpose: DATA_ANALYSIS employeeDataCategory: SENSITIVE - # Column 7: Ausnahmen - value: '[]' label: Ausnahmen processingPurpose: DATA_ANALYSIS employeeDataCategory: REVIEW_REQUIRED - # Column 8: Nachweisform - value: '[]' label: Nachweisform processingPurpose: DATA_ANALYSIS employeeDataCategory: REVIEW_REQUIRED - - # ============================================================================ - # CASE 2: Leistungs-/Verhaltenskontrolle beabsichtigt (LuV = Ja) - # ============================================================================ - - title: Löschkonzept (Umfassende Darstellung) formElements: - reference: loeschkonzept_umfassend_tabelle @@ -2495,20 +2762,24 @@ formElementSections: targetColumnIndex: 2 canAddRows: false visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: personenbezogene_daten_verarbeitet - formElementExpectedValue: Ja - formElementOperator: EQUALS - - formElementConditionType: SHOW - sourceFormElementReference: luv_beabsichtigt - formElementExpectedValue: Ja - formElementOperator: EQUALS - - formElementConditionType: SHOW - sourceFormElementReference: loeschkonzept_hinterlegen - formElementExpectedValue: 'true' - formElementOperator: EQUALS + operator: AND + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: personenbezogene_daten_verarbeitet + formElementExpectedValue: Ja + formElementOperator: EQUALS + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: luv_beabsichtigt + formElementExpectedValue: Ja + formElementOperator: EQUALS + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: loeschkonzept_hinterlegen + formElementExpectedValue: 'true' + formElementOperator: EQUALS options: - # Column 0: Verarbeitungsvorgang-ID (cross-referenced, read-only) - value: '[]' label: Verarbeitungsvorgang-ID processingPurpose: SYSTEM_OPERATION @@ -2517,7 +2788,6 @@ formElementSections: sourceTableReference: umfassende_datenverarbeitung_tabelle sourceColumnIndex: 0 isReadOnly: true - # Column 1: Datenkategorie (cross-referenced, read-only) - value: '[]' label: Datenkategorie processingPurpose: DATA_ANALYSIS @@ -2526,7 +2796,6 @@ formElementSections: sourceTableReference: umfassende_datenverarbeitung_tabelle sourceColumnIndex: 4 isReadOnly: true - # Column 2: Arbeitnehmerdaten (cross-referenced, read-only) - value: '[]' label: Arbeitnehmerdaten processingPurpose: DATA_ANALYSIS @@ -2535,43 +2804,34 @@ formElementSections: sourceTableReference: umfassende_datenverarbeitung_tabelle sourceColumnIndex: 5 isReadOnly: true - # Column 3: Speicherorte / Nebenpfade - value: '[]' label: Speicherorte / Nebenpfade processingPurpose: SYSTEM_OPERATION employeeDataCategory: REVIEW_REQUIRED - # Column 4: Aufbewahrungszweck - value: '[]' label: Aufbewahrungszweck processingPurpose: DATA_ANALYSIS employeeDataCategory: REVIEW_REQUIRED - # Column 5: Aufbewahrungsfrist - value: '[]' label: Aufbewahrungsfrist processingPurpose: DATA_ANALYSIS employeeDataCategory: SENSITIVE - # Column 6: Löschart - value: '[]' label: Löschart processingPurpose: DATA_ANALYSIS employeeDataCategory: SENSITIVE - # Column 7: Löschmethode - value: '[]' label: Löschmethode processingPurpose: DATA_ANALYSIS employeeDataCategory: SENSITIVE - # Column 8: Ausnahmen - value: '[]' label: Ausnahmen processingPurpose: DATA_ANALYSIS employeeDataCategory: REVIEW_REQUIRED - # Column 9: Nachweisform - value: '[]' label: Nachweisform processingPurpose: DATA_ANALYSIS employeeDataCategory: REVIEW_REQUIRED - -# Eingabeseite 5: Schnittstellen (comprehensive template) - title: Schnittstellen shortTitle: Schnittstellen description: Angaben zu Schnittstellen zwischen IT-Systemen @@ -2579,11 +2839,6 @@ formElementSections: templateReference: schnittstellen_template titleTemplate: Schnittstellen formElementSubSections: - - # ============================================================================ - # CASE 1: Leistungs-/Verhaltenskontrolle NICHT beabsichtigt (LuV = Nein) - # ============================================================================ - - title: Schnittstellen (Einfache Darstellung) formElements: - reference: schnittstellen_einfach_tabelle @@ -2591,21 +2846,23 @@ formElementSections: description: '' type: TABLE visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: personenbezogene_daten_verarbeitet - formElementExpectedValue: Ja - formElementOperator: EQUALS - - formElementConditionType: SHOW - sourceFormElementReference: luv_beabsichtigt - formElementExpectedValue: Nein - formElementOperator: EQUALS + operator: OR + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: sens_sichtbarkeit + formElementExpectedValue: Für Administrator + formElementOperator: EQUALS + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: sens_auswertung + formElementExpectedValue: Keine + formElementOperator: EQUALS options: - # Column 0: Schnittstellen-ID - value: '[]' label: Schnittstellen-ID processingPurpose: SYSTEM_OPERATION employeeDataCategory: NON_CRITICAL - # Column 1: Verarbeitungsvorgang-ID (cross-reference to einfache_datenverarbeitung_tabelle) - value: '[]' label: Verarbeitungsvorgang-ID processingPurpose: SYSTEM_OPERATION @@ -2613,51 +2870,38 @@ formElementSections: columnConfig: sourceTableReference: einfache_datenverarbeitung_tabelle sourceColumnIndex: 0 - # Column 2: Datenumfang (only Datenkategorien) - value: '[]' label: Datenumfang (Datenkategorien) processingPurpose: DATA_ANALYSIS employeeDataCategory: REVIEW_REQUIRED - # Column 3: Quellsystem - value: '[]' label: Quellsystem processingPurpose: SYSTEM_OPERATION employeeDataCategory: NON_CRITICAL - # Column 4: Zielsystem - value: '[]' label: Zielsystem processingPurpose: SYSTEM_OPERATION employeeDataCategory: NON_CRITICAL - # Column 5: Richtung - value: '[]' label: Richtung processingPurpose: SYSTEM_OPERATION employeeDataCategory: NON_CRITICAL - # Column 6: Zweck der Schnittstelle - value: '[]' label: Zweck der Schnittstelle processingPurpose: SYSTEM_OPERATION employeeDataCategory: NON_CRITICAL - # Column 7: Empfänger Zielsystem - value: '[]' label: Empfänger Zielsystem processingPurpose: DATA_ANALYSIS employeeDataCategory: REVIEW_REQUIRED - # Column 8: Auswertung im Zielsystem - value: '[]' label: Auswertung im Zielsystem processingPurpose: DATA_ANALYSIS employeeDataCategory: REVIEW_REQUIRED - # Column 9: Bemerkungen - value: '[]' label: Bemerkungen processingPurpose: SYSTEM_OPERATION employeeDataCategory: NON_CRITICAL - - # ============================================================================ - # CASE 2: Leistungs-/Verhaltenskontrolle beabsichtigt (LuV = Ja) - # ============================================================================ - - title: Schnittstellen (Umfassende Darstellung) formElements: - reference: schnittstellen_umfassend_tabelle @@ -2665,21 +2909,41 @@ formElementSections: description: '' type: TABLE visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: personenbezogene_daten_verarbeitet - formElementExpectedValue: Ja - formElementOperator: EQUALS - - formElementConditionType: SHOW - sourceFormElementReference: luv_beabsichtigt - formElementExpectedValue: Ja - formElementOperator: EQUALS + operator: AND + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: sens_sichtbarkeit + formElementExpectedValue: Für Administrator + formElementOperator: NOT_EQUALS + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: sens_auswertung + formElementExpectedValue: Funktionen vorhanden + formElementOperator: EQUALS + - nodeType: GROUP + groupOperator: OR + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: sens_luv + formElementExpectedValue: Aggregiert (Team) + formElementOperator: CONTAINS + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: sens_luv + formElementExpectedValue: Aggregiert (Abteilung) + formElementOperator: CONTAINS + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: sens_luv + formElementExpectedValue: Individuell/vergleichend + formElementOperator: CONTAINS options: - # Column 0: Schnittstellen-ID - value: '[]' label: Schnittstellen-ID processingPurpose: SYSTEM_OPERATION employeeDataCategory: NON_CRITICAL - # Column 1: Verarbeitungsvorgang-ID (cross-reference to umfassende_datenverarbeitung_tabelle) - value: '[]' label: Verarbeitungsvorgang-ID processingPurpose: SYSTEM_OPERATION @@ -2687,48 +2951,38 @@ formElementSections: columnConfig: sourceTableReference: umfassende_datenverarbeitung_tabelle sourceColumnIndex: 0 - # Column 2: Datenumfang (Datenkategorien + personenbezogene Arbeitnehmerdaten) - value: '[]' label: Datenumfang (Datenkategorien und personenbezogene Arbeitnehmerdaten) processingPurpose: DATA_ANALYSIS employeeDataCategory: SENSITIVE - # Column 3: Quellsystem - value: '[]' label: Quellsystem processingPurpose: SYSTEM_OPERATION employeeDataCategory: NON_CRITICAL - # Column 4: Zielsystem - value: '[]' label: Zielsystem processingPurpose: SYSTEM_OPERATION employeeDataCategory: NON_CRITICAL - # Column 5: Richtung - value: '[]' label: Richtung processingPurpose: SYSTEM_OPERATION employeeDataCategory: NON_CRITICAL - # Column 6: Zweck der Schnittstelle - value: '[]' label: Zweck der Schnittstelle processingPurpose: SYSTEM_OPERATION employeeDataCategory: NON_CRITICAL - # Column 7: Empfänger Zielsystem - value: '[]' label: Empfänger Zielsystem processingPurpose: DATA_ANALYSIS employeeDataCategory: REVIEW_REQUIRED - # Column 8: Auswertung im Zielsystem - value: '[]' label: Auswertung im Zielsystem processingPurpose: DATA_ANALYSIS employeeDataCategory: REVIEW_REQUIRED - # Column 9: Bemerkungen - value: '[]' label: Bemerkungen processingPurpose: SYSTEM_OPERATION employeeDataCategory: NON_CRITICAL - -# Änderung: Schnittstellen - title: Änderung Schnittstellen shortTitle: Schnittstellen description: Informationen zu Änderungen an Schnittstellen @@ -2774,8 +3028,6 @@ formElementSections: label: Datenaustausch processingPurpose: DATA_ANALYSIS employeeDataCategory: SENSITIVE - -# Änderung: Aufbewahrungs-/Löschfristen - title: Änderung Aufbewahrungs-/Löschfristen shortTitle: Aufbewahrungs-/Löschfristen description: Informationen zu Änderungen an Aufbewahrungs- und Löschfristen @@ -2838,8 +3090,6 @@ formElementSections: label: Verhaltensdaten processingPurpose: DATA_ANALYSIS employeeDataCategory: SENSITIVE - -# Änderung: Personenbezogene Daten - title: Änderung Verarbeitung personenbezogener Daten shortTitle: Personenbezogene Daten description: Informationen zu Änderungen an der Verarbeitung personenbezogener Daten @@ -2894,8 +3144,6 @@ formElementSections: label: Rechtsgrundlage processingPurpose: DATA_ANALYSIS employeeDataCategory: SENSITIVE - -# Eingabeseite 6: Datenschutz (comprehensive template) - title: Datenschutz shortTitle: Datenschutz description: Datenschutzrechtliche Angaben zur Datenverarbeitung @@ -2903,8 +3151,6 @@ formElementSections: templateReference: datenschutz_template titleTemplate: Datenschutz formElementSubSections: - - # Datenschutz-Übersicht (nur Anzeige) - title: Datenschutz-Übersicht (nur Anzeige) formElements: - reference: datenschutz_uebersicht_tabelle @@ -2924,12 +3170,14 @@ formElementSections: targetColumnIndex: 3 canAddRows: false visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: personenbezogene_daten_verarbeitet - formElementExpectedValue: Ja - formElementOperator: EQUALS + operator: AND + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: personenbezogene_daten_verarbeitet + formElementExpectedValue: Ja + formElementOperator: EQUALS options: - # Column 0: VV-ID (from umfassende_datenverarbeitung_tabelle, read-only) - value: '[]' label: VV-ID processingPurpose: SYSTEM_OPERATION @@ -2938,7 +3186,6 @@ formElementSections: sourceTableReference: umfassende_datenverarbeitung_tabelle sourceColumnIndex: 0 isReadOnly: true - # Column 1: Bezeichnung (from umfassende_datenverarbeitung_tabelle, read-only) - value: '[]' label: Bezeichnung processingPurpose: SYSTEM_OPERATION @@ -2947,7 +3194,6 @@ formElementSections: sourceTableReference: umfassende_datenverarbeitung_tabelle sourceColumnIndex: 1 isReadOnly: true - # Column 2: Kontrolle? (from umfassende_datenverarbeitung_tabelle column 11, read-only) - value: '[]' label: Kontrolle? processingPurpose: DATA_ANALYSIS @@ -2956,7 +3202,6 @@ formElementSections: sourceTableReference: umfassende_datenverarbeitung_tabelle sourceColumnIndex: 11 isReadOnly: true - # Column 3: Datenumfang (from umfassende_datenverarbeitung_tabelle, read-only) - value: '[]' label: Datenumfang (S3) processingPurpose: DATA_ANALYSIS @@ -2965,23 +3210,18 @@ formElementSections: sourceTableReference: umfassende_datenverarbeitung_tabelle sourceColumnIndex: 4 isReadOnly: true - # Column 4: Schnittstellen Count (manual entry showing count from S5) - value: '[]' label: Schnittstellen (S5) processingPurpose: SYSTEM_OPERATION employeeDataCategory: NON_CRITICAL - # Column 5: Verbundene IT-Systeme (manual entry based on interfaces) - value: '[]' label: Verbundene IT-Systeme (Schnittstellen) processingPurpose: SYSTEM_OPERATION employeeDataCategory: NON_CRITICAL - # Column 6: Retention (manual entry - Ja/Nein from S4) - value: '[]' label: Retention (S4) processingPurpose: DATA_ANALYSIS employeeDataCategory: REVIEW_REQUIRED - - # 1. Auftragsdatenverarbeitung / Gemeinsame Verantwortlichkeit / Dritter - title: Auftragsdatenverarbeitung und Verantwortlichkeit formElements: - reference: datenschutz_verantwortlichkeit_art @@ -2989,10 +3229,13 @@ formElementSections: description: '' type: CHECKBOX visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: personenbezogene_daten_verarbeitet - formElementExpectedValue: Ja - formElementOperator: EQUALS + operator: AND + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: personenbezogene_daten_verarbeitet + formElementExpectedValue: Ja + formElementOperator: EQUALS options: - value: 'false' label: Auftragsdatenverarbeitung @@ -3010,8 +3253,6 @@ formElementSections: label: Nein processingPurpose: SYSTEM_OPERATION employeeDataCategory: NON_CRITICAL - - # 1a. Auftragsdatenverarbeitung Table - title: Auftragsdatenverarbeitung formElements: - reference: datenschutz_adv_tabelle @@ -3019,10 +3260,13 @@ formElementSections: description: '' type: TABLE visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: datenschutz_verantwortlichkeit_art - formElementExpectedValue: Auftragsdatenverarbeitung - formElementOperator: EQUALS + operator: AND + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: datenschutz_verantwortlichkeit_art + formElementExpectedValue: Auftragsdatenverarbeitung + formElementOperator: EQUALS options: - value: '[]' label: Auftragsdatenverarbeiter @@ -3070,8 +3314,6 @@ formElementSections: label: Bemerkung processingPurpose: SYSTEM_OPERATION employeeDataCategory: NON_CRITICAL - - # 1b. Gemeinsame Verantwortlichkeit Table - title: Gemeinsame Verantwortlichkeit formElements: - reference: datenschutz_gemeinsam_tabelle @@ -3079,10 +3321,13 @@ formElementSections: description: '' type: TABLE visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: datenschutz_verantwortlichkeit_art - formElementExpectedValue: Gemeinsame Verantwortlichkeit - formElementOperator: EQUALS + operator: AND + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: datenschutz_verantwortlichkeit_art + formElementExpectedValue: Gemeinsame Verantwortlichkeit + formElementOperator: EQUALS options: - value: '[]' label: Gemeinsame Verantwortlichkeit mit @@ -3126,8 +3371,6 @@ formElementSections: label: Bemerkung processingPurpose: SYSTEM_OPERATION employeeDataCategory: NON_CRITICAL - - # 1b-aa. Verpflichtungen bei gemeinsamer Verantwortlichkeit - title: Verpflichtungen gemäß DSGVO formElements: - reference: datenschutz_gemeinsam_verpflichtungen_tabelle @@ -3135,10 +3378,13 @@ formElementSections: description: '' type: TABLE visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: datenschutz_verantwortlichkeit_art - formElementExpectedValue: Gemeinsame Verantwortlichkeit - formElementOperator: EQUALS + operator: AND + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: datenschutz_verantwortlichkeit_art + formElementExpectedValue: Gemeinsame Verantwortlichkeit + formElementOperator: EQUALS options: - value: '[]' label: Pflichtbereich @@ -3170,8 +3416,6 @@ formElementSections: label: Kontakt processingPurpose: SYSTEM_OPERATION employeeDataCategory: NON_CRITICAL - - # 1c. Eigenständig Verantwortlicher Table - title: Eigenständig Verantwortlicher formElements: - reference: datenschutz_eigenstaendig_tabelle @@ -3179,10 +3423,13 @@ formElementSections: description: '' type: TABLE visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: datenschutz_verantwortlichkeit_art - formElementExpectedValue: Dritter als eigenständiger Verantwortlicher - formElementOperator: EQUALS + operator: AND + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: datenschutz_verantwortlichkeit_art + formElementExpectedValue: Dritter als eigenständiger Verantwortlicher + formElementOperator: EQUALS options: - value: '[]' label: Eigenständig Verantwortlicher @@ -3234,8 +3481,6 @@ formElementSections: label: Bemerkung processingPurpose: SYSTEM_OPERATION employeeDataCategory: NON_CRITICAL - - # 2. Datenschutz-Folgenabschätzung (DSFA) - title: Datenschutz-Folgenabschätzung formElements: - reference: datenschutz_dsfa_tabelle @@ -3249,10 +3494,13 @@ formElementSections: targetColumnIndex: 0 canAddRows: false visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: personenbezogene_daten_verarbeitet - formElementExpectedValue: Ja - formElementOperator: EQUALS + operator: AND + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: personenbezogene_daten_verarbeitet + formElementExpectedValue: Ja + formElementOperator: EQUALS options: - value: '[]' label: Verarbeitungsvorgang-ID @@ -3288,8 +3536,6 @@ formElementSections: label: Bemerkungen processingPurpose: SYSTEM_OPERATION employeeDataCategory: NON_CRITICAL - - # 3. Drittstaatenübermittlung - title: Drittstaatenübermittlung formElements: - reference: datenschutz_drittstaaten @@ -3297,10 +3543,13 @@ formElementSections: description: '' type: RADIOBUTTON visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: personenbezogene_daten_verarbeitet - formElementExpectedValue: Ja - formElementOperator: EQUALS + operator: AND + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: personenbezogene_daten_verarbeitet + formElementExpectedValue: Ja + formElementOperator: EQUALS options: - value: Ja label: Ja @@ -3310,7 +3559,6 @@ formElementSections: label: Nein processingPurpose: SYSTEM_OPERATION employeeDataCategory: NON_CRITICAL - - title: Angaben zur Drittlandübermittlung (Umfassende Darstellung) formElements: - reference: datenschutz_drittstaaten_tabelle @@ -3318,10 +3566,13 @@ formElementSections: description: '' type: TABLE visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: datenschutz_drittstaaten - formElementExpectedValue: Ja - formElementOperator: EQUALS + operator: AND + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: datenschutz_drittstaaten + formElementExpectedValue: Ja + formElementOperator: EQUALS options: - value: '[]' label: Verarbeitungsvorgang-ID @@ -3346,8 +3597,6 @@ formElementSections: label: Bemerkung processingPurpose: SYSTEM_OPERATION employeeDataCategory: NON_CRITICAL - - # 4. Technische und organisatorische Maßnahmen (TOMs) - title: Technische und organisatorische Maßnahmen formElements: - reference: datenschutz_toms_tabelle @@ -3355,10 +3604,13 @@ formElementSections: description: '' type: TABLE visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: personenbezogene_daten_verarbeitet - formElementExpectedValue: Ja - formElementOperator: EQUALS + operator: AND + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: personenbezogene_daten_verarbeitet + formElementExpectedValue: Ja + formElementOperator: EQUALS options: - value: '[]' label: TOM-Baustein @@ -3372,8 +3624,6 @@ formElementSections: label: Kurzbeschreibung / Referenz processingPurpose: SYSTEM_OPERATION employeeDataCategory: NON_CRITICAL - -# Eingabeseite 8: Auswirkungen auf Arbeitnehmer (comprehensive template) - title: Auswirkungen auf Arbeitnehmer shortTitle: Auswirkungen auf AN description: Auswirkungen des IT-Systems auf Arbeitnehmer, Arbeitsabläufe und Arbeitsbedingungen @@ -3381,8 +3631,6 @@ formElementSections: templateReference: auswirkungen_arbeitnehmer_template titleTemplate: Auswirkungen auf Arbeitnehmer formElementSubSections: - - # 1. Änderungen bei Arbeitsabläufen / Arbeitsprozessen - title: Änderungen bei Arbeitsabläufen / Arbeitsprozessen formElements: - reference: auswirkungen_arbeitsablaeufe @@ -3403,10 +3651,13 @@ formElementSections: description: '' type: TEXTAREA visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: auswirkungen_arbeitsablaeufe - formElementExpectedValue: Ja - formElementOperator: EQUALS + operator: AND + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: auswirkungen_arbeitsablaeufe + formElementExpectedValue: Ja + formElementOperator: EQUALS options: - value: '' label: Betroffene Bereiche @@ -3417,10 +3668,13 @@ formElementSections: description: '' type: TEXTAREA visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: auswirkungen_arbeitsablaeufe - formElementExpectedValue: Ja - formElementOperator: EQUALS + operator: AND + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: auswirkungen_arbeitsablaeufe + formElementExpectedValue: Ja + formElementOperator: EQUALS options: - value: '' label: Betroffene Arbeitsabläufe / Arbeitsprozesse @@ -3431,17 +3685,18 @@ formElementSections: description: '' type: TEXTAREA visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: auswirkungen_arbeitsablaeufe - formElementExpectedValue: Ja - formElementOperator: EQUALS + operator: AND + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: auswirkungen_arbeitsablaeufe + formElementExpectedValue: Ja + formElementOperator: EQUALS options: - value: '' label: Art der Änderungen processingPurpose: BUSINESS_PROCESS employeeDataCategory: REVIEW_REQUIRED - - # 2. Änderung der Arbeitsbedingungen - title: Änderung der Arbeitsbedingungen formElements: - reference: auswirkungen_arbeitsbedingungen @@ -3462,17 +3717,18 @@ formElementSections: description: '' type: TEXTAREA visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: auswirkungen_arbeitsbedingungen - formElementExpectedValue: Ja - formElementOperator: EQUALS + operator: AND + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: auswirkungen_arbeitsbedingungen + formElementExpectedValue: Ja + formElementOperator: EQUALS options: - value: '' label: Beschreibung der Änderungen processingPurpose: BUSINESS_PROCESS employeeDataCategory: REVIEW_REQUIRED - - # 3. Änderungen bei Zuständigkeiten oder Verantwortlichkeiten - title: Änderungen bei Zuständigkeiten oder Verantwortlichkeiten formElements: - reference: auswirkungen_zustaendigkeiten @@ -3493,17 +3749,18 @@ formElementSections: description: '' type: TEXTAREA visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: auswirkungen_zustaendigkeiten - formElementExpectedValue: Ja - formElementOperator: EQUALS + operator: AND + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: auswirkungen_zustaendigkeiten + formElementExpectedValue: Ja + formElementOperator: EQUALS options: - value: '' label: Beschreibung der Änderungen processingPurpose: BUSINESS_PROCESS employeeDataCategory: REVIEW_REQUIRED - - # 4. Entfallen von Arbeitsplätzen - title: Entfallen von Arbeitsplätzen formElements: - reference: auswirkungen_arbeitsplaetze_entfallen @@ -3524,17 +3781,18 @@ formElementSections: description: '' type: TEXTAREA visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: auswirkungen_arbeitsplaetze_entfallen - formElementExpectedValue: Ja - formElementOperator: EQUALS + operator: AND + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: auswirkungen_arbeitsplaetze_entfallen + formElementExpectedValue: Ja + formElementOperator: EQUALS options: - value: '' label: Beschreibung processingPurpose: BUSINESS_PROCESS employeeDataCategory: SENSITIVE - - # 5. Verringerung des Umfangs der Tätigkeiten - title: Verringerung des Umfangs der Tätigkeiten formElements: - reference: auswirkungen_taetigkeitsumfang @@ -3555,17 +3813,18 @@ formElementSections: description: '' type: TEXTAREA visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: auswirkungen_taetigkeitsumfang - formElementExpectedValue: Ja - formElementOperator: EQUALS + operator: AND + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: auswirkungen_taetigkeitsumfang + formElementExpectedValue: Ja + formElementOperator: EQUALS options: - value: '' label: Beschreibung processingPurpose: BUSINESS_PROCESS employeeDataCategory: REVIEW_REQUIRED - - # 6. Arbeitsverdichtung - title: Arbeitsverdichtung formElements: - reference: auswirkungen_arbeitsverdichtung @@ -3586,17 +3845,18 @@ formElementSections: description: '' type: TEXTAREA visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: auswirkungen_arbeitsverdichtung - formElementExpectedValue: Ja - formElementOperator: EQUALS + operator: AND + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: auswirkungen_arbeitsverdichtung + formElementExpectedValue: Ja + formElementOperator: EQUALS options: - value: '' label: Beschreibung processingPurpose: BUSINESS_PROCESS employeeDataCategory: REVIEW_REQUIRED - - # 7. Software-ergonomische Gesichtspunkte - title: Software-ergonomische Gesichtspunkte formElements: - reference: auswirkungen_software_ergonomie @@ -3617,17 +3877,18 @@ formElementSections: description: '' type: TEXTAREA visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: auswirkungen_software_ergonomie - formElementExpectedValue: Ja - formElementOperator: EQUALS + operator: AND + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: auswirkungen_software_ergonomie + formElementExpectedValue: Ja + formElementOperator: EQUALS options: - value: '' label: Ergebnis der Prüfung processingPurpose: BUSINESS_PROCESS employeeDataCategory: NON_CRITICAL - - # 8. Barrierefreiheit - title: Barrierefreiheit formElements: - reference: auswirkungen_barrierefreiheit @@ -3648,17 +3909,18 @@ formElementSections: description: '' type: TEXTAREA visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: auswirkungen_barrierefreiheit - formElementExpectedValue: Ja - formElementOperator: EQUALS + operator: AND + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: auswirkungen_barrierefreiheit + formElementExpectedValue: Ja + formElementOperator: EQUALS options: - value: '' label: Beschreibung der Maßnahmen processingPurpose: BUSINESS_PROCESS employeeDataCategory: NON_CRITICAL - - # 9. Gefährdungsbeurteilung - title: Gefährdungsbeurteilung formElements: - reference: auswirkungen_gefaehrdungsbeurteilung @@ -3679,17 +3941,18 @@ formElementSections: description: '' type: TEXTAREA visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: auswirkungen_gefaehrdungsbeurteilung - formElementExpectedValue: Ja - formElementOperator: EQUALS + operator: AND + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: auswirkungen_gefaehrdungsbeurteilung + formElementExpectedValue: Ja + formElementOperator: EQUALS options: - value: '' label: Ergebnisse der Gefährdungsbeurteilung processingPurpose: BUSINESS_PROCESS employeeDataCategory: REVIEW_REQUIRED - - # 10. Schulungs- bzw. Qualifizierungsmaßnahmen - title: Schulungs- bzw. Qualifizierungsmaßnahmen formElements: - reference: auswirkungen_schulungen @@ -3710,17 +3973,18 @@ formElementSections: description: '' type: RICH_TEXT visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: auswirkungen_schulungen - formElementExpectedValue: Ja - formElementOperator: EQUALS + operator: AND + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: auswirkungen_schulungen + formElementExpectedValue: Ja + formElementOperator: EQUALS options: - value: '' label: Beschreibung der Schulungsmaßnahmen processingPurpose: BUSINESS_PROCESS employeeDataCategory: REVIEW_REQUIRED - -# Eingabeseite 9: Informationen zur Künstlichen Intelligenz (comprehensive template) - title: Informationen zur Künstlichen Intelligenz shortTitle: KI-Informationen description: Detaillierte Angaben zum Einsatz von Künstlicher Intelligenz gemäß EU-KI-Verordnung @@ -3728,8 +3992,6 @@ formElementSections: templateReference: ki_informationen_template titleTemplate: Informationen zur Künstlichen Intelligenz formElementSubSections: - - # Risk class selection - title: Risikoklasse des KI-Systems formElements: - reference: ki_info_risikoklasse @@ -3749,8 +4011,6 @@ formElementSections: label: Risikoklasse 3 (Hochrisiko-KI-Systeme) processingPurpose: DATA_ANALYSIS employeeDataCategory: SENSITIVE - - # Section 1: General information (always shown) - title: Allgemeine Informationen zum KI-System subtitle: In jeder Risikoklasse auszufüllen formElements: @@ -3763,7 +4023,6 @@ formElementSections: label: Funktionsweise processingPurpose: DATA_ANALYSIS employeeDataCategory: NON_CRITICAL - - reference: ki_info_zweck title: Für welchen Zweck wird das KI-System eingesetzt? description: '' @@ -3773,7 +4032,6 @@ formElementSections: label: Einsatzzweck processingPurpose: DATA_ANALYSIS employeeDataCategory: REVIEW_REQUIRED - - reference: ki_info_einsatzfelder title: In welchen Bereichen soll das KI-System eingesetzt werden und welchen Einflussbereich hat es? description: '' @@ -3783,7 +4041,6 @@ formElementSections: label: Einsatzfelder und Einflussbereich processingPurpose: DATA_ANALYSIS employeeDataCategory: REVIEW_REQUIRED - - reference: ki_info_pilotprojekt title: Wird/wurde ein Pilotprojekt durchgeführt? description: '' @@ -3797,22 +4054,23 @@ formElementSections: label: Nein processingPurpose: SYSTEM_OPERATION employeeDataCategory: NON_CRITICAL - - reference: ki_info_pilotprojekt_erkenntnisse title: Erkenntnisse aus dem Pilotprojekt description: '' type: TEXTAREA visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: ki_info_pilotprojekt - formElementExpectedValue: Ja - formElementOperator: EQUALS + operator: AND + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: ki_info_pilotprojekt + formElementExpectedValue: Ja + formElementOperator: EQUALS options: - value: '' label: Erkenntnisse processingPurpose: SYSTEM_OPERATION employeeDataCategory: NON_CRITICAL - - reference: ki_info_sicherheitsmassnahmen title: Welche technischen Sicherheits- und Schutzmaßnahmen werden ergriffen? description: '' @@ -3822,7 +4080,6 @@ formElementSections: label: Sicherheitsmaßnahmen processingPurpose: SYSTEM_OPERATION employeeDataCategory: REVIEW_REQUIRED - - reference: ki_info_zweckaenderung title: Wie wird eine ungewollte Zweckänderung beim Einsatz des KI-Systems ausgeschlossen? description: '' @@ -3832,7 +4089,6 @@ formElementSections: label: Maßnahmen gegen Zweckänderung processingPurpose: SYSTEM_OPERATION employeeDataCategory: REVIEW_REQUIRED - - reference: ki_info_pflichten_zuordnung title: Wie erfolgt die Zuordnung der Pflichten aus der KI-Verordnung zu den internen Prozessen und Abläufen? Welche Rollen übernehmen welche Verantwortlichkeiten? description: '' @@ -3842,7 +4098,6 @@ formElementSections: label: Pflichten und Verantwortlichkeiten processingPurpose: SYSTEM_OPERATION employeeDataCategory: NON_CRITICAL - - reference: ki_info_audit_prozesse title: Welche Prozesse und Auditverfahren sind eingerichtet, um die Einhaltung aller Anforderungen der KI-Verordnung zu überwachen? description: '' @@ -3852,8 +4107,6 @@ formElementSections: label: Prozesse und Auditverfahren processingPurpose: SYSTEM_OPERATION employeeDataCategory: NON_CRITICAL - - # Section 2: Transparency (shown for risk class 2 and 3) - title: Transparenz der KI subtitle: Zusätzlich auszufüllen bei Risikoklasse 2 und 3 formElements: @@ -3862,13 +4115,17 @@ formElementSections: description: '' type: RADIOBUTTON visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: ki_info_risikoklasse - formElementOperator: IS_NOT_EMPTY - - formElementConditionType: SHOW - sourceFormElementReference: ki_info_risikoklasse - formElementExpectedValue: Risikoklasse 1 (kein oder geringes Risiko) - formElementOperator: NOT_EQUALS + operator: AND + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: ki_info_risikoklasse + formElementOperator: IS_NOT_EMPTY + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: ki_info_risikoklasse + formElementExpectedValue: Risikoklasse 1 (kein oder geringes Risiko) + formElementOperator: NOT_EQUALS options: - value: Ja label: Ja @@ -3878,34 +4135,39 @@ formElementSections: label: Nein processingPurpose: DATA_ANALYSIS employeeDataCategory: NON_CRITICAL - - reference: ki_info_trainingsdaten_zusammenfassung title: Zusammenfassung der Trainingsdaten-Dokumentation description: '' type: TEXTAREA visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: ki_info_trainingsdaten_doku - formElementExpectedValue: Ja - formElementOperator: EQUALS + operator: AND + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: ki_info_trainingsdaten_doku + formElementExpectedValue: Ja + formElementOperator: EQUALS options: - value: '' label: Zusammenfassung processingPurpose: DATA_ANALYSIS employeeDataCategory: REVIEW_REQUIRED - - reference: ki_info_arbeitnehmer_informiert title: Werden Arbeitnehmer darüber informiert, dass KI zum Einsatz kommt, sie ggf. mit einer KI interagieren und welche Auswirkungen es auf sie hat? description: '' type: RADIOBUTTON visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: ki_info_risikoklasse - formElementOperator: IS_NOT_EMPTY - - formElementConditionType: SHOW - sourceFormElementReference: ki_info_risikoklasse - formElementExpectedValue: Risikoklasse 1 (kein oder geringes Risiko) - formElementOperator: NOT_EQUALS + operator: AND + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: ki_info_risikoklasse + formElementOperator: IS_NOT_EMPTY + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: ki_info_risikoklasse + formElementExpectedValue: Risikoklasse 1 (kein oder geringes Risiko) + formElementOperator: NOT_EQUALS options: - value: Ja label: Ja @@ -3915,34 +4177,39 @@ formElementSections: label: Nein processingPurpose: DATA_ANALYSIS employeeDataCategory: SENSITIVE - - reference: ki_info_arbeitnehmer_information_beschreibung title: Wie werden Arbeitnehmer über den KI-Einsatz und die Auswirkungen informiert? (insbesondere im Hinblick auf Überwachung, Personalverwaltung und Entscheidungsfindung) description: '' type: TEXTAREA visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: ki_info_arbeitnehmer_informiert - formElementExpectedValue: Ja - formElementOperator: EQUALS + operator: AND + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: ki_info_arbeitnehmer_informiert + formElementExpectedValue: Ja + formElementOperator: EQUALS options: - value: '' label: Beschreibung processingPurpose: DATA_ANALYSIS employeeDataCategory: REVIEW_REQUIRED - - reference: ki_info_ergebnisse_gekennzeichnet title: Werden KI-Ergebnisse als künstlich erzeugt oder manipuliert gekennzeichnet (sofern aufgrund Einsatzzweck rechtlich notwendig)? description: '' type: RADIOBUTTON visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: ki_info_risikoklasse - formElementOperator: IS_NOT_EMPTY - - formElementConditionType: SHOW - sourceFormElementReference: ki_info_risikoklasse - formElementExpectedValue: Risikoklasse 1 (kein oder geringes Risiko) - formElementOperator: NOT_EQUALS + operator: AND + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: ki_info_risikoklasse + formElementOperator: IS_NOT_EMPTY + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: ki_info_risikoklasse + formElementExpectedValue: Risikoklasse 1 (kein oder geringes Risiko) + formElementOperator: NOT_EQUALS options: - value: Ja label: Ja @@ -3952,34 +4219,39 @@ formElementSections: label: Nein processingPurpose: DATA_ANALYSIS employeeDataCategory: NON_CRITICAL - - reference: ki_info_kennzeichnung_beschreibung title: Wie erfolgt die Kennzeichnung von KI-generierten Ergebnissen? description: '' type: TEXTAREA visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: ki_info_ergebnisse_gekennzeichnet - formElementExpectedValue: Ja - formElementOperator: EQUALS + operator: AND + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: ki_info_ergebnisse_gekennzeichnet + formElementExpectedValue: Ja + formElementOperator: EQUALS options: - value: '' label: Beschreibung processingPurpose: DATA_ANALYSIS employeeDataCategory: REVIEW_REQUIRED - - reference: ki_info_deepfakes title: Kommen Deepfakes zum Einsatz und werden diese als solche gekennzeichnet? description: '' type: RADIOBUTTON visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: ki_info_risikoklasse - formElementOperator: IS_NOT_EMPTY - - formElementConditionType: SHOW - sourceFormElementReference: ki_info_risikoklasse - formElementExpectedValue: Risikoklasse 1 (kein oder geringes Risiko) - formElementOperator: NOT_EQUALS + operator: AND + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: ki_info_risikoklasse + formElementOperator: IS_NOT_EMPTY + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: ki_info_risikoklasse + formElementExpectedValue: Risikoklasse 1 (kein oder geringes Risiko) + formElementOperator: NOT_EQUALS options: - value: Nein label: Nein @@ -3989,34 +4261,39 @@ formElementSections: label: Ja processingPurpose: DATA_ANALYSIS employeeDataCategory: SENSITIVE - - reference: ki_info_deepfakes_kennzeichnung title: Wie erfolgt die Kennzeichnung von Deepfakes? description: '' type: TEXTAREA visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: ki_info_deepfakes - formElementExpectedValue: Ja - formElementOperator: EQUALS + operator: AND + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: ki_info_deepfakes + formElementExpectedValue: Ja + formElementOperator: EQUALS options: - value: '' label: Kennzeichnung processingPurpose: DATA_ANALYSIS employeeDataCategory: SENSITIVE - - reference: ki_info_nutzereingaben_training title: Werden Nutzereingaben zum Training des KI-Modells verwendet? description: '' type: RADIOBUTTON visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: ki_info_risikoklasse - formElementOperator: IS_NOT_EMPTY - - formElementConditionType: SHOW - sourceFormElementReference: ki_info_risikoklasse - formElementExpectedValue: Risikoklasse 1 (kein oder geringes Risiko) - formElementOperator: NOT_EQUALS + operator: AND + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: ki_info_risikoklasse + formElementOperator: IS_NOT_EMPTY + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: ki_info_risikoklasse + formElementExpectedValue: Risikoklasse 1 (kein oder geringes Risiko) + formElementOperator: NOT_EQUALS options: - value: Nein label: Nein @@ -4026,34 +4303,39 @@ formElementSections: label: Ja processingPurpose: DATA_ANALYSIS employeeDataCategory: SENSITIVE - - reference: ki_info_nutzereingaben_grund title: Begründen Sie die Verwendung von Nutzereingaben für das Training und erläutern Sie die Datenschutzmaßnahmen description: '' type: TEXTAREA visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: ki_info_nutzereingaben_training - formElementExpectedValue: Ja - formElementOperator: EQUALS + operator: AND + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: ki_info_nutzereingaben_training + formElementExpectedValue: Ja + formElementOperator: EQUALS options: - value: '' label: Grund und Datenschutz processingPurpose: DATA_ANALYSIS employeeDataCategory: SENSITIVE - - reference: ki_info_daten_weiterverwendung title: Werden Ein- und/oder Ausgabedaten vom Anbieter des KI-Systems über das Training hinaus in irgendeiner Form weiterverwendet? description: '' type: RADIOBUTTON visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: ki_info_risikoklasse - formElementOperator: IS_NOT_EMPTY - - formElementConditionType: SHOW - sourceFormElementReference: ki_info_risikoklasse - formElementExpectedValue: Risikoklasse 1 (kein oder geringes Risiko) - formElementOperator: NOT_EQUALS + operator: AND + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: ki_info_risikoklasse + formElementOperator: IS_NOT_EMPTY + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: ki_info_risikoklasse + formElementExpectedValue: Risikoklasse 1 (kein oder geringes Risiko) + formElementOperator: NOT_EQUALS options: - value: Nein label: Nein @@ -4063,34 +4345,39 @@ formElementSections: label: Ja processingPurpose: DATA_ANALYSIS employeeDataCategory: SENSITIVE - - reference: ki_info_weiterverwendung_grund title: Begründen Sie die Weiterverwendung und erläutern Sie die Datenschutzmaßnahmen description: '' type: TEXTAREA visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: ki_info_daten_weiterverwendung - formElementExpectedValue: Ja - formElementOperator: EQUALS + operator: AND + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: ki_info_daten_weiterverwendung + formElementExpectedValue: Ja + formElementOperator: EQUALS options: - value: '' label: Grund und Datenschutz processingPurpose: DATA_ANALYSIS employeeDataCategory: SENSITIVE - - reference: ki_info_eingabehistorie title: Wird die Eingabehistorie gespeichert? description: '' type: RADIOBUTTON visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: ki_info_risikoklasse - formElementOperator: IS_NOT_EMPTY - - formElementConditionType: SHOW - sourceFormElementReference: ki_info_risikoklasse - formElementExpectedValue: Risikoklasse 1 (kein oder geringes Risiko) - formElementOperator: NOT_EQUALS + operator: AND + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: ki_info_risikoklasse + formElementOperator: IS_NOT_EMPTY + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: ki_info_risikoklasse + formElementExpectedValue: Risikoklasse 1 (kein oder geringes Risiko) + formElementOperator: NOT_EQUALS options: - value: Nein label: Nein @@ -4100,34 +4387,39 @@ formElementSections: label: Ja processingPurpose: DATA_ANALYSIS employeeDataCategory: REVIEW_REQUIRED - - reference: ki_info_eingabehistorie_zweck title: Zu welchem Zweck wird die Eingabehistorie gespeichert? description: '' type: TEXTAREA visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: ki_info_eingabehistorie - formElementExpectedValue: Ja - formElementOperator: EQUALS + operator: AND + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: ki_info_eingabehistorie + formElementExpectedValue: Ja + formElementOperator: EQUALS options: - value: '' label: Zweck processingPurpose: DATA_ANALYSIS employeeDataCategory: REVIEW_REQUIRED - - reference: ki_info_nachvollziehbarkeit title: Sind Entscheidungen/Empfehlungen nachvollziehbar und überprüfbar? description: '' type: RADIOBUTTON visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: ki_info_risikoklasse - formElementOperator: IS_NOT_EMPTY - - formElementConditionType: SHOW - sourceFormElementReference: ki_info_risikoklasse - formElementExpectedValue: Risikoklasse 1 (kein oder geringes Risiko) - formElementOperator: NOT_EQUALS + operator: AND + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: ki_info_risikoklasse + formElementOperator: IS_NOT_EMPTY + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: ki_info_risikoklasse + formElementExpectedValue: Risikoklasse 1 (kein oder geringes Risiko) + formElementOperator: NOT_EQUALS options: - value: Ja label: Ja @@ -4137,59 +4429,65 @@ formElementSections: label: Nein processingPurpose: DATA_ANALYSIS employeeDataCategory: SENSITIVE - - reference: ki_info_nachvollziehbarkeit_beschreibung title: Wie ist die Nachvollziehbarkeit und Überprüfbarkeit gewährleistet? description: '' type: TEXTAREA visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: ki_info_nachvollziehbarkeit - formElementExpectedValue: Ja - formElementOperator: EQUALS + operator: AND + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: ki_info_nachvollziehbarkeit + formElementExpectedValue: Ja + formElementOperator: EQUALS options: - value: '' label: Beschreibung processingPurpose: DATA_ANALYSIS employeeDataCategory: REVIEW_REQUIRED - - reference: ki_info_richtigkeit title: In welchem Maß kann auf die Richtigkeit der Ergebnisse vertraut werden? description: '' type: TEXTAREA visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: ki_info_risikoklasse - formElementOperator: IS_NOT_EMPTY - - formElementConditionType: SHOW - sourceFormElementReference: ki_info_risikoklasse - formElementExpectedValue: Risikoklasse 1 (kein oder geringes Risiko) - formElementOperator: NOT_EQUALS + operator: AND + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: ki_info_risikoklasse + formElementOperator: IS_NOT_EMPTY + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: ki_info_risikoklasse + formElementExpectedValue: Risikoklasse 1 (kein oder geringes Risiko) + formElementOperator: NOT_EQUALS options: - value: '' label: Vertrauen in Richtigkeit processingPurpose: DATA_ANALYSIS employeeDataCategory: REVIEW_REQUIRED - - reference: ki_info_qualitaetssicherung title: Welche Maßnahmen werden ergriffen, um Diskriminierungen, Halluzinationen, Fehler und Verzerrungen auszuschließen? Wie erfolgt die Prüfung der Ergebnisse? description: '' type: TEXTAREA visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: ki_info_risikoklasse - formElementOperator: IS_NOT_EMPTY - - formElementConditionType: SHOW - sourceFormElementReference: ki_info_risikoklasse - formElementExpectedValue: Risikoklasse 1 (kein oder geringes Risiko) - formElementOperator: NOT_EQUALS + operator: AND + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: ki_info_risikoklasse + formElementOperator: IS_NOT_EMPTY + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: ki_info_risikoklasse + formElementExpectedValue: Risikoklasse 1 (kein oder geringes Risiko) + formElementOperator: NOT_EQUALS options: - value: '' label: Qualitätssicherungsmaßnahmen processingPurpose: DATA_ANALYSIS employeeDataCategory: SENSITIVE - - # Section 3: High-risk AI systems (shown only for risk class 3) - title: Hochrisiko-KI-Systeme subtitle: Zusätzlich auszufüllen ab Risikoklasse 3 formElements: @@ -4198,13 +4496,17 @@ formElementSections: description: '' type: RADIOBUTTON visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: ki_info_risikoklasse - formElementOperator: IS_NOT_EMPTY - - formElementConditionType: SHOW - sourceFormElementReference: ki_info_risikoklasse - formElementExpectedValue: Risikoklasse 3 (Hochrisiko-KI-Systeme) - formElementOperator: EQUALS + operator: AND + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: ki_info_risikoklasse + formElementOperator: IS_NOT_EMPTY + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: ki_info_risikoklasse + formElementExpectedValue: Risikoklasse 3 (Hochrisiko-KI-Systeme) + formElementOperator: EQUALS options: - value: Ja label: Ja (bitte beilegen) @@ -4214,19 +4516,22 @@ formElementSections: label: Nein processingPurpose: DATA_ANALYSIS employeeDataCategory: SENSITIVE - - reference: ki_info_qualitaetsmanagement title: Liegt eine Dokumentation über das angewandte Qualitätsmanagement vor? (Art. 17 KI-VO) description: '' type: RADIOBUTTON visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: ki_info_risikoklasse - formElementOperator: IS_NOT_EMPTY - - formElementConditionType: SHOW - sourceFormElementReference: ki_info_risikoklasse - formElementExpectedValue: Risikoklasse 3 (Hochrisiko-KI-Systeme) - formElementOperator: EQUALS + operator: AND + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: ki_info_risikoklasse + formElementOperator: IS_NOT_EMPTY + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: ki_info_risikoklasse + formElementExpectedValue: Risikoklasse 3 (Hochrisiko-KI-Systeme) + formElementOperator: EQUALS options: - value: Ja label: Ja (bitte beilegen) @@ -4236,19 +4541,22 @@ formElementSections: label: Nein processingPurpose: DATA_ANALYSIS employeeDataCategory: SENSITIVE - - reference: ki_info_betriebsanleitung title: Liegt eine Betriebsanleitung für das Hochrisiko-KI-System vor? description: '' type: RADIOBUTTON visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: ki_info_risikoklasse - formElementOperator: IS_NOT_EMPTY - - formElementConditionType: SHOW - sourceFormElementReference: ki_info_risikoklasse - formElementExpectedValue: Risikoklasse 3 (Hochrisiko-KI-Systeme) - formElementOperator: EQUALS + operator: AND + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: ki_info_risikoklasse + formElementOperator: IS_NOT_EMPTY + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: ki_info_risikoklasse + formElementExpectedValue: Risikoklasse 3 (Hochrisiko-KI-Systeme) + formElementOperator: EQUALS options: - value: Ja label: Ja (bitte beilegen) @@ -4258,19 +4566,22 @@ formElementSections: label: Nein processingPurpose: DATA_ANALYSIS employeeDataCategory: SENSITIVE - - reference: ki_info_konformitaet title: Liegt eine EU-Konformitätserklärung und/oder CE-Kennzeichnung vor? description: '' type: CHECKBOX visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: ki_info_risikoklasse - formElementOperator: IS_NOT_EMPTY - - formElementConditionType: SHOW - sourceFormElementReference: ki_info_risikoklasse - formElementExpectedValue: Risikoklasse 3 (Hochrisiko-KI-Systeme) - formElementOperator: EQUALS + operator: AND + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: ki_info_risikoklasse + formElementOperator: IS_NOT_EMPTY + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: ki_info_risikoklasse + formElementExpectedValue: Risikoklasse 3 (Hochrisiko-KI-Systeme) + formElementOperator: EQUALS options: - value: 'false' label: EU-Konformitätserklärung liegt vor (bitte beilegen) @@ -4284,37 +4595,43 @@ formElementSections: label: Nein (erläutern - warum nicht?) processingPurpose: DATA_ANALYSIS employeeDataCategory: SENSITIVE - - reference: ki_info_konformitaet_erlaeuterung title: Warum liegt keine EU-Konformitätserklärung oder CE-Kennzeichnung vor? description: '' type: TEXTAREA visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: ki_info_risikoklasse - formElementOperator: IS_NOT_EMPTY - - formElementConditionType: SHOW - sourceFormElementReference: ki_info_risikoklasse - formElementExpectedValue: Risikoklasse 3 (Hochrisiko-KI-Systeme) - formElementOperator: EQUALS + operator: AND + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: ki_info_risikoklasse + formElementOperator: IS_NOT_EMPTY + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: ki_info_risikoklasse + formElementExpectedValue: Risikoklasse 3 (Hochrisiko-KI-Systeme) + formElementOperator: EQUALS options: - value: '' label: Erläuterung processingPurpose: DATA_ANALYSIS employeeDataCategory: SENSITIVE - - reference: ki_info_menschliche_aufsicht title: Ist eine menschliche Aufsicht möglich? description: '' type: RADIOBUTTON visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: ki_info_risikoklasse - formElementOperator: IS_NOT_EMPTY - - formElementConditionType: SHOW - sourceFormElementReference: ki_info_risikoklasse - formElementExpectedValue: Risikoklasse 3 (Hochrisiko-KI-Systeme) - formElementOperator: EQUALS + operator: AND + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: ki_info_risikoklasse + formElementOperator: IS_NOT_EMPTY + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: ki_info_risikoklasse + formElementExpectedValue: Risikoklasse 3 (Hochrisiko-KI-Systeme) + formElementOperator: EQUALS options: - value: Ja label: Ja @@ -4324,85 +4641,98 @@ formElementSections: label: Nein processingPurpose: DATA_ANALYSIS employeeDataCategory: SENSITIVE - - reference: ki_info_menschliche_aufsicht_beschreibung title: Wie, durch welche Position und in welchem Umfang ist die menschliche Aufsicht und Kontrolle bei der Anwendung des KI-Systems geplant? description: '' type: TEXTAREA visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: ki_info_menschliche_aufsicht - formElementExpectedValue: Ja - formElementOperator: EQUALS + operator: AND + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: ki_info_menschliche_aufsicht + formElementExpectedValue: Ja + formElementOperator: EQUALS options: - value: '' label: Beschreibung processingPurpose: DATA_ANALYSIS employeeDataCategory: SENSITIVE - - reference: ki_info_menschliche_aufsicht_grund title: Warum ist keine menschliche Aufsicht möglich? description: '' type: TEXTAREA visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: ki_info_menschliche_aufsicht - formElementExpectedValue: Nein - formElementOperator: EQUALS + operator: AND + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: ki_info_menschliche_aufsicht + formElementExpectedValue: Nein + formElementOperator: EQUALS options: - value: '' label: Grund processingPurpose: DATA_ANALYSIS employeeDataCategory: SENSITIVE - - reference: ki_info_monitoring title: Wie wird ein fortlaufendes Monitoring des rechtskonformen Einsatzes des KI-Systems und der Auswirkungen auf Beschäftigte sichergestellt? description: '' type: TEXTAREA visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: ki_info_risikoklasse - formElementOperator: IS_NOT_EMPTY - - formElementConditionType: SHOW - sourceFormElementReference: ki_info_risikoklasse - formElementExpectedValue: Risikoklasse 3 (Hochrisiko-KI-Systeme) - formElementOperator: EQUALS + operator: AND + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: ki_info_risikoklasse + formElementOperator: IS_NOT_EMPTY + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: ki_info_risikoklasse + formElementExpectedValue: Risikoklasse 3 (Hochrisiko-KI-Systeme) + formElementOperator: EQUALS options: - value: '' label: Monitoring-Konzept processingPurpose: DATA_ANALYSIS employeeDataCategory: SENSITIVE - - reference: ki_info_korrekturmechanismen title: Welche Mechanismen zur Korrektur von KI-Entscheidungen bzw. -Empfehlungen durch einen Menschen sind vorgesehen? description: '' type: TEXTAREA visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: ki_info_risikoklasse - formElementOperator: IS_NOT_EMPTY - - formElementConditionType: SHOW - sourceFormElementReference: ki_info_risikoklasse - formElementExpectedValue: Risikoklasse 3 (Hochrisiko-KI-Systeme) - formElementOperator: EQUALS + operator: AND + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: ki_info_risikoklasse + formElementOperator: IS_NOT_EMPTY + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: ki_info_risikoklasse + formElementExpectedValue: Risikoklasse 3 (Hochrisiko-KI-Systeme) + formElementOperator: EQUALS options: - value: '' label: Korrekturmechanismen processingPurpose: DATA_ANALYSIS employeeDataCategory: SENSITIVE - - reference: ki_info_grundrechte_folgenabschaetzung title: Wurde eine Grundrechte-Folgenabschätzung durchgeführt? description: '' type: RADIOBUTTON visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: ki_info_risikoklasse - formElementOperator: IS_NOT_EMPTY - - formElementConditionType: SHOW - sourceFormElementReference: ki_info_risikoklasse - formElementExpectedValue: Risikoklasse 3 (Hochrisiko-KI-Systeme) - formElementOperator: EQUALS + operator: AND + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: ki_info_risikoklasse + formElementOperator: IS_NOT_EMPTY + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: ki_info_risikoklasse + formElementExpectedValue: Risikoklasse 3 (Hochrisiko-KI-Systeme) + formElementOperator: EQUALS options: - value: Ja label: Ja (bitte beilegen) @@ -4412,14 +4742,16 @@ formElementSections: label: Nein processingPurpose: DATA_ANALYSIS employeeDataCategory: SENSITIVE - - reference: ki_dokumentation title: Dokumentation zur Grundrechte-Folgenabschätzung description: '' type: FILE_UPLOAD visibilityConditions: - - formElementConditionType: SHOW - sourceFormElementReference: ki_info_grundrechte_folgenabschaetzung - formElementExpectedValue: Ja (bitte beilegen) - formElementOperator: EQUALS + operator: AND + conditions: + - nodeType: LEAF + formElementConditionType: SHOW + sourceFormElementReference: ki_info_grundrechte_folgenabschaetzung + formElementExpectedValue: Ja (bitte beilegen) + formElementOperator: EQUALS options: [] diff --git a/legalconsenthub/app/components/formelements/TheTable.vue b/legalconsenthub/app/components/formelements/TheTable.vue index ab33625..8272fc6 100644 --- a/legalconsenthub/app/components/formelements/TheTable.vue +++ b/legalconsenthub/app/components/formelements/TheTable.vue @@ -78,6 +78,7 @@ import type { FormElementDto, FormOptionDto, TableRowPresetDto } from '~~/.api-client' import type { TableColumn } from '@nuxt/ui' import { useTableCrossReferences } from '~/composables/useTableCrossReferences' +import { useFormElementVisibility } from '~/composables/useFormElementVisibility' const props = defineProps<{ formOptions: FormOptionDto[] @@ -86,6 +87,8 @@ const props = defineProps<{ tableRowPreset?: TableRowPresetDto }>() +const { isFormOptionVisible } = useFormElementVisibility() + const emit = defineEmits<{ (e: 'update:formOptions', value: FormOptionDto[]): void }>() @@ -131,16 +134,33 @@ interface DataColumn { colIndex: number } +// Filter columns based on visibility conditions +interface VisibleColumn { + option: FormOptionDto + originalIndex: number +} + +const visibleColumns = computed(() => { + return props.formOptions + .map((option, index) => ({ option, originalIndex: index })) + .filter(({ option }) => { + if (!option.visibilityConditions || !props.allFormElements) { + return true + } + return isFormOptionVisible(option.visibilityConditions, props.allFormElements) + }) +}) + const dataColumns = computed(() => - props.formOptions.map((_, index) => ({ - key: `col_${index}`, - colIndex: index + visibleColumns.value.map(({ originalIndex }) => ({ + key: `col_${originalIndex}`, + colIndex: originalIndex })) ) const tableColumns = computed[]>(() => { - const columns: TableColumn[] = props.formOptions.map((option, index) => ({ - accessorKey: `col_${index}`, + const columns: TableColumn[] = visibleColumns.value.map(({ option, originalIndex }) => ({ + accessorKey: `col_${originalIndex}`, header: option.label || '' })) diff --git a/legalconsenthub/app/composables/useFormElementVisibility.ts b/legalconsenthub/app/composables/useFormElementVisibility.ts index 46a3cfc..3235eed 100644 --- a/legalconsenthub/app/composables/useFormElementVisibility.ts +++ b/legalconsenthub/app/composables/useFormElementVisibility.ts @@ -1,15 +1,14 @@ -import type { FormElementDto, FormElementVisibilityCondition, VisibilityConditionOperator } from '~~/.api-client' +import type { FormElementDto, VisibilityConditionGroup, VisibilityConditionNode } from '~~/.api-client' import { - VisibilityConditionOperator as VCOperator, VisibilityConditionType as VCType, + VisibilityConditionNodeNodeTypeEnum as VCNodeTypeEnum, + VisibilityConditionGroupOperatorEnum as VCGroupOperatorEnum, + VisibilityConditionNodeGroupOperatorEnum as VCNodeGroupOperatorEnum, + VisibilityConditionOperator as VCOperator, FormElementType } from '~~/.api-client' export function useFormElementVisibility() { - /** - * Evaluates visibility for all form elements based on their visibility conditions. - * Returns a map of element key (id or reference) to visibility status. - */ function evaluateFormElementVisibility(allFormElements: FormElementDto[]): Map { const formElementsByRef = buildFormElementsMap(allFormElements) const visibilityMap = new Map() @@ -25,6 +24,22 @@ export function useFormElementVisibility() { return visibilityMap } + /** + * Evaluates visibility conditions for a FormOption (e.g., table column). + * Unlike evaluateFormElementVisibility which works on FormElements, + * this evaluates standalone condition groups for options/columns. + */ + function isFormOptionVisible( + conditions: VisibilityConditionGroup | undefined, + allFormElements: FormElementDto[] + ): boolean { + if (!conditions || !conditions.conditions || conditions.conditions.length === 0) { + return true + } + const formElementsByRef = buildFormElementsMap(allFormElements) + return evaluateGroup(conditions, formElementsByRef) + } + function buildFormElementsMap(formElements: FormElementDto[]): Map { const map = new Map() formElements.forEach((element) => { @@ -35,96 +50,104 @@ export function useFormElementVisibility() { return map } - /** - * Evaluates if an element is visible based on its visibility conditions. - * Multiple conditions use AND logic - all conditions must be met for the element to be visible. - */ function isElementVisible(element: FormElementDto, formElementsByRef: Map): boolean { - const conditions = element.visibilityConditions - if (!conditions || conditions.length === 0) { + const group = element.visibilityConditions + if (!group || !group.conditions || group.conditions.length === 0) { return true } - // All conditions must be met (AND logic) - return conditions.every((condition) => evaluateSingleCondition(condition, formElementsByRef)) + return evaluateGroup(group, formElementsByRef) } - /** - * Evaluates a single visibility condition against the form state. - */ - function evaluateSingleCondition( - condition: FormElementVisibilityCondition, + function evaluateGroup(group: VisibilityConditionGroup, formElementsByRef: Map): boolean { + if (!group.conditions || group.conditions.length === 0) { + return true + } + const results = group.conditions.map((c) => evaluateNode(c, formElementsByRef)) + return group.operator === VCGroupOperatorEnum.And ? results.every(Boolean) : results.some(Boolean) + } + + function evaluateNode(node: VisibilityConditionNode, formElementsByRef: Map): boolean { + if (node.nodeType === VCNodeTypeEnum.Group) { + return evaluateNodeGroup(node, formElementsByRef) + } + return evaluateLeafCondition(node, formElementsByRef) + } + + function evaluateNodeGroup(node: VisibilityConditionNode, formElementsByRef: Map): boolean { + if (!node.conditions || node.conditions.length === 0) { + return true + } + const results = node.conditions.map((c) => evaluateNode(c, formElementsByRef)) + return node.groupOperator === VCNodeGroupOperatorEnum.And ? results.every(Boolean) : results.some(Boolean) + } + + function evaluateLeafCondition( + leaf: VisibilityConditionNode, formElementsByRef: Map ): boolean { - const sourceElement = formElementsByRef.get(condition.sourceFormElementReference) + if (!leaf.sourceFormElementReference) { + return false + } + const sourceElement = formElementsByRef.get(leaf.sourceFormElementReference) if (!sourceElement) { return false } // Special handling for CHECKBOX with multiple options if (sourceElement.type === FormElementType.Checkbox && sourceElement.options.length > 1) { - const operator = condition.formElementOperator || VCOperator.Equals - const conditionMet = evaluateCheckboxCondition(sourceElement, condition.formElementExpectedValue || '', operator) - return condition.formElementConditionType === VCType.Show ? conditionMet : !conditionMet + const operator = leaf.formElementOperator || VCOperator.Equals + const conditionMet = evaluateCheckboxCondition(sourceElement, leaf.formElementExpectedValue || '', operator) + return leaf.formElementConditionType === VCType.Hide ? !conditionMet : conditionMet } const sourceValue = getFormElementValue(sourceElement) - const operator = condition.formElementOperator || VCOperator.Equals - const conditionMet = evaluateCondition(sourceValue, condition.formElementExpectedValue || '', operator) + const operator = leaf.formElementOperator || VCOperator.Equals + const conditionMet = evaluateCondition(sourceValue, leaf.formElementExpectedValue || '', operator) - return condition.formElementConditionType === VCType.Show ? conditionMet : !conditionMet + return leaf.formElementConditionType === VCType.Hide ? !conditionMet : conditionMet } function getFormElementValue(element: FormElementDto): string { - // For CHECKBOX with a single option, return the value directly if (element.type === FormElementType.Checkbox && element.options.length === 1) { return element.options[0]?.value || '' } - // For other element types (RADIOBUTTON, SELECT, etc.), find the selected option and return its label const selectedOption = element.options.find((option) => option.value === 'true') return selectedOption?.label || '' } - /** - * Evaluates visibility condition for CHECKBOX with multiple options. - * Checks if ANY of the selected checkboxes matches the expected value. - */ - function evaluateCheckboxCondition( - element: FormElementDto, - expectedValue: string, - operator: VisibilityConditionOperator - ): boolean { + function evaluateCheckboxCondition(element: FormElementDto, expectedValue: string, operator: string): boolean { const selectedLabels = element.options.filter((option) => option.value === 'true').map((option) => option.label) switch (operator) { case VCOperator.Equals: - // Check if any selected checkbox label matches the expected value return selectedLabels.some((label) => label.toLowerCase() === expectedValue.toLowerCase()) case VCOperator.NotEquals: - // Check if no selected checkbox label matches the expected value + return !selectedLabels.some((label) => label.toLowerCase() === expectedValue.toLowerCase()) + case VCOperator.Contains: + return selectedLabels.some((label) => label.toLowerCase() === expectedValue.toLowerCase()) + case VCOperator.NotContains: return !selectedLabels.some((label) => label.toLowerCase() === expectedValue.toLowerCase()) case VCOperator.IsEmpty: - // Check if no checkboxes are selected return selectedLabels.length === 0 case VCOperator.IsNotEmpty: - // Check if at least one checkbox is selected return selectedLabels.length > 0 default: return false } } - function evaluateCondition( - actualValue: string, - expectedValue: string, - operator: VisibilityConditionOperator - ): boolean { + function evaluateCondition(actualValue: string, expectedValue: string, operator: string): boolean { switch (operator) { case VCOperator.Equals: return actualValue.toLowerCase() === expectedValue.toLowerCase() case VCOperator.NotEquals: return actualValue.toLowerCase() !== expectedValue.toLowerCase() + case VCOperator.Contains: + return actualValue.toLowerCase().includes(expectedValue.toLowerCase()) + case VCOperator.NotContains: + return !actualValue.toLowerCase().includes(expectedValue.toLowerCase()) case VCOperator.IsEmpty: return actualValue === '' case VCOperator.IsNotEmpty: @@ -135,6 +158,7 @@ export function useFormElementVisibility() { } return { - evaluateFormElementVisibility + evaluateFormElementVisibility, + isFormOptionVisible } }