From 1c15a0be0f00a68a12b5d84a2cd21f5dae6cd83f Mon Sep 17 00:00:00 2001
From: cronn Bot <no-reply@cronn.de>
Date: Thu, 23 Jan 2025 07:32:21 +0000
Subject: [PATCH] Update documentation

---
 .../interfaces/bund-id-interface.adoc         |   7 +-
 .../mein-unternehmenskonto-interface.adoc     |   2 +-
 open-api/base/openApiSpec.yaml                | 139 ++++++++++++------
 open-api/inspection/openApiSpec.yaml          | 109 +++++---------
 open-api/measles-protection/openApiSpec.yaml  | 109 +++++---------
 open-api/procedure/openApiSpec.yaml           | 109 +++++---------
 open-api/school-entry/openApiSpec.yaml        | 109 +++++---------
 open-api/statistic/openApiSpec.yaml           |  50 +++----
 open-api/travel-medicine/openApiSpec.yaml     | 109 +++++---------
 .../base-modules/open-data/open-data.adoc     |  17 ---
 .../subdir/domain/entity-consultation.adoc    |  23 +++
 .../subdir/domain/entity-diagnosis.adoc       |  48 ++++++
 .../subdir/domain/entity-general-section.adoc |  78 ++++++++++
 .../entity-laboratory-test-examination.adoc   |   2 +-
 .../subdir/domain/entity-medication.adoc      |  28 ++++
 .../domain/entity-pregnancy-section.adoc      |  51 +++++++
 .../subdir/domain/enum-test-type.adoc         |  22 +++
 .../domain/sti-protection-domain-model.puml   |  58 +++++++-
 18 files changed, 605 insertions(+), 465 deletions(-)
 create mode 100644 solution-strategy/business-modules/sti-protection/subdir/domain/entity-consultation.adoc
 create mode 100644 solution-strategy/business-modules/sti-protection/subdir/domain/entity-diagnosis.adoc
 create mode 100644 solution-strategy/business-modules/sti-protection/subdir/domain/entity-general-section.adoc
 create mode 100644 solution-strategy/business-modules/sti-protection/subdir/domain/entity-medication.adoc
 create mode 100644 solution-strategy/business-modules/sti-protection/subdir/domain/entity-pregnancy-section.adoc
 create mode 100644 solution-strategy/business-modules/sti-protection/subdir/domain/enum-test-type.adoc

diff --git a/context-and-scope/interfaces/bund-id-interface.adoc b/context-and-scope/interfaces/bund-id-interface.adoc
index df38801..ce021f2 100644
--- a/context-and-scope/interfaces/bund-id-interface.adoc
+++ b/context-and-scope/interfaces/bund-id-interface.adoc
@@ -14,11 +14,10 @@ Authenticated users inherit the realm role of a "BundID Benutzer" in Keycloak.
 * For our use-cases (see below) it is required to have the trust level `high`.
 * As SAML meta data, we use:
 ** EntityId: <keycloak-domain>/realms/citizens
-** BundID - Attribute Consume Service Endpoint: https://<keycloak-domain>/realms/citizens/broker/bund-id/endpoint
-** Managed Name ID URLs: <empty>
+** Attribute Consume Service Endpoint: https://<keycloak-domain>/realms/citizens/broker/bund-id/endpoint
 * In the BundID Self-Service Portal we configure:
-** Signature procedure: `sha256-rsa-MGF1`
-** Encryption procedures: `aes128-gcm`
+** Signing method: `sha256-rsa-MGF1`
+** Encryption method: `aes128-gcm`
 * In the configuration of our application, we use:
 ** The name of the health department as `keycloak.bundId.organizationDisplayName`, which is shown during the BundID-Login.
 ** The so called BMI ID of the application (can be found in the Self-Service Portal) as `keycloak.bundId.onlineServiceId`.
diff --git a/context-and-scope/interfaces/mein-unternehmenskonto-interface.adoc b/context-and-scope/interfaces/mein-unternehmenskonto-interface.adoc
index a643af2..604a9f1 100644
--- a/context-and-scope/interfaces/mein-unternehmenskonto-interface.adoc
+++ b/context-and-scope/interfaces/mein-unternehmenskonto-interface.adoc
@@ -18,7 +18,7 @@ Authenticated users inherit the realm role of a "Mein Unternehmenskonto Benutzer
 * URL of the landing page: <citizen-portal landing page>
 * As SAML meta data, we use:
 ** EntityId: <keycloak-domain>/realms/citizens
-** MUK - Assertion Consumer Service URLs: https://<keycloak-domain>/realms/citizens/broker/muk/endpoint
+** Assertion Consumer Service URLs: https://<keycloak-domain>/realms/citizens/broker/muk/endpoint
 ** Managed Name ID URLs: <empty>
 
 
diff --git a/open-api/base/openApiSpec.yaml b/open-api/base/openApiSpec.yaml
index d09a7c7..bbe3c88 100644
--- a/open-api/base/openApiSpec.yaml
+++ b/open-api/base/openApiSpec.yaml
@@ -1395,6 +1395,20 @@ paths:
         concern can be added to the request if desired.
       tags:
       - GdprProcedure
+  /gdpr-procedures/citizen-portal/self/linked-gdpr-procedures:
+    get:
+      operationId: getCitizenSelfUserLinkedGdprProcedures
+      responses:
+        "200":
+          content:
+            '*/*':
+              schema:
+                $ref: "#/components/schemas/GetCitizenSelfUsersGdprProceduresResponse"
+          description: OK
+      summary: Get the GDPR procedures linked with the citizen user which is currently
+        active
+      tags:
+      - GdprProcedure
   /gdpr-procedures/{id}:
     get:
       operationId: getGdprProcedure
@@ -3085,36 +3099,6 @@ paths:
           items:
             $ref: "#/components/schemas/TaskStatus"
           uniqueItems: true
-      - description: |
-          Filter logic:
-          - In case of "true" only tasks with a due date are returned.
-          - In case of "false" only tasks without a due date are returned.
-          - If not submitted, no filtering takes place
-        in: query
-        name: hasDueAt
-        required: false
-        schema:
-          type: boolean
-      - description: |
-          Filter logic:
-          - In case of "true" only tasks  which dueDate is in the past are returned.
-          - In case of "false" only tasks which due date is **not** in the past or which don't have a due date are returned.
-          - If not submitted, no filtering takes place
-        in: query
-        name: isOverdue
-        required: false
-        schema:
-          type: boolean
-      - description: |
-          Filter logic:
-          - In case of "true" only tasks are returned where assignee and the user who assigned the tasks are unequal
-          - In case of "false" only tasks are returned where assignee and the user who assigned the tasks are equal
-          - If not submitted, no filtering takes place
-        in: query
-        name: wasAssignedByOther
-        required: false
-        schema:
-          type: boolean
       - description: |
           The following sorting options are available:
           - PRIORITY: First tasks with a dueDate are listed and sorted by DueDate. Afterwards tasks without a dueDate are listed and sorted by createdAt
