From de2f21d6a3ccbf2714b4226c938c262006b8f852 Mon Sep 17 00:00:00 2001
From: VHofman <vincent.hofman@kereval.com>
Date: Wed, 26 Jun 2024 10:01:36 +0200
Subject: [PATCH] Added accept parameter checking

---
 ...tBundle-PostRequest-ValidationProfile.json | 26 +++++++++++++++++++
 ...ists-GetPostRequest-ValidationProfile.json | 26 +++++++++++++++++++
 ...nces-GetPostRequest-ValidationProfile.json | 26 +++++++++++++++++++
 ...8-Retrieve Document-ValidationProfile.json | 26 +++++++++++++++++++
 4 files changed, 104 insertions(+)

diff --git a/EHS/CH-MHD/CH_ITI-65-ProvideDocumentBundle-PostRequest-ValidationProfile.json b/EHS/CH-MHD/CH_ITI-65-ProvideDocumentBundle-PostRequest-ValidationProfile.json
index de7f62a..f37a977 100644
--- a/EHS/CH-MHD/CH_ITI-65-ProvideDocumentBundle-PostRequest-ValidationProfile.json
+++ b/EHS/CH-MHD/CH_ITI-65-ProvideDocumentBundle-PostRequest-ValidationProfile.json
@@ -111,6 +111,32 @@
               "regex": "^(?!f{2})([\\da-f]{2})-(?!0{32})([\\da-f]{32})-(?!0{16})([\\da-f]{16})-([\\da-f]{2})$"
             }
           ]
+        },{
+          "selector": "request.headers('Accept').values",
+          "id": "Accept_parameter_presence",
+          "description": "The Accept parameter is mandatory.",
+          "requirementPriority": "MANDATORY",
+          "checksComposition": "oneOf",
+          "checks": [
+            {
+              "type": "OCCURRENCE",
+              "minOccurrence": 1,
+              "maxOccurrence": 1
+            }
+          ]
+        },
+        {
+          "selector": "request.headers('Accept').values",
+          "id": "Accept_parameter_value",
+          "description": "Accept parameter's value SHALL be as defined in https://build.fhir.org/http.html#mime-type.",
+          "requirementPriority": "MANDATORY",
+          "checksComposition": "oneOf",
+          "checks": [
+            {
+              "type": "REGEX",
+              "regex": "^application\\/fhir\\+(xml|json|turtle)(;( )?fhirVersion=\\d\\.\\d)?$"
+            }
+          ]
         },
         {
           "selector": "request.uri.queryParams('_format').values",
diff --git a/EHS/CH-MHD/CH_ITI-66-FindDocumentLists-GetPostRequest-ValidationProfile.json b/EHS/CH-MHD/CH_ITI-66-FindDocumentLists-GetPostRequest-ValidationProfile.json
index d099f07..7d2c637 100644
--- a/EHS/CH-MHD/CH_ITI-66-FindDocumentLists-GetPostRequest-ValidationProfile.json
+++ b/EHS/CH-MHD/CH_ITI-66-FindDocumentLists-GetPostRequest-ValidationProfile.json
@@ -114,6 +114,32 @@
           "regex": "^(?!f{2})([\\da-f]{2})-(?!0{32})([\\da-f]{32})-(?!0{16})([\\da-f]{16})-([\\da-f]{2})$"
         }
       ]