@@ -3853,17 +3837,18 @@ paths:
       summary: Get the team leaders of the currently active user
       tags:
       - User
-  /users/self/permissions:
+  /users/self/with-access:
     get:
-      operationId: getSelfUserPermissions
+      operationId: getSelfUserAndAccess
       responses:
         "200":
           content:
             '*/*':
               schema:
-                $ref: "#/components/schemas/GetPermissionsResponse"
+                $ref: "#/components/schemas/SelfUser"
           description: OK
-      summary: Get the permissions of the user which is currently active
+      summary: "Get the user which is currently active, including all roles assigned\
+        \ to this user"
       tags:
       - User
   /users/suggest:
@@ -4782,11 +4767,14 @@ components:
       type: object
       description: The BundId attributes of a user
       properties:
+        address:
+          $ref: "#/components/schemas/DomesticAddress"
         firstName:
           type: string
         lastName:
           type: string
       required:
+      - address
       - firstName
       - lastName
     BusinessCaseEventRequest:
@@ -4889,6 +4877,45 @@ components:
       - ACCESS_CODE_USER
       - MUK_USER
       - BUND_ID_USER
+    CitizenUsersGdprProcedure:
+      type: object
+      description: The core data of a GdprProcedure used in a response to a query
+        by a CitizenUser
+      properties:
+        closedAt:
+          type: string
+          format: date-time
+          description: The date and time of when this GDPR procedure was completed
+            or cancelled.
+          example: 2024-02-01T00:00:00.123456Z
+        createdAt:
+          type: string
+          format: date-time
+          description: The date and time of when the GDPR procedure was created.
+          example: 2024-02-01T00:00:00.123456Z
+        hasDownloads:
+          type: boolean
+          description: Whether this procedure has available downloads.
+          example: true
+        id:
+          type: string
+          format: uuid
+          description: The Id of the GDPR procedure.
+          example: ae9831d4-dc25-48d8-9bfe-4c0b54bfb2c1
+        matterOfConcern:
+          type: string
+          description: The matter of concern specified by the requesting user.
+          example: Please stop all procedures related to my personal information.
+        status:
+          $ref: "#/components/schemas/GdprProcedureStatus"
+        type:
+          $ref: "#/components/schemas/GdprProcedureType"
+      required:
+      - createdAt
+      - hasDownloads
+      - id
+      - status
+      - type
     CloseGdprProcedureRequest:
       type: object
       properties:
@@ -4995,7 +5022,8 @@ components:
       - INSTITUTION
     CountryCode:
       type: string
-      description: List of country codes in ISO 3166-1 alpha-2 format.
+      description: "List of country codes in ISO 3166-1 alpha-2 format. With custom\
+        \ extensions for stateless, non-standard countries, and unknown countries."
       enum:
       - AD
       - AE
@@ -5246,6 +5274,9 @@ components:
       - ZA
       - ZM
       - ZW
+      - XK
+      - UNKNOWN
+      - STATELESS
     CreateCalendarTestEventsRequest:
       type: object
       properties:
@@ -6231,6 +6262,15 @@ components:
           $ref: "#/components/schemas/BundIdUserAttributes"
         selfMukUserNameDto:
           $ref: "#/components/schemas/MukUserAttributes"
+    GetCitizenSelfUsersGdprProceduresResponse:
+      type: object
+      properties:
+        gdprProcedures:
+          type: array
+          items:
+            $ref: "#/components/schemas/CitizenUsersGdprProcedure"
+      required:
+      - gdprProcedures
     GetConfigurationResponse:
       type: object
       properties:
@@ -6559,6 +6599,8 @@ components:
             from the Central Files for this GDPR procedure.
           items:
             $ref: "#/components/schemas/GetReferenceFacilityResponse"
+        hasCentralFileDownload:
+          type: boolean
         linkedCentralFileFacilities:
           type: array
           description: Reference Data of Facilities from the Central File that has
@@ -6581,6 +6623,7 @@ components:
           $ref: "#/components/schemas/GetGdprProcedureResponse"
       required:
       - facilityMatches
+      - hasCentralFileDownload
       - linkedCentralFileFacilities
       - linkedCentralFilePersons
       - personMatches
@@ -6722,16 +6765,6 @@ components:
               contact
       required:
       - contactIds
-    GetPermissionsResponse:
-      type: object
-      properties:
-        permissions:
-          type: array
-          description: A list of requested user permissions
-          items:
-            $ref: "#/components/schemas/UserRole"
-      required:
-      - permissions
     GetPersonDiffResponse:
       type: object
       properties:
@@ -7852,9 +7885,12 @@ components:
       type: object
       description: The MUK attributes of a user
       properties:
+        address:
+          $ref: "#/components/schemas/DomesticAddress"
         facilityName:
           type: string
       required:
+      - address
       - facilityName
     PersonContact:
       type: object
@@ -8571,6 +8607,19 @@ components:
           uniqueItems: true
       required:
       - cityDistricts
+    SelfUser:
+      type: object
+      properties:
+        roles:
+          type: array
+          description: A list of assigned roles for this user
+          items:
+            $ref: "#/components/schemas/UserRole"
+        user:
+          $ref: "#/components/schemas/User"
+      required:
+      - roles
+      - user
     SendEmailNotificationRequest:
       type: object
       properties:
diff --git a/open-api/inspection/openApiSpec.yaml b/open-api/inspection/openApiSpec.yaml
index 19d9776..d9db117 100644
--- a/open-api/inspection/openApiSpec.yaml
+++ b/open-api/inspection/openApiSpec.yaml
@@ -1459,27 +1459,6 @@ paths:
       summary: Add a GDPR validation task
       tags:
       - GdprValidationTask
-  /gdpr-validation-tasks/download-packages/{id}:
-    get:
-      operationId: getGdprDownloadPackage
-      parameters:
-      - in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                type: string
-                format: binary
-          description: OK
-      summary: Get Gdpr Download Package by its id
-      tags:
-      - GdprValidationTask
   /gdpr-validation-tasks/notification-banner:
     get:
       operationId: getGdprNotificationBanner
@@ -1638,6 +1617,33 @@ paths:
       summary: Get approved Gdpr Download Packages by Gdpr Procedure Id
       tags:
       - GdprValidationTask
+  /gdpr-validation-tasks/{gdprProcedureId}/download-packages/{downloadId}:
+    get:
+      operationId: getGdprDownloadPackage
+      parameters:
+      - in: path
+        name: gdprProcedureId
+        required: true
+        schema:
+          type: string
+          format: uuid
+      - in: path
+        name: downloadId
+        required: true
+        schema:
+          type: string
+          format: uuid
+      responses:
+        "200":
+          content:
+            '*/*':
+              schema:
+                type: string
+                format: binary
+          description: OK
+      summary: Get Gdpr Download Package by the gdprProcedureId and its downloadId
+      tags:
+      - GdprValidationTask
   /import:
     post:
       operationId: importProcesses
@@ -2656,34 +2662,6 @@ paths:
         schema:
           type: string
           format: uuid
-      - description: |
-          Only procedures are returned where the assigneeId of none of the task equals `notAssignedToId`.
-          If not submitted, no filtering takes place.
-        in: query
-        name: notAssignedToId
-        required: false
-        schema:
-          type: string
-          format: uuid
-      - description: |
-          Only procedures are returned where the user is or was assigned to at least one task (at least one assigneeId equals `onceAssignedToId` in taskHistory for at least one task).
-          If not submitted, no filtering takes place.
-        in: query
-        name: onceAssignedToId
-        required: false
-        schema:
-          type: string
-          format: uuid
-      - description: |
-          Filter logic:
-          - In case of `true` only procedures are returned where all tasks are unassigned
-          - In case of `false` only procedures are returned which have at least one assigned task
-          - If not submitted, no filtering takes place
-        in: query
-        name: unassigned
-        required: false
-        schema:
-          type: boolean
       - description: |
           Filter logic:
           - If `procedureType` is submitted, only procedures are returned which have one of the submitted types.
@@ -2708,15 +2686,6 @@ paths:
           items:
             $ref: "#/components/schemas/ProcedureStatus"
           uniqueItems: true
-      - description: |
-          Filter logic:
-          - If `createdInYear` is set, only procedures are returned which were created in that year
-          - If not submitted, no filtering takes place
-        in: query
-        name: createdInYear
-        required: false
-        schema:
-          type: string
       - description: |
           The following sorting options are available:
           - `CREATED_AT`: Sorting by createdAt attribute
@@ -3305,21 +3274,6 @@ paths:
           items:
             $ref: "#/components/schemas/TaskStatus"
           uniqueItems: true
-      - in: query
-        name: hasDueAt
-        required: false
-        schema:
-          type: boolean
-      - in: query
-        name: isOverdue
-        required: false
-        schema:
-          type: boolean
-      - in: query
-        name: wasAssignedByOther
-        required: false
-        schema:
-          type: boolean
       - in: query
         name: sortKey
         required: true
@@ -4783,7 +4737,8 @@ components:
       - FACILITY
     CountryCode:
       type: string
-      description: List of country codes in ISO 3166-1 alpha-2 format.
+      description: "List of country codes in ISO 3166-1 alpha-2 format. With custom\
+        \ extensions for stateless, non-standard countries, and unknown countries."
       enum:
       - AD
       - AE
@@ -5034,6 +4989,9 @@ components:
       - ZA
       - ZM
       - ZW
+      - XK
+      - UNKNOWN
+      - STATELESS
     CreateApprovalRequestRequest:
       type: object
       properties:
@@ -8168,6 +8126,9 @@ components:
           keyDocumentVersion:
             type: integer
             format: int32
+          previousFileStateId:
+            type: string
+            format: uuid
           systemProgressEntryType:
             type: string
           triggerType:
diff --git a/open-api/measles-protection/openApiSpec.yaml b/open-api/measles-protection/openApiSpec.yaml
index a04c883..4027421 100644
--- a/open-api/measles-protection/openApiSpec.yaml
+++ b/open-api/measles-protection/openApiSpec.yaml
@@ -612,27 +612,6 @@ paths:
       summary: Add a GDPR validation task
       tags:
       - GdprValidationTask
-  /gdpr-validation-tasks/download-packages/{id}:
-    get:
-      operationId: getGdprDownloadPackage
-      parameters:
-      - in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                type: string
-                format: binary
-          description: OK
-      summary: Get Gdpr Download Package by its id
-      tags:
-      - GdprValidationTask
   /gdpr-validation-tasks/notification-banner:
     get:
       operationId: getGdprNotificationBanner
@@ -791,6 +770,33 @@ paths:
       summary: Get approved Gdpr Download Packages by Gdpr Procedure Id
       tags:
       - GdprValidationTask
+  /gdpr-validation-tasks/{gdprProcedureId}/download-packages/{downloadId}:
+    get:
+      operationId: getGdprDownloadPackage
+      parameters:
+      - in: path
+        name: gdprProcedureId
+        required: true
+        schema:
+          type: string
+          format: uuid
+      - in: path
+        name: downloadId
+        required: true
+        schema:
+          type: string
+          format: uuid
+      responses:
+        "200":
+          content:
+            '*/*':
+              schema:
+                type: string
+                format: binary
+          description: OK
+      summary: Get Gdpr Download Package by the gdprProcedureId and its downloadId
+      tags:
+      - GdprValidationTask
   /inbox-procedures:
     get:
       description: |
@@ -1039,34 +1045,6 @@ paths:
         schema:
           type: string
           format: uuid
-      - description: |
-          Only procedures are returned where the assigneeId of none of the task equals `notAssignedToId`.
-          If not submitted, no filtering takes place.
-        in: query
-        name: notAssignedToId
-        required: false
-        schema:
-          type: string
-          format: uuid
-      - description: |
-          Only procedures are returned where the user is or was assigned to at least one task (at least one assigneeId equals `onceAssignedToId` in taskHistory for at least one task).
-          If not submitted, no filtering takes place.
-        in: query
-        name: onceAssignedToId
-        required: false
-        schema:
-          type: string
-          format: uuid
-      - description: |
-          Filter logic:
-          - In case of `true` only procedures are returned where all tasks are unassigned
-          - In case of `false` only procedures are returned which have at least one assigned task
-          - If not submitted, no filtering takes place
-        in: query
-        name: unassigned
-        required: false
-        schema:
-          type: boolean
       - description: |
           Filter logic:
           - If `procedureType` is submitted, only procedures are returned which have one of the submitted types.