+    },{
+      "selector": "request.headers('Accept').values",
+      "id": "Accept_parameter_presence",
+      "description": "The Accept parameter is mandatory.",
+      "requirementPriority": "MANDATORY",
+      "checksComposition": "oneOf",
+      "checks": [
+        {
+          "type": "OCCURRENCE",
+          "minOccurrence": 1,
+          "maxOccurrence": 1
+        }
+      ]
+    },
+    {
+      "selector": "request.headers('Accept').values",
+      "id": "Accept_parameter_value",
+      "description": "Accept parameter's value SHALL be as defined in https://build.fhir.org/http.html#mime-type.",
+      "requirementPriority": "MANDATORY",
+      "checksComposition": "oneOf",
+      "checks": [
+        {
+          "type": "REGEX",
+          "regex": "^application\\/fhir\\+(xml|json|turtle)(;( )?fhirVersion=\\d\\.\\d)?$"
+        }
+      ]
     },
     {
       "selector": "request.uri.queryParams('code').values",
diff --git a/EHS/CH-MHD/CH_ITI-67-FindDocumentReferences-GetPostRequest-ValidationProfile.json b/EHS/CH-MHD/CH_ITI-67-FindDocumentReferences-GetPostRequest-ValidationProfile.json
index dafb01c..5ac5c96 100644
--- a/EHS/CH-MHD/CH_ITI-67-FindDocumentReferences-GetPostRequest-ValidationProfile.json
+++ b/EHS/CH-MHD/CH_ITI-67-FindDocumentReferences-GetPostRequest-ValidationProfile.json
@@ -114,6 +114,32 @@
           "regex": "^(?!f{2})([\\da-f]{2})-(?!0{32})([\\da-f]{32})-(?!0{16})([\\da-f]{16})-([\\da-f]{2})$"
         }
       ]
+    },{
+      "selector": "request.headers('Accept').values",
+      "id": "Accept_parameter_presence",
+      "description": "The Accept parameter is mandatory.",
+      "requirementPriority": "MANDATORY",
+      "checksComposition": "oneOf",
+      "checks": [
+        {
+          "type": "OCCURRENCE",
+          "minOccurrence": 1,
+          "maxOccurrence": 1
+        }
+      ]
+    },
+    {
+      "selector": "request.headers('Accept').values",
+      "id": "Accept_parameter_value",
+      "description": "Accept parameter's value SHALL be as defined in https://build.fhir.org/http.html#mime-type.",
+      "requirementPriority": "MANDATORY",
+      "checksComposition": "oneOf",
+      "checks": [
+        {
+          "type": "REGEX",
+          "regex": "^application\\/fhir\\+(xml|json|turtle)(;( )?fhirVersion=\\d\\.\\d)?$"
+        }
+      ]
     },
     {
       "selector": "request.uri.queryParams('author.given').values",
diff --git a/EHS/CH-MHD/CH_ITI-68-Retrieve Document-ValidationProfile.json b/EHS/CH-MHD/CH_ITI-68-Retrieve Document-ValidationProfile.json
index 675d598..0fe4ec0 100644
--- a/EHS/CH-MHD/CH_ITI-68-Retrieve Document-ValidationProfile.json	
+++ b/EHS/CH-MHD/CH_ITI-68-Retrieve Document-ValidationProfile.json	
@@ -111,6 +111,32 @@
           "regex": "^(?!f{2})([\\da-f]{2})-(?!0{32})([\\da-f]{32})-(?!0{16})([\\da-f]{16})-([\\da-f]{2})$"
         }
       ]
+    },{
+      "selector": "request.headers('Accept').values",
+      "id": "Accept_parameter_presence",
+      "description": "The Accept parameter is mandatory.",
+      "requirementPriority": "MANDATORY",
+      "checksComposition": "oneOf",
+      "checks": [
+        {
+          "type": "OCCURRENCE",
+          "minOccurrence": 1,
+          "maxOccurrence": 1
+        }
+      ]
+    },
+    {
+      "selector": "request.headers('Accept').values",
+      "id": "Accept_parameter_value",
+      "description": "Accept parameter's value SHALL be as defined in https://build.fhir.org/http.html#mime-type.",
+      "requirementPriority": "MANDATORY",
+      "checksComposition": "oneOf",
+      "checks": [
+        {
+          "type": "REGEX",
+          "regex": "^application\\/fhir\\+(xml|json|turtle)(;( )?fhirVersion=\\d\\.\\d)?$"
+        }
+      ]
     }
   ]
 }
\ No newline at end of file
-- 
GitLab