@@ -1091,15 +1069,6 @@ paths:
           items:
             $ref: "#/components/schemas/ProcedureStatus"
           uniqueItems: true
-      - description: |
-          Filter logic:
-          - If `createdInYear` is set, only procedures are returned which were created in that year
-          - If not submitted, no filtering takes place
-        in: query
-        name: createdInYear
-        required: false
-        schema:
-          type: string
       - description: |
           The following sorting options are available:
           - `CREATED_AT`: Sorting by createdAt attribute
@@ -2405,21 +2374,6 @@ paths:
           items:
             $ref: "#/components/schemas/TaskStatus"
           uniqueItems: true
-      - in: query
-        name: hasDueAt
-        required: false
-        schema:
-          type: boolean
-      - in: query
-        name: isOverdue
-        required: false
-        schema:
-          type: boolean
-      - in: query
-        name: wasAssignedByOther
-        required: false
-        schema:
-          type: boolean
       - in: query
         name: sortKey
         required: true
@@ -3441,7 +3395,8 @@ components:
       - FACILITY
     CountryCode:
       type: string
-      description: List of country codes in ISO 3166-1 alpha-2 format.
+      description: "List of country codes in ISO 3166-1 alpha-2 format. With custom\
+        \ extensions for stateless, non-standard countries, and unknown countries."
       enum:
       - AD
       - AE
@@ -3692,6 +3647,9 @@ components:
       - ZA
       - ZM
       - ZW
+      - XK
+      - UNKNOWN
+      - STATELESS
     CreateAccessRestriction:
       type: object
       properties:
@@ -6142,6 +6100,9 @@ components:
           keyDocumentVersion:
             type: integer
             format: int32
+          previousFileStateId:
+            type: string
+            format: uuid
           systemProgressEntryType:
             type: string
           triggerType:
diff --git a/open-api/procedure/openApiSpec.yaml b/open-api/procedure/openApiSpec.yaml
index 73d4830..96294ba 100644
--- a/open-api/procedure/openApiSpec.yaml
+++ b/open-api/procedure/openApiSpec.yaml
@@ -441,27 +441,6 @@ paths:
       summary: Add a GDPR validation task
       tags:
       - GdprValidationTask
-  /gdpr-validation-tasks/download-packages/{id}:
-    get:
-      operationId: getGdprDownloadPackage
-      parameters:
-      - in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                type: string
-                format: binary
-          description: OK
-      summary: Get Gdpr Download Package by its id
-      tags:
-      - GdprValidationTask
   /gdpr-validation-tasks/notification-banner:
     get:
       operationId: getGdprNotificationBanner
@@ -620,6 +599,33 @@ paths:
       summary: Get approved Gdpr Download Packages by Gdpr Procedure Id
       tags:
       - GdprValidationTask
+  /gdpr-validation-tasks/{gdprProcedureId}/download-packages/{downloadId}:
+    get:
+      operationId: getGdprDownloadPackage
+      parameters:
+      - in: path
+        name: gdprProcedureId
+        required: true
+        schema:
+          type: string
+          format: uuid
+      - in: path
+        name: downloadId
+        required: true
+        schema:
+          type: string
+          format: uuid
+      responses:
+        "200":
+          content:
+            '*/*':
+              schema:
+                type: string
+                format: binary
+          description: OK
+      summary: Get Gdpr Download Package by the gdprProcedureId and its downloadId
+      tags:
+      - GdprValidationTask
   /inbox-procedures:
     get:
       description: |
@@ -824,34 +830,6 @@ paths:
         schema:
           type: string
           format: uuid
-      - description: |
-          Only procedures are returned where the assigneeId of none of the task equals `notAssignedToId`.
-          If not submitted, no filtering takes place.
-        in: query
-        name: notAssignedToId
-        required: false
-        schema:
-          type: string
-          format: uuid
-      - description: |
-          Only procedures are returned where the user is or was assigned to at least one task (at least one assigneeId equals `onceAssignedToId` in taskHistory for at least one task).
-          If not submitted, no filtering takes place.
-        in: query
-        name: onceAssignedToId
-        required: false
-        schema:
-          type: string
-          format: uuid
-      - description: |
-          Filter logic:
-          - In case of `true` only procedures are returned where all tasks are unassigned
-          - In case of `false` only procedures are returned which have at least one assigned task
-          - If not submitted, no filtering takes place
-        in: query
-        name: unassigned
-        required: false
-        schema:
-          type: boolean
       - description: |
           Filter logic:
           - If `procedureType` is submitted, only procedures are returned which have one of the submitted types.
@@ -876,15 +854,6 @@ paths:
           items:
             $ref: "#/components/schemas/ProcedureStatus"
           uniqueItems: true
-      - description: |
-          Filter logic:
-          - If `createdInYear` is set, only procedures are returned which were created in that year
-          - If not submitted, no filtering takes place
-        in: query
-        name: createdInYear
-        required: false
-        schema:
-          type: string
       - description: |
           The following sorting options are available:
           - `CREATED_AT`: Sorting by createdAt attribute
@@ -1483,21 +1452,6 @@ paths:
           items:
             $ref: "#/components/schemas/TaskStatus"
           uniqueItems: true
-      - in: query
-        name: hasDueAt
-        required: false
-        schema:
-          type: boolean
-      - in: query
-        name: isOverdue
-        required: false
-        schema:
-          type: boolean
-      - in: query
-        name: wasAssignedByOther
-        required: false
-        schema:
-          type: boolean
       - in: query
         name: sortKey
         required: true
@@ -2046,7 +2000,8 @@ components:
       - FACILITY
     CountryCode:
       type: string
-      description: List of country codes in ISO 3166-1 alpha-2 format.
+      description: "List of country codes in ISO 3166-1 alpha-2 format. With custom\
+        \ extensions for stateless, non-standard countries, and unknown countries."
       enum:
       - AD
       - AE
@@ -2297,6 +2252,9 @@ components:
       - ZA
       - ZM
       - ZW
+      - XK
+      - UNKNOWN
+      - STATELESS
     CreateApprovalRequestRequest:
       type: object
       properties:
@@ -4000,6 +3958,9 @@ components:
           keyDocumentVersion:
             type: integer
             format: int32
+          previousFileStateId:
+            type: string
+            format: uuid
           systemProgressEntryType:
             type: string
           triggerType:
diff --git a/open-api/school-entry/openApiSpec.yaml b/open-api/school-entry/openApiSpec.yaml
index 3e161ff..6d9555d 100644
--- a/open-api/school-entry/openApiSpec.yaml
+++ b/open-api/school-entry/openApiSpec.yaml
@@ -729,27 +729,6 @@ paths:
       summary: Add a GDPR validation task
       tags:
       - GdprValidationTask
-  /gdpr-validation-tasks/download-packages/{id}:
-    get:
-      operationId: getGdprDownloadPackage
-      parameters:
-      - in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                type: string
-                format: binary
-          description: OK
-      summary: Get Gdpr Download Package by its id
-      tags:
-      - GdprValidationTask
   /gdpr-validation-tasks/notification-banner:
     get:
       operationId: getGdprNotificationBanner
@@ -908,6 +887,33 @@ paths:
       summary: Get approved Gdpr Download Packages by Gdpr Procedure Id
       tags:
       - GdprValidationTask
+  /gdpr-validation-tasks/{gdprProcedureId}/download-packages/{downloadId}:
+    get:
+      operationId: getGdprDownloadPackage
+      parameters:
+      - in: path
+        name: gdprProcedureId
+        required: true
+        schema:
+          type: string
+          format: uuid
+      - in: path
+        name: downloadId
+        required: true
+        schema:
+          type: string
+          format: uuid
+      responses:
+        "200":
+          content:
+            '*/*':
+              schema:
+                type: string
+                format: binary
+          description: OK
+      summary: Get Gdpr Download Package by the gdprProcedureId and its downloadId
+      tags:
+      - GdprValidationTask
   /import/citizen-list:
     post:
       operationId: importCitizenList
@@ -1268,34 +1274,6 @@ paths:
         schema:
           type: string
           format: uuid
-      - description: |
-          Only procedures are returned where the assigneeId of none of the task equals `notAssignedToId`.
-          If not submitted, no filtering takes place.
-        in: query
-        name: notAssignedToId
-        required: false
-        schema:
-          type: string
-          format: uuid
-      - description: |
-          Only procedures are returned where the user is or was assigned to at least one task (at least one assigneeId equals `onceAssignedToId` in taskHistory for at least one task).
-          If not submitted, no filtering takes place.
-        in: query
-        name: onceAssignedToId
-        required: false
-        schema:
-          type: string
-          format: uuid
-      - description: |
-          Filter logic:
-          - In case of `true` only procedures are returned where all tasks are unassigned
-          - In case of `false` only procedures are returned which have at least one assigned task
-          - If not submitted, no filtering takes place
-        in: query
-        name: unassigned
-        required: false
-        schema:
-          type: boolean
       - description: |
           Filter logic:
           - If `procedureType` is submitted, only procedures are returned which have one of the submitted types.
@@ -1320,15 +1298,6 @@ paths:
           items:
             $ref: "#/components/schemas/ProcedureStatus"
           uniqueItems: true
-      - description: |
-          Filter logic:
-          - If `createdInYear` is set, only procedures are returned which were created in that year
-          - If not submitted, no filtering takes place
-        in: query
-        name: createdInYear
-        required: false
-        schema:
-          type: string
       - description: |
           The following sorting options are available:
           - `CREATED_AT`: Sorting by createdAt attribute
@@ -2859,21 +2828,6 @@ paths:
           items:
             $ref: "#/components/schemas/TaskStatus"
           uniqueItems: true
-      - in: query
-        name: hasDueAt
-        required: false
-        schema:
-          type: boolean
-      - in: query
-        name: isOverdue
-        required: false
-        schema:
-          type: boolean
-      - in: query
-        name: wasAssignedByOther
-        required: false
-        schema:
-          type: boolean
       - in: query
         name: sortKey
         required: true
@@ -3934,7 +3888,8 @@ components:
       - FACILITY
     CountryCode:
       type: string
-      description: List of country codes in ISO 3166-1 alpha-2 format.
+      description: "List of country codes in ISO 3166-1 alpha-2 format. With custom\
+        \ extensions for stateless, non-standard countries, and unknown countries."
       enum:
       - AD
       - AE
@@ -4185,6 +4140,9 @@ components:
       - ZA
       - ZM
       - ZW
+      - XK
+      - UNKNOWN
+      - STATELESS
     CreateAppointmentBlockGroupResponse:
       type: object
       properties:
@@ -7729,6 +7687,9 @@ components:
           keyDocumentVersion:
             type: integer
             format: int32
+          previousFileStateId:
+            type: string
+            format: uuid
           systemProgressEntryType:
             type: string
           triggerType:
diff --git a/open-api/statistic/openApiSpec.yaml b/open-api/statistic/openApiSpec.yaml
index 6312cd4..338a4bc 100644
--- a/open-api/statistic/openApiSpec.yaml
+++ b/open-api/statistic/openApiSpec.yaml
@@ -1708,6 +1708,30 @@ components:
       - code
       - displayName
       - name
+    BaseModuleIdAttribute:
+      type: object
+      allOf:
+      - $ref: "#/components/schemas/AbstractTableColumnHeaderAttribute"
+      - type: object
+        properties:
+          baseAttribute:
+            oneOf:
+            - $ref: "#/components/schemas/BaseModuleIdAttribute"
+            - $ref: "#/components/schemas/BooleanAttribute"
+            - $ref: "#/components/schemas/DateAttribute"
+            - $ref: "#/components/schemas/DecimalAttribute"
+            - $ref: "#/components/schemas/IntegerAttribute"
+            - $ref: "#/components/schemas/ProcedureReferenceAttribute"
+            - $ref: "#/components/schemas/TextAttribute"
+            - $ref: "#/components/schemas/ValueWithOptionsAttribute"
+          code:
+            type: string
+          name:
+            type: string
+      required:
+      - baseAttribute
+      - code
+      - name
     BinningMode:
       type: string
       enum:
@@ -1793,30 +1817,6 @@ components:
       enum:
       - MEAN
       - SUM
-    CentralFileIdAttribute:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/AbstractTableColumnHeaderAttribute"
-      - type: object
-        properties:
-          baseAttribute:
-            oneOf:
-            - $ref: "#/components/schemas/BooleanAttribute"
-            - $ref: "#/components/schemas/CentralFileIdAttribute"
-            - $ref: "#/components/schemas/DateAttribute"
-            - $ref: "#/components/schemas/DecimalAttribute"
-            - $ref: "#/components/schemas/IntegerAttribute"
-            - $ref: "#/components/schemas/ProcedureReferenceAttribute"
-            - $ref: "#/components/schemas/TextAttribute"
-            - $ref: "#/components/schemas/ValueWithOptionsAttribute"
-          code:
-            type: string
-          name:
-            type: string
-      required:
-      - baseAttribute
-      - code
-      - name
     ChoroplethMapConfiguration:
       type: object
       allOf:
@@ -3458,8 +3458,8 @@ components:
       properties:
         attribute:
           oneOf:
+          - $ref: "#/components/schemas/BaseModuleIdAttribute"
           - $ref: "#/components/schemas/BooleanAttribute"
-          - $ref: "#/components/schemas/CentralFileIdAttribute"
           - $ref: "#/components/schemas/DateAttribute"
           - $ref: "#/components/schemas/DecimalAttribute"
           - $ref: "#/components/schemas/IntegerAttribute"
diff --git a/open-api/travel-medicine/openApiSpec.yaml b/open-api/travel-medicine/openApiSpec.yaml
index ce22d11..625a704 100644
--- a/open-api/travel-medicine/openApiSpec.yaml
+++ b/open-api/travel-medicine/openApiSpec.yaml
@@ -1019,27 +1019,6 @@ paths:
       summary: Add a GDPR validation task
       tags:
       - GdprValidationTask
-  /gdpr-validation-tasks/download-packages/{id}:
-    get:
-      operationId: getGdprDownloadPackage
-      parameters:
-      - in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                type: string
-                format: binary
-          description: OK
-      summary: Get Gdpr Download Package by its id
-      tags:
-      - GdprValidationTask
   /gdpr-validation-tasks/notification-banner:
     get:
       operationId: getGdprNotificationBanner
@@ -1198,6 +1177,33 @@ paths:
       summary: Get approved Gdpr Download Packages by Gdpr Procedure Id
       tags:
       - GdprValidationTask
+  /gdpr-validation-tasks/{gdprProcedureId}/download-packages/{downloadId}:
+    get:
+      operationId: getGdprDownloadPackage
+      parameters:
+      - in: path
+        name: gdprProcedureId
+        required: true
+        schema:
+          type: string
+          format: uuid
+      - in: path
+        name: downloadId
+        required: true
+        schema:
+          type: string
+          format: uuid
+      responses:
+        "200":
+          content:
+            '*/*':
+              schema:
+                type: string
+                format: binary
+          description: OK
+      summary: Get Gdpr Download Package by the gdprProcedureId and its downloadId
+      tags:
+      - GdprValidationTask
   /inbox-procedures:
     get:
       description: |
@@ -1810,34 +1816,6 @@ paths:
         schema:
           type: string
           format: uuid
-      - description: |
-          Only procedures are returned where the assigneeId of none of the task equals `notAssignedToId`.
-          If not submitted, no filtering takes place.
-        in: query
-        name: notAssignedToId
-        required: false
-        schema:
-          type: string
-          format: uuid
-      - description: |
-          Only procedures are returned where the user is or was assigned to at least one task (at least one assigneeId equals `onceAssignedToId` in taskHistory for at least one task).
-          If not submitted, no filtering takes place.
-        in: query
-        name: onceAssignedToId
-        required: false
-        schema:
-          type: string
-          format: uuid
-      - description: |
-          Filter logic:
-          - In case of `true` only procedures are returned where all tasks are unassigned
-          - In case of `false` only procedures are returned which have at least one assigned task
-          - If not submitted, no filtering takes place
-        in: query
-        name: unassigned
-        required: false
-        schema:
-          type: boolean
       - description: |
           Filter logic:
           - If `procedureType` is submitted, only procedures are returned which have one of the submitted types.
@@ -1862,15 +1840,6 @@ paths:
           items:
             $ref: "#/components/schemas/ProcedureStatus"
           uniqueItems: true
-      - description: |
-          Filter logic:
-          - If `createdInYear` is set, only procedures are returned which were created in that year
-          - If not submitted, no filtering takes place
-        in: query
-        name: createdInYear
-        required: false
-        schema:
-          type: string
       - description: |
           The following sorting options are available:
           - `CREATED_AT`: Sorting by createdAt attribute
@@ -2440,21 +2409,6 @@ paths:
           items:
             $ref: "#/components/schemas/TaskStatus"
           uniqueItems: true
-      - in: query
-        name: hasDueAt
-        required: false
-        schema:
-          type: boolean
-      - in: query
-        name: isOverdue
-        required: false
-        schema:
-          type: boolean
-      - in: query
-        name: wasAssignedByOther
-        required: false
-        schema:
-          type: boolean
       - in: query
         name: sortKey
         required: true
@@ -4042,7 +3996,8 @@ components:
       - FACILITY
     CountryCode:
       type: string
-      description: List of country codes in ISO 3166-1 alpha-2 format.
+      description: "List of country codes in ISO 3166-1 alpha-2 format. With custom\
+        \ extensions for stateless, non-standard countries, and unknown countries."
       enum:
       - AD
       - AE
@@ -4293,6 +4248,9 @@ components:
       - ZA
       - ZM
       - ZW
+      - XK
+      - UNKNOWN
+      - STATELESS
     CreateAppointmentBlockGroupResponse:
       type: object
       properties:
@@ -7507,6 +7465,9 @@ components:
           keyDocumentVersion:
             type: integer
             format: int32
+          previousFileStateId:
+            type: string
+            format: uuid
           systemProgressEntryType:
             type: string
           triggerType:
diff --git a/solution-strategy/base-modules/open-data/open-data.adoc b/solution-strategy/base-modules/open-data/open-data.adoc
index 058c6ff..0e84732 100644
--- a/solution-strategy/base-modules/open-data/open-data.adoc
+++ b/solution-strategy/base-modules/open-data/open-data.adoc
@@ -93,24 +93,7 @@ Modify an existing resource/version
 PUT /open-documents/{versionId}
 ----
 
-== Functionality for statistic module
-Employees who have access to the statistics module can transfer csv files that were created in the
-link:../statistics-module/statistics.adoc[statistics module]
-to the open data module. On the one hand, these files (including metadata) are then directly
-available in the online portal. On the other hand, they can be edited or deleted by employees.
-[source]
-----
-POST /open-documents
-----
-
 == Notes
-Due to the different sources for files (including metadata), there are special features
-when creating resources or versions with regard to versioning and naming logic.
-
-*Version name*
-
-If the version is transferred from the statistics module, the transferred resource name is also used as the version name.
-If the version is uploaded manually in the employee portal, the employee has the option of entering the version name manually.
 
 *Version logic*
 
diff --git a/solution-strategy/business-modules/sti-protection/subdir/domain/entity-consultation.adoc b/solution-strategy/business-modules/sti-protection/subdir/domain/entity-consultation.adoc
new file mode 100644
index 0000000..4939776
--- /dev/null
+++ b/solution-strategy/business-modules/sti-protection/subdir/domain/entity-consultation.adoc
@@ -0,0 +1,23 @@
+=== Entity Consultation
+
+Documents detailed patient information, including anamnesis review, medical
+history, and referrals.
+
+.Attributes of `Consultation`
+[cols="2,1,1,3"]
+|===
+|Attribute | Card. | Type | Description
+
+|generalSection
+|[0..1]
+|GeneralSection
+|General patient details, including language proficiency, gender information,
+and health insurance data.
+
+|pregnancySection
+|[0..1]
+|PregnancySection
+|Pregnancy-related details, including the number of previous pregnancies and
+abortions.
+
+|===
\ No newline at end of file
diff --git a/solution-strategy/business-modules/sti-protection/subdir/domain/entity-diagnosis.adoc b/solution-strategy/business-modules/sti-protection/subdir/domain/entity-diagnosis.adoc
new file mode 100644
index 0000000..6107854
--- /dev/null
+++ b/solution-strategy/business-modules/sti-protection/subdir/domain/entity-diagnosis.adoc
@@ -0,0 +1,48 @@
+=== Entity Diagnosis
+
+Documents diagnostic outcomes and related details following the consultation and
+completion of tests.
+
+.Attributes of `Diagnosis`
+[cols="2,1,1,3"]
+|===
+|Attribute | Card. | Type | Description
+
+|results
+|[0..1]
+|String
+|Details the results of the diagnosis.
+
+|medications
+|[0..*]
+|Medication
+|Lists prescribed medications.
+
+|findings
+|[0..1]
+|Icd10Code
+|Records diagnostic findings using ICD-10 codes.
+
+|testTypes
+|[0..1]
+|TestType
+|Specifies the type of laboratory tests conducted during examination.
+
+|otherTestTypeName
+|[0..1]
+|String
+|Provides the name of a test type not included in the predefined list.
+
+|generalRemarks
+|[0..1]
+|String
+|Additional remarks or observations documented during the diagnosis phase.
+
+|resultsCommunicated
+|[0..1]
+|Boolean
+|Indicates whether the patient has been informed of their diagnostic results and
+updates the laboratory status to 'CLOSE'.
+
+|===
+
diff --git a/solution-strategy/business-modules/sti-protection/subdir/domain/entity-general-section.adoc b/solution-strategy/business-modules/sti-protection/subdir/domain/entity-general-section.adoc
new file mode 100644
index 0000000..f90dfaf
--- /dev/null
+++ b/solution-strategy/business-modules/sti-protection/subdir/domain/entity-general-section.adoc
@@ -0,0 +1,78 @@
+=== Entity GeneralSection
+
+Is used for the consultation and contains general patient details, including
+language proficiency, gender information, and health insurance data.
+
+.Attributes of `GeneralSection`
+[cols="2,1,1,3"]
+|===
+|Attribute | Card. | Type | Description
+
+|mainReason
+|[0..1]
+|String
+|Primary reason for the patient's consultation.
+
+|furtherGenderInfo
+|[0..1]
+|String
+|Additional gender-related information.
+
+|hasSufficientGermanLanguageSkills
+|[0..1]
+|Boolean
+|Indicates whether the patient has sufficient German language skills.
+
+|isIlliterate
+|[0..1]
+|Boolean
+|Indicates whether the patient is illiterate.
+
+|otherKnownLanguages
+|[0..1]
+|String
+|Other languages the patient can speak or understand.
+
+|hasHealthInsurance
+|[0..1]
+|Boolean
+|Indicates whether the patient has any form of health insurance.
+
+|hasGermanHealthInsurance
+|[0..1]
+|Boolean
+|Indicates whether the patient has German health insurance.
+
+|hasInsecureResidence
+|[0..1]
+|Boolean
+|Indicates whether the patient's residency status is insecure.
+
+|hasSymptoms
+|[0..1]
+|Boolean
+|Indicates whether the patient has any symptoms.
+
+|symptoms
+|[0..1]
+|String
+|Details the symptoms reported by the patient.
+
+|drugUse
+|[0..1]
+|String
+|Records the patient's drug use or consumption.
+
+|referral
+|[0..1]
+|String
+|Details any referral made to another department or specialist.
+
+|notes
+|[0..1]
+|String
+|Optional field for additional remarks or comments during the consultation.
+
+|===
+
+
diff --git a/solution-strategy/business-modules/sti-protection/subdir/domain/entity-laboratory-test-examination.adoc b/solution-strategy/business-modules/sti-protection/subdir/domain/entity-laboratory-test-examination.adoc
index 2eb4396..3d2633c 100644
--- a/solution-strategy/business-modules/sti-protection/subdir/domain/entity-laboratory-test-examination.adoc
+++ b/solution-strategy/business-modules/sti-protection/subdir/domain/entity-laboratory-test-examination.adoc
@@ -22,7 +22,7 @@ results.
 |testsConducted
 |[0..1]
 |Boolean
-|Indicates if the tests were conducted and is used for the `LaboryStatus`.
+|Indicates if the tests were conducted and is used for the `LaboratoryStatus`.
 
 |testsPayed
 |[0..1]
diff --git a/solution-strategy/business-modules/sti-protection/subdir/domain/entity-medication.adoc b/solution-strategy/business-modules/sti-protection/subdir/domain/entity-medication.adoc
new file mode 100644
index 0000000..6057e6c
--- /dev/null
+++ b/solution-strategy/business-modules/sti-protection/subdir/domain/entity-medication.adoc
@@ -0,0 +1,28 @@
+=== Entity Medication
+
+Lists prescribed medications.
+
+.Attributes of `Medication`
+[cols="2,1,1,3"]
+|===
+|Attribute | Card. | Type | Description
+
+|name
+|[0..1]
+|String
+|Name of the prescribed medication.
+
+|dose
+|[0..1]
+|String
+|Prescribed dosage of the medication.
+
+|prescriptionDate
+|[0..1]
+|LocalDate
+|Date the medication was prescribed.
+
+|===
+
+
+
diff --git a/solution-strategy/business-modules/sti-protection/subdir/domain/entity-pregnancy-section.adoc b/solution-strategy/business-modules/sti-protection/subdir/domain/entity-pregnancy-section.adoc
new file mode 100644
index 0000000..90078fe
--- /dev/null
+++ b/solution-strategy/business-modules/sti-protection/subdir/domain/entity-pregnancy-section.adoc
@@ -0,0 +1,51 @@
+=== Entity PregnancySection
+
+Is used for the consultation and records pregnancy-related details, such as the
+number of previous pregnancies or induced abortions.
+
+.Attributes of `PregnancySection`
+[cols="2,1,1,3"]
+|===
+|Attribute | Card. | Type | Description
+
+|hasPregnancyRelatedInfo
+|[0..1]
+|Boolean
+|Indicates whether pregnancy-related information is provided.
+
+|lastCytologyTest
+|[0..1]
+|LocalDate
+|Date of the patient's most recent cytology test.
+
+|startOfLastPeriod
+|[0..1]
+|LocalDate
+|Start date of the patient's last menstrual period.
+
+|numberOfPregnancies
+|[0..1]
+|Integer
+|Total number of pregnancies the patient had.
+
+|numberOfInducedAbortions
+|[0..1]
+|Integer
+|Number of induced abortions the patient had.
+
+|numberOfBirths
+|[0..1]
+|Integer
+|Total number of births the patient had.
+
+|numberOfOtherAbortions
+|[0..1]
+|Integer
+|Number of abortions due to other reasons.
+
+|numberOfEctopicPregnancies
+|[0..1]
+|Integer
+|Number of ectopic pregnancies, developed outside the uterus.
+
+|===
\ No newline at end of file
diff --git a/solution-strategy/business-modules/sti-protection/subdir/domain/enum-test-type.adoc b/solution-strategy/business-modules/sti-protection/subdir/domain/enum-test-type.adoc
new file mode 100644
index 0000000..3ce80ec
--- /dev/null
+++ b/solution-strategy/business-modules/sti-protection/subdir/domain/enum-test-type.adoc
@@ -0,0 +1,22 @@
+=== Enumeration TestType
+
+Specifies the type of laboratory tests conducted during examination.
+
+.Attributes of `TestType`
+[cols="1,3"]
+|===
+|Value | Description
+
+|WESTERN_BLOT
+|Specifies that the Western Blot method was used.
+
+|P24
+|Specifies that a p24 antigen test was used.
+
+|PCR
+|Specifies that a PCR test was performed.
+
+|OTHER
+|Represents any test type not listed.
+
+|===
\ No newline at end of file
diff --git a/solution-strategy/business-modules/sti-protection/uml/domain/sti-protection-domain-model.puml b/solution-strategy/business-modules/sti-protection/uml/domain/sti-protection-domain-model.puml
index ee52a78..815044c 100644
--- a/solution-strategy/business-modules/sti-protection/uml/domain/sti-protection-domain-model.puml
+++ b/solution-strategy/business-modules/sti-protection/uml/domain/sti-protection-domain-model.puml
@@ -29,6 +29,50 @@ class AppointmentHistoryEntry #Lightyellow {
     appointmentStatus: AppointmentStatus [1..1]
 }
 
+class Consultation #Lightyellow {
+}
+
+class GeneralSection #Lightyellow {
+    mainReason: String [0..1]
+    furtherGenderInfo: String [0..1]
+    hasSufficientGermanLanguageSkills: Boolean [0..1]
+    isIlliterate: Boolean [0..1]
+    otherKnownLanguages: String [0..1]
+    hasHealthInsurance: Boolean [0..1]
+    hasGermanHealthInsurance: Boolean [0..1]
+    hasInsecureResidence: Boolean [0..1]
+    hasSymptoms: Boolean [0..1]
+    symptoms: String [0..1]
+    drugUse: String [0..1]
+    referral: String [0..1]
+    notes: String [0..1]
+}
+
+class PregnancySection #Lightyellow {
+    hasPregnancyRelatedInfo: Boolean [0..1]
+    lastCytologyTest: LocalDate [0..1]
+    startOfLastPeriod: LocalDate [0..1]
+    numberOfPregnancies: Integer [0..1]
+    numberOfInducedAbortions: Integer [0..1]
+    numberOfBirths: Integer [0..1]
+    numberOfOtherAbortions: Integer [0..1]
+    numberOfEctopicPregnancies: Integer [0..1]
+}
+
+class Diagnosis #Lightyellow {
+    results: String [0..1]
+    testTypes: TestType [0..1]
+    otherTestTypeName: String [0..1]
+    generalRemarks: String [0..1]
+    resultsCommunicated: Boolean [0..1]
+}
+
+class Medication #Lightyellow {
+    name: String [0..1]
+    dose: String [0..1]
+    prescriptionDate: LocalDate [0..1]
+}
+
 class Examination #Lightyellow {
     hepA: Boolean [0..1]
     hepB: Boolean [0..1]
@@ -301,6 +345,13 @@ enum SexWorkLocation #Lightyellow {
       OTHER
 }
 
+enum TestType #Lightyellow {
+    WESTERN_BLOT
+    P24
+    PCR
+    OTHER
+}
+
 enum Vaccination #Lightyellow {
     HEPATITIS_A,
     HEPATITIS_B,
@@ -320,6 +371,8 @@ enum WaitingStatus #Lightyellow {
 StiProtectionProcedure -up-|> Procedure
 StiProtectionProcedure "1..1" *-- "1..1"  MedicalHistory
 StiProtectionProcedure "1..1" *-- "0..1"  Appointment
+StiProtectionProcedure "1..1" *-- "1..1"  Consultation
+StiProtectionProcedure "1..1" *-- "1..1"  Diagnosis
 StiProtectionProcedure "1..1" *-- "0..1"  UserDefinedAppointment
 StiProtectionProcedure "1..1" *-- "0..1"  AppointmentHistoryEntry
 StiProtectionProcedure "1..1" *-- "0..1"  WaitingRoom
@@ -336,11 +389,12 @@ MedicalHistory *-u- RiskFactor: "0..1"
 SexWorkMedicalHistory *--  SexWorkRiskContact : "0..1"
 StiProtectionProcedure "1..1" *-- "1..1"  RapidTestExamination
 RapidTestExamination *-- RapidTestData
-
 StiProtectionProcedure "1..1" *-- "1..1"  LaboratoryTestExamination
 LaboratoryTestExamination *-- LaboratoryTest
 LaboratoryTestExamination *-- HepatitisLaboratoryTest
-
+Consultation *-u- GeneralSection: "0..1"
+Consultation *-u- PregnancySection: "0..1"
+Diagnosis *-u- Medication: "0..*"
 
 
 
-- 
GitLab