From c9d007a25a103684e334c3dbec03729ce9186458 Mon Sep 17 00:00:00 2001
From: VHofman <vincent.hofman@kereval.com>
Date: Wed, 27 Mar 2024 16:58:55 +0100
Subject: [PATCH] Add IHE PDQm validation profiles + sample + doc

---
 ... Demographics Query-ValidationProfile.json | 499 ++++++++++++++++++
 ...mographics Retrieve-ValidationProfile.json |  61 +++
 IHE Validation profiles/PDQm/README.md        |  61 +++
 .../PDQm - 001 - valid - emptyQuery.txt       |   2 +
 .../PDQm - 002 - valid - emptyQuery.txt       |   2 +
 .../PDQm/ITI-78/PDQm - 003 - valid - _id.txt  |   5 +
 .../ITI-78/PDQm - 004 - valid - active.txt    |   5 +
 .../ITI-78/PDQm - 005 - valid - family.txt    |  11 +
 .../ITI-78/PDQm - 006 - valid - given.txt     |  11 +
 .../PDQm - 007 - valid - identifier.txt       |   2 +
 ...8 - valid - multiple identifer domains.txt |   2 +
 .../ITI-78/PDQm - 009 - valid - telecom.txt   |   2 +
 .../ITI-78/PDQm - 010 - valid - birthdate.txt |  29 +
 .../ITI-78/PDQm - 011 - valid - address.txt   |  12 +
 .../PDQm - 012 - valid - address-city.txt     |  14 +
 .../PDQm - 013 - valid - address-country.txt  |  12 +
 ...DQm - 014 - valid - address-postalcode.txt |  12 +
 .../PDQm - 015 - valid - address-state.txt    |  12 +
 .../ITI-78/PDQm - 016 - valid - gender.txt    |  23 +
 ...PDQm - 017 - valid - mothersMaidenName.txt |  11 +
 .../PDQm - 018 - valid - _format xml.txt      |   2 +
 .../PDQm - 019 - valid - _format json.txt     |   2 +
 .../PDQm - 020 - valid - family & gender .txt |   2 +
 ...DQm - 021 - valid - birthdate & family.txt |   2 +
 .../ITI-78/PDQm - 022 - valid - Retrieve.txt  |   2 +
 .../PDQm - 023 - invalid - Bad method.txt     |   2 +
 .../PDQm - 024 - invalid -  Bad URI.txt       |   2 +
 ... - invalid -  with 2 active parameters.txt |   2 +
 ...032 - invalid -  with bad active value.txt |   2 +
 ...nvalid -  With 2 identifier parameters.txt |   2 +
 ...- invalid -  With bad identifier value.txt |   2 +
 ...d -  With bad identifier domains token.txt |   2 +
 ... invalid -  With 2 birthdateparameters.txt |   2 +
 ...- invalid -  With bad birthdate format.txt |   2 +
 ...invalid -  With bad birthdate modifier.txt |   2 +
 ...- invalid -  With 2 address parameters.txt |   2 +
 ...alid -  With 2 address-city parameters.txt |   2 +
 ...d -  With 2 address-country parameters.txt |   2 +
 ...-  With 2 address-postalcode parameter.txt |   2 +
 ...lid -  With 2 address-state parameters.txt |   2 +
 ... - invalid -  With 2 gender parameters.txt |   2 +
 ...045 - invalid -  With bad gender value.txt |   2 +
 ... -  With 2 mothersMaidenNameparameters.txt |   2 +
 ...- invalid -  With 2 _format parameters.txt |   2 +
 ...48 - invalid -  With bad _format value.txt |   2 +
 45 files changed, 838 insertions(+)
 create mode 100644 IHE Validation profiles/PDQm/ITI-78-Patient-Mobile Patient Demographics Query-ValidationProfile.json
 create mode 100644 IHE Validation profiles/PDQm/ITI-78-Patient-Mobile Patient Demographics Retrieve-ValidationProfile.json
 create mode 100644 IHE Validation profiles/PDQm/README.md
 create mode 100644 IHE Validation profiles/samples/PDQm/ITI-78/PDQm - 001 - valid - emptyQuery.txt
 create mode 100644 IHE Validation profiles/samples/PDQm/ITI-78/PDQm - 002 - valid - emptyQuery.txt
 create mode 100644 IHE Validation profiles/samples/PDQm/ITI-78/PDQm - 003 - valid - _id.txt
 create mode 100644 IHE Validation profiles/samples/PDQm/ITI-78/PDQm - 004 - valid - active.txt
 create mode 100644 IHE Validation profiles/samples/PDQm/ITI-78/PDQm - 005 - valid - family.txt
 create mode 100644 IHE Validation profiles/samples/PDQm/ITI-78/PDQm - 006 - valid - given.txt
 create mode 100644 IHE Validation profiles/samples/PDQm/ITI-78/PDQm - 007 - valid - identifier.txt
 create mode 100644 IHE Validation profiles/samples/PDQm/ITI-78/PDQm - 008 - valid - multiple identifer domains.txt
 create mode 100644 IHE Validation profiles/samples/PDQm/ITI-78/PDQm - 009 - valid - telecom.txt
 create mode 100644 IHE Validation profiles/samples/PDQm/ITI-78/PDQm - 010 - valid - birthdate.txt
 create mode 100644 IHE Validation profiles/samples/PDQm/ITI-78/PDQm - 011 - valid - address.txt
 create mode 100644 IHE Validation profiles/samples/PDQm/ITI-78/PDQm - 012 - valid - address-city.txt
 create mode 100644 IHE Validation profiles/samples/PDQm/ITI-78/PDQm - 013 - valid - address-country.txt
 create mode 100644 IHE Validation profiles/samples/PDQm/ITI-78/PDQm - 014 - valid - address-postalcode.txt
 create mode 100644 IHE Validation profiles/samples/PDQm/ITI-78/PDQm - 015 - valid - address-state.txt
 create mode 100644 IHE Validation profiles/samples/PDQm/ITI-78/PDQm - 016 - valid - gender.txt
 create mode 100644 IHE Validation profiles/samples/PDQm/ITI-78/PDQm - 017 - valid - mothersMaidenName.txt
 create mode 100644 IHE Validation profiles/samples/PDQm/ITI-78/PDQm - 018 - valid - _format xml.txt
 create mode 100644 IHE Validation profiles/samples/PDQm/ITI-78/PDQm - 019 - valid - _format json.txt
 create mode 100644 IHE Validation profiles/samples/PDQm/ITI-78/PDQm - 020 - valid - family & gender .txt
 create mode 100644 IHE Validation profiles/samples/PDQm/ITI-78/PDQm - 021 - valid - birthdate & family.txt
 create mode 100644 IHE Validation profiles/samples/PDQm/ITI-78/PDQm - 022 - valid - Retrieve.txt
 create mode 100644 IHE Validation profiles/samples/PDQm/ITI-78/PDQm - 023 - invalid - Bad method.txt
 create mode 100644 IHE Validation profiles/samples/PDQm/ITI-78/PDQm - 024 - invalid -  Bad URI.txt
 create mode 100644 IHE Validation profiles/samples/PDQm/ITI-78/PDQm - 031 - invalid -  with 2 active parameters.txt
 create mode 100644 IHE Validation profiles/samples/PDQm/ITI-78/PDQm - 032 - invalid -  with bad active value.txt
 create mode 100644 IHE Validation profiles/samples/PDQm/ITI-78/PDQm - 033 - invalid -  With 2 identifier parameters.txt
 create mode 100644 IHE Validation profiles/samples/PDQm/ITI-78/PDQm - 034 - invalid -  With bad identifier value.txt
 create mode 100644 IHE Validation profiles/samples/PDQm/ITI-78/PDQm - 035 - invalid -  With bad identifier domains token.txt
 create mode 100644 IHE Validation profiles/samples/PDQm/ITI-78/PDQm - 036 - invalid -  With 2 birthdateparameters.txt
 create mode 100644 IHE Validation profiles/samples/PDQm/ITI-78/PDQm - 037 - invalid -  With bad birthdate format.txt
 create mode 100644 IHE Validation profiles/samples/PDQm/ITI-78/PDQm - 038 - invalid -  With bad birthdate modifier.txt
 create mode 100644 IHE Validation profiles/samples/PDQm/ITI-78/PDQm - 039 - invalid -  With 2 address parameters.txt
 create mode 100644 IHE Validation profiles/samples/PDQm/ITI-78/PDQm - 040 - invalid -  With 2 address-city parameters.txt
 create mode 100644 IHE Validation profiles/samples/PDQm/ITI-78/PDQm - 041 - invalid -  With 2 address-country parameters.txt
 create mode 100644 IHE Validation profiles/samples/PDQm/ITI-78/PDQm - 042 - invalid -  With 2 address-postalcode parameter.txt
 create mode 100644 IHE Validation profiles/samples/PDQm/ITI-78/PDQm - 043 - invalid -  With 2 address-state parameters.txt
 create mode 100644 IHE Validation profiles/samples/PDQm/ITI-78/PDQm - 044 - invalid -  With 2 gender parameters.txt
 create mode 100644 IHE Validation profiles/samples/PDQm/ITI-78/PDQm - 045 - invalid -  With bad gender value.txt
 create mode 100644 IHE Validation profiles/samples/PDQm/ITI-78/PDQm - 046 - invalid -  With 2 mothersMaidenNameparameters.txt
 create mode 100644 IHE Validation profiles/samples/PDQm/ITI-78/PDQm - 047 - invalid -  With 2 _format parameters.txt
 create mode 100644 IHE Validation profiles/samples/PDQm/ITI-78/PDQm - 048 - invalid -  With bad _format value.txt

diff --git a/IHE Validation profiles/PDQm/ITI-78-Patient-Mobile Patient Demographics Query-ValidationProfile.json b/IHE Validation profiles/PDQm/ITI-78-Patient-Mobile Patient Demographics Query-ValidationProfile.json
new file mode 100644
index 0000000..ecde126
--- /dev/null
+++ b/IHE Validation profiles/PDQm/ITI-78-Patient-Mobile Patient Demographics Query-ValidationProfile.json	
@@ -0,0 +1,499 @@
+{
+  "profileType": "HTTPREQUEST",
+  "id": "ITI-78-Patient-PDQmQuery-ValidationProfile",
+  "name": "ITI-78-Patient-Mobile Patient Demographics Query-ValidationProfile",
+  "description": "Validation Profile for validating a PDQm ITI-78 query.",
+  "context": "IHE",
+  "assertions": [
+    {
+      "selector": "request.method",
+      "id": "GETMethodChecking",
+      "description": "HTTP method shall be GET or POST",
+      "requirementPriority": "MANDATORY",
+      "checksComposition": "oneOf",
+      "checks": [
+        {
+          "type": "CLOSEDLIST",
+          "values": [
+            "GET",
+            "POST"
+          ]
+        }
+      ]
+    },
+    {
+      "selector": "request.version",
+      "id": "HTTP1VersionChecking",
+      "description": "The HTTP version shall be HTTP/1.1",
+      "requirementPriority": "MANDATORY",
+      "checksComposition": "oneOf",
+      "checks": [
+        {
+          "type": "FIXEDVALUE",
+          "fixedValue": "HTTP/1.1"
+        }
+      ]
+    },
+    {
+      "selector": "request.uri.path",
+      "id": "URIRegexChecking",
+      "description": "URI path of the request shall be followed by the Patient resource",
+      "requirementPriority": "MANDATORY",
+      "checksComposition": "oneOf",
+      "checks": [
+        {
+          "type": "REGEX",
+          "regex": "^(\\S)+Patient$"
+        }
+      ]
+    },
+    {
+      "selector": "request.headers('Host').values",
+      "id": "HostChecking",
+      "description": "Host Shall be a server name; Regex: ^(http[s]?:\\/\\/)?[a-zA-Z0-9.\\-\\/]+(:(\\d)+)?$",
+      "requirementPriority": "MANDATORY",
+      "checksComposition": "oneOf",
+      "checks": [
+        {
+          "type": "REGEX",
+          "regex": "^(http[s]?:\\/\\/)?[a-zA-Z0-9.\\-\\/]+(:(\\d)+)?$"
+        }
+      ]
+    },
+    {
+      "selector": "request.uri.queryParams('_id').values",
+      "id": "_id_parameter_presence",
+      "description": "_id parameter can be used only once.",
+      "requirementPriority": "MANDATORY",
+      "checksComposition": "oneOf",
+      "checks": [
+        {
+          "type": "OCCURRENCE",
+          "minOccurrence": 0,
+          "maxOccurrence": 1
+        }
+      ]
+    },
+    {
+      "selector": "request.uri.queryParams('_id').values",
+      "id": "_id_parameter_value",
+      "description": "_id parameter is a token.",
+      "requirementPriority": "MANDATORY",
+      "checksComposition": "oneOf",
+      "applyIf": "request.uri.queryParams('_id').values.size() > 0",
+      "checks": [
+        {
+          "type": "REGEX",
+          "regex": "^\\S+$"
+        }
+      ]
+    },
+    {
+      "selector": "request.uri.queryParams('active').values",
+      "id": "active_parameter_presence",
+      "description": "active parameter can be used only once.",
+      "requirementPriority": "MANDATORY",
+      "checksComposition": "oneOf",
+      "checks": [
+        {
+          "type": "OCCURRENCE",
+          "minOccurrence": 0,
+          "maxOccurrence": 1
+        }
+      ]
+    },
+    {
+      "selector": "request.uri.queryParams('active').values",
+      "id": "active_parameter_value",
+      "description": "active parameter is a boolean and accept true or false values.",
+      "requirementPriority": "MANDATORY",
+      "checksComposition": "oneOf",
+      "applyIf": "request.uri.queryParams('active').values.size() > 0",
+      "checks": [
+        {
+          "type": "CLOSEDLIST",
+          "values": [
+            "true",
+            "false"
+          ]
+        }
+      ]
+    },
+    {
+      "selector": "request.uri.queryParams('family').values",
+      "id": "family_parameter_presence",
+      "description": "family parameter can be used only once.",
+      "requirementPriority": "MANDATORY",
+      "checksComposition": "oneOf",
+      "checks": [
+        {
+          "type": "OCCURRENCE",
+          "minOccurrence": 0,
+          "maxOccurrence": 1
+        }
+      ]
+    },
+    {
+      "selector": "request.uri.queryParams('family').values",
+      "id": "family_parameter_value",
+      "description": "family parameter's value is made of items composed of string.",
+      "requirementPriority": "MANDATORY",
+      "checksComposition": "oneOf",
+      "applyIf": "request.uri.queryParams('family').values.size() > 0",
+      "checks": [
+        {
+          "type": "REGEX",
+          "regex": "^([\\w,]|(-\\w))+$"
+        }
+      ]
+    },
+    {
+      "selector": "request.uri.queryParams('given').values",
+      "id": "given_parameter_presence",
+      "description": "given parameter can be used only once.",
+      "requirementPriority": "MANDATORY",
+      "checksComposition": "oneOf",
+      "checks": [
+        {
+          "type": "OCCURRENCE",
+          "minOccurrence": 0,
+          "maxOccurrence": 1
+        }
+      ]
+    },
+    {
+      "selector": "request.uri.queryParams('given').values",
+      "id": "given_parameter_value",
+      "description": "given parameter's value is made of items composed of string.",
+      "requirementPriority": "MANDATORY",
+      "checksComposition": "oneOf",
+      "applyIf": "request.uri.queryParams('given').values.size() > 0",
+      "checks": [
+        {
+          "type": "REGEX",
+          "regex": "^[\\s\\S]+$"
+        }
+      ]
+    },
+    {
+      "selector": "request.uri.queryParams('identifier').values",
+      "id": "identifier_parameter_presence",
+      "description": "identifier parameter can be used only once.",
+      "requirementPriority": "MANDATORY",
+      "checksComposition": "oneOf",
+      "checks": [
+        {
+          "type": "OCCURRENCE",
+          "minOccurrence": 0,
+          "maxOccurrence": 1
+        }
+      ]
+    },
+    {
+      "selector": "request.uri.queryParams('identifier').values",
+      "id": "identifier_parameter_value",
+      "description": "identifier parameter's value is made of items composed of string.",
+      "requirementPriority": "MANDATORY",
+      "checksComposition": "oneOf",
+      "applyIf": "request.uri.queryParams('identifier').values.size() > 0",
+      "checks": [
+        {
+          "type": "REGEX",
+          "regex": "^\\S+$"
+        }
+      ]
+    },
+    {
+      "selector": "request.uri.queryParams('telecom').values",
+      "id": "telecom_parameter_presence",
+      "description": "telecom parameter can be used only once.",
+      "requirementPriority": "MANDATORY",
+      "checksComposition": "oneOf",
+      "checks": [
+        {
+          "type": "OCCURRENCE",
+          "minOccurrence": 0,
+          "maxOccurrence": 1
+        }
+      ]
+    },
+    {
+      "selector": "request.uri.queryParams('telecom').values",
+      "id": "telecom_parameter_value",
+      "description": "telecom parameter is made of a string.",
+      "requirementPriority": "MANDATORY",
+      "checksComposition": "oneOf",
+      "applyIf": "request.uri.queryParams('telecom').values.size() > 0",
+      "checks": [
+        {
+          "type": "REGEX",
+          "regex": "^[\\s\\S]+$"
+        }
+      ]
+    },
+    {
+      "selector": "request.uri.queryParams('birthdate').values",
+      "id": "birthdate_parameter_presence",
+      "description": "birthdate parameter can be used only once.",
+      "requirementPriority": "MANDATORY",
+      "checksComposition": "oneOf",
+      "checks": [
+        {
+          "type": "OCCURRENCE",
+          "minOccurrence": 0,
+          "maxOccurrence": 1
+        }
+      ]
+    },
+    {
+      "selector": "request.uri.queryParams('birthdate').values",
+      "id": "birthdate_parameter_value",
+      "description": "birthdate parameter is made of a date eventually preceded by a modifier.",
+      "requirementPriority": "MANDATORY",
+      "checksComposition": "oneOf",
+      "applyIf": "request.uri.queryParams('birthdate').values.size() > 0",
+      "checks": [
+        {
+          "type": "REGEX",
+          "regex": "^(eq|ne|lt|gt|ge|le|sa|eb|ap)?([0-9]([0-9]([0-9][1-9]|[1-9]0)|[1-9]00)|[1-9]000)(-(0[1-9]|1[0-2])(-(0[1-9]|[1-2][0-9]|3[0-1]))?)?$"
+        }
+      ]
+    },
+    {
+      "selector": "request.uri.queryParams('address').values",
+      "id": "address_parameter_presence",
+      "description": "address parameter can be used only once.",
+      "requirementPriority": "MANDATORY",
+      "checksComposition": "oneOf",
+      "checks": [
+        {
+          "type": "OCCURRENCE",
+          "minOccurrence": 0,
+          "maxOccurrence": 1
+        }
+      ]
+    },
+    {
+      "selector": "request.uri.queryParams('address').values",
+      "id": "address_parameter_value",
+      "description": "address parameter is made of a string.",
+      "requirementPriority": "MANDATORY",
+      "checksComposition": "oneOf",
+      "applyIf": "request.uri.queryParams('address').values.size() > 0",
+      "checks": [
+        {
+          "type": "REGEX",
+          "regex": "^[\\s\\S]+$"
+        }
+      ]
+    },
+    {
+      "selector": "request.uri.queryParams('address-city').values",
+      "id": "address-city_parameter_presence",
+      "description": "address-city parameter can be used only once.",
+      "requirementPriority": "MANDATORY",
+      "checksComposition": "oneOf",
+      "checks": [
+        {
+          "type": "OCCURRENCE",
+          "minOccurrence": 0,
+          "maxOccurrence": 1
+        }
+      ]
+    },
+    {
+      "selector": "request.uri.queryParams('address-city').values",
+      "id": "address-city_parameter_value",
+      "description": "address-city parameter is made of a string.",
+      "requirementPriority": "MANDATORY",
+      "checksComposition": "oneOf",
+      "applyIf": "request.uri.queryParams('address-city').values.size() > 0",
+      "checks": [
+        {
+          "type": "REGEX",
+          "regex": "^[\\s\\S]+$"
+        }
+      ]
+    },
+    {
+      "selector": "request.uri.queryParams('address-country').values",
+      "id": "address-country_parameter_presence",
+      "description": "address-country parameter can be used only once.",
+      "requirementPriority": "MANDATORY",
+      "checksComposition": "oneOf",
+      "checks": [
+        {
+          "type": "OCCURRENCE",
+          "minOccurrence": 0,
+          "maxOccurrence": 1
+        }
+      ]
+    },
+    {
+      "selector": "request.uri.queryParams('address-country').values",
+      "id": "address-country_parameter_value",
+      "description": "address-country parameter is made of a string.",
+      "requirementPriority": "MANDATORY",
+      "checksComposition": "oneOf",
+      "applyIf": "request.uri.queryParams('address-country').values.size() > 0",
+      "checks": [
+        {
+          "type": "REGEX",
+          "regex": "^[\\s\\S]+$"
+        }
+      ]
+    },
+    {
+      "selector": "request.uri.queryParams('address-postalcode').values",
+      "id": "address-postalcode_parameter_presence",
+      "description": "address-postalcode parameter can be used only once.",
+      "requirementPriority": "MANDATORY",
+      "checksComposition": "oneOf",
+      "checks": [
+        {
+          "type": "OCCURRENCE",
+          "minOccurrence": 0,
+          "maxOccurrence": 1
+        }
+      ]
+    },
+    {
+      "selector": "request.uri.queryParams('address-postalcode').values",
+      "id": "address-postalcode_parameter_value",
+      "description": "address-postalcode parameter is made of a string.",
+      "requirementPriority": "MANDATORY",
+      "checksComposition": "oneOf",
+      "applyIf": "request.uri.queryParams('address-postalcode').values.size() > 0",
+      "checks": [
+        {
+          "type": "REGEX",
+          "regex": "^[\\s\\S]+$"
+        }
+      ]
+    },
+    {
+      "selector": "request.uri.queryParams('address-state').values",
+      "id": "address-state_parameter_presence",
+      "description": "address-state parameter can be used only once.",
+      "requirementPriority": "MANDATORY",
+      "checksComposition": "oneOf",
+      "checks": [
+        {
+          "type": "OCCURRENCE",
+          "minOccurrence": 0,
+          "maxOccurrence": 1
+        }
+      ]
+    },
+    {
+      "selector": "request.uri.queryParams('address-state').values",
+      "id": "address-state_parameter_value",
+      "description": "address-state parameter is made of a string.",
+      "requirementPriority": "MANDATORY",
+      "checksComposition": "oneOf",
+      "applyIf": "request.uri.queryParams('address-state').values.size() > 0",
+      "checks": [
+        {
+          "type": "REGEX",
+          "regex": "^[\\s\\S]+$"
+        }
+      ]
+    },
+    {
+      "selector": "request.uri.queryParams('gender').values",
+      "id": "gender_parameter_presence",
+      "description": "gender parameter can be used only once.",
+      "requirementPriority": "MANDATORY",
+      "checksComposition": "oneOf",
+      "checks": [
+        {
+          "type": "OCCURRENCE",
+          "minOccurrence": 0,
+          "maxOccurrence": 1
+        }
+      ]
+    },
+    {
+      "selector": "request.uri.queryParams('gender').values",
+      "id": "gender_parameter_value",
+      "description": "gender parameter's value shall be either json or xml.",
+      "requirementPriority": "MANDATORY",
+      "checksComposition": "oneOf",
+      "applyIf": "request.uri.queryParams('gender').values.size() > 0",
+      "checks": [
+        {
+          "type": "CLOSEDLIST",
+          "values": [
+            "male",
+            "Male",
+            "female",
+            "Female",
+            "other",
+            "Other",
+            "unknown",
+            "Unknown"
+          ]
+        }
+      ]
+    },
+    {
+      "selector": "request.uri.queryParams('mothersMaidenName').values",
+      "id": "mothersMaidenName_parameter_presence",
+      "description": "mothersMaidenName parameter can be used only once.",
+      "requirementPriority": "MANDATORY",
+      "checksComposition": "oneOf",
+      "checks": [
+        {
+          "type": "OCCURRENCE",
+          "minOccurrence": 0,
+          "maxOccurrence": 1
+        }
+      ]
+    },
+    {
+      "selector": "request.uri.queryParams('mothersMaidenName').values",
+      "id": "mothersMaidenName_parameter_value",
+      "description": "mothersMaidenName parameter is made of a string.",
+      "requirementPriority": "MANDATORY",
+      "checksComposition": "oneOf",
+      "applyIf": "request.uri.queryParams('mothersMaidenName').values.size() > 0",
+      "checks": [
+        {
+          "type": "REGEX",
+          "regex": "^[\\s\\S]+$"
+        }
+      ]
+    },
+    {
+      "selector": "request.uri.queryParams('_format').values",
+      "id": "_format_parameter_presence",
+      "description": "_format parameter can be used only once.",
+      "requirementPriority": "MANDATORY",
+      "checksComposition": "oneOf",
+      "checks": [
+        {
+          "type": "OCCURRENCE",
+          "minOccurrence": 0,
+          "maxOccurrence": 1
+        }
+      ]
+    },
+    {
+      "selector": "request.uri.queryParams('_format').values",
+      "id": "_format_parameter_value",
+      "description": "_format parameter's value shall be either json or xml.",
+      "requirementPriority": "MANDATORY",
+      "checksComposition": "oneOf",
+      "applyIf": "request.uri.queryParams('_format').values.size() > 0",
+      "checks": [
+        {
+          "type": "CLOSEDLIST",
+          "values": [
+            "json",
+            "xml"
+          ]
+        }
+      ]
+    }
+  ]
+}
\ No newline at end of file
diff --git a/IHE Validation profiles/PDQm/ITI-78-Patient-Mobile Patient Demographics Retrieve-ValidationProfile.json b/IHE Validation profiles/PDQm/ITI-78-Patient-Mobile Patient Demographics Retrieve-ValidationProfile.json
new file mode 100644
index 0000000..7773f0f
--- /dev/null
+++ b/IHE Validation profiles/PDQm/ITI-78-Patient-Mobile Patient Demographics Retrieve-ValidationProfile.json	
@@ -0,0 +1,61 @@
+{
+  "profileType": "HTTPREQUEST",
+  "id": "ITI-78-Patient-PDQmRetrieve-ValidationProfile",
+  "name": "ITI-78-Patient-Mobile Patient Demographics Retrieve-ValidationProfile",
+  "description": "Validation Profile for validating a PDQm ITI-78 Retrieve.",
+  "context": "IHE",
+  "assertions": [
+    {
+      "selector": "request.method",
+      "id": "GETMethodChecking",
+      "description": "HTTP method shall be GET",
+      "requirementPriority": "MANDATORY",
+      "checksComposition": "oneOf",
+      "checks": [
+        {
+          "type": "FIXEDVALUE",
+          "fixedValue": "GET"
+        }
+      ]
+    },
+    {
+      "selector": "request.version",
+      "id": "HTTP1VersionChecking",
+      "description": "The HTTP version shall be HTTP/1.1",
+      "requirementPriority": "MANDATORY",
+      "checksComposition": "oneOf",
+      "checks": [
+        {
+          "type": "FIXEDVALUE",
+          "fixedValue": "HTTP/1.1"
+        }
+      ]
+    },
+    {
+      "selector": "request.uri.path",
+      "id": "URIRegexChecking",
+      "description": "URI path of the request shall be followed by the Patient resource",
+      "requirementPriority": "MANDATORY",
+      "checksComposition": "oneOf",
+      "checks": [
+        {
+          "type": "REGEX",
+          "regex": "^(\\S)+\\/Patient\\/(\\S)+$"
+        }
+      ]
+    },
+    {
+      "selector": "request.headers('Host').values",
+      "id": "HostChecking",
+      "description": "Host Shall be a server name; Regex: ^(http[s]?:\\/\\/)?[a-zA-Z0-9.\\-\\/]+(:(\\d)+)?$",
+      "requirementPriority": "MANDATORY",
+      "checksComposition": "oneOf",
+      "checks": [
+        {
+          "type": "REGEX",
+          "regex": "^(http[s]?:\\/\\/)?[a-zA-Z0-9.\\-\\/]+(:(\\d)+)?$"
+        }
+      ]
+    }
+  ]
+}
\ No newline at end of file
diff --git a/IHE Validation profiles/PDQm/README.md b/IHE Validation profiles/PDQm/README.md
new file mode 100644
index 0000000..8d6ecca
--- /dev/null
+++ b/IHE Validation profiles/PDQm/README.md	
@@ -0,0 +1,61 @@
+---
+title: PDQm HTTP Validation profiles' assertions 
+subtitle: List of all HTTP rules for PDQm/ITI-78
+authors: Vincent HOFMAN
+date: 2023-03-27
+---
+
+# PDQm Mobile Patient Demographics Query's validation profile
+
+## References
+This validation profile's documentation references:
+- [FHIR's Datatypes](https://build.fhir.org/datatypes.html)
+- [String type's modifiers](https://build.fhir.org/search.html#modifiers)
+
+## ITI-78 Search Query assertions
+
+|   id  |   Check's type |   Value |   Description    |
+|---    |---    |---    |---    |
+|   GETMethodChecking   |   CLOSEDLIST   |   [GET,POST] |   HTTP method shall be either GET or POST  |
+|   HTTP1VersionChecking   |   FIXEDVALUE  |   HTTP/1.1 |   The HTTP version shall be HTTP/1.1  |
+|   URIRegexChecking   |   REGEX   |   `^(\S)+Patient$` |   URI path of the request shall be followed by the PDQm resource  |
+|   HostChecking   |   REGEX   |   `^(http[s]?:\/\/)?[a-zA-Z0-9.\-\/]+(\:(\d)+)?$` |   Host Shall be a server name  |
+|   _id_parameter_presence   |   OCCURRENCE   |   0..1 |   _id parameter can be used only once. |
+|   _id_parameter_value   |   REGEX   |   `^\S+$` |   _id parameter is a token.  |
+|   active_parameter_presence   |   OCCURRENCE   |   0..1 |   active parameter can be used only once. |
+|   active_parameter_value   |   CLOSEDLIST   |   [true,false] |   active parameter is a boolean and accept true or false values.  |
+|   family_parameter_presence   |   OCCURRENCE   |   0..1 |   family parameter can be used only once, eventually suffixed by a modifier :contains, :exact or :text. |
+|   family_parameter_value   |   REGEX   |  `^[\s\S]+$`   | family parameter is made of a string.    |
+|   given_parameter_presence   |   OCCURRENCE   |   0..1 |   given parameter can be used only once, eventually suffixed by a modifier :contains, :exact or :text. |
+|   given_parameter_value   |   REGEX   |  `^[\s\S]+$`   | given parameter is made of a string.    |
+|   identifier_parameter_presence   |   OCCURRENCE   |   0..1 |   identifier parameter can be used only once. |
+|   identifier_parameter_value   |   REGEX   |   `^\S+$` |   identifier parameter is a token.  |
+|   telecom_parameter_presence   |   OCCURRENCE   |   0..1 |   telecom parameter can be used only once, eventually suffixed by a modifier :contains, :exact or :text. |
+|   telecom_parameter_value   |   REGEX   |  `^[\s\S]+$`   | telecom parameter is made of a string.    |.
+|   birthdate_parameter_presence   |   OCCURRENCE   |   0..1 |   birthdate parameter can be used only once. |
+|   birthdate_parameter_value   |   REGEX   |   `^(eq\|ne\|lt\|gt\|ge\|le\|sa\|eb\|ap)?([0-9]([0-9]([0-9][1-9]\|[1-9]0)\|[1-9]00)\|[1-9]000)(-(0[1-9]\|1[0-2])(-(0[1-9]\|[1-2][0-9]\|3[0-1]))?)?$` | birthdate parameter is made of a date eventually preceded by a modifier.    |
+|   address_parameter_presence   |   OCCURRENCE   |   0..1 |   address parameter can be used only once, eventually suffixed by a modifier :contains, :exact or :text. |
+|   address_parameter_value   |   REGEX   |  `^[\s\S]+$`   | address parameter is made of a string.    |
+|   address-city_parameter_presence   |   OCCURRENCE   |   0..1 |   address-city parameter can be used only once, eventually suffixed by a modifier :contains, :exact or :text. |
+|   address-city_parameter_value   |   REGEX   |  `^[\s\S]+$`   | address-city parameter is made of a string.    |
+|   address-country_parameter_presence   |   OCCURRENCE   |   0..1 |   address-country parameter can be used only once, eventually suffixed by a modifier :contains, :exact or :text. |
+|   address-country_parameter_value   |   REGEX   |  `^[\s\S]+$`   | address-country parameter is made of a string.    |
+|   address-postalcode_parameter_presence   |   OCCURRENCE   |   0..1 |   address-postalcode parameter can be used only once, eventually suffixed by a modifier :contains, :exact or :text. |
+|   address-postalcode_parameter_value   |   REGEX   |  `^[\s\S]+$`   | address-postalcode parameter is made of a string.    |
+|   address-state_parameter_presence   |   OCCURRENCE   |   0..1 |   address-state parameter can be used only once, eventually suffixed by a modifier :contains, :exact or :text. |
+|   address-state_parameter_value   |   REGEX   |  `^[\s\S]+$`   | address-state parameter is made of a string.    |
+|   gender_parameter_presence   |   OCCURRENCE   |   0..1 |   gender parameter can be used only once. |
+|   gender_parameter_value   |   CLOSEDLIST   |   [male,Male,female,Female,other,Other,unknown,Unknown] |   active parameter is a token and accept the code or the display values.  |
+|   mothersMaidenName_parameter_presence   |   OCCURRENCE   |   0..1 |   mothersMaidenName parameter can be used only once. |
+|   mothersMaidenName_parameter_value   |   REGEX   |  `^[\s\S]+$` |   mothersMaidenName parameter is made of a string. |
+|   _format_parameter_presence   |   OCCURRENCE   |   0..1 |   _format parameter can be used only once. |
+|   _format_parameter_value   |   CLOSEDLIST   |   [json,xml] |   _format parameter's value shall be either json or xml. |
+
+## ITI-78 Retrieve query assertions
+
+|   id  |   Check's type |   Value |   Description    |
+|---    |---    |---    |---    |
+|   GETMethodChecking   |   FIXEDVALUE   |   GET |   HTTP method shall be  GET  |
+|   HTTP1VersionChecking   |   FIXEDVALUE  |   HTTP/1.1 |   The HTTP version shall be HTTP/1.1  |
+|   URIRegexChecking   |   REGEX   |   `^(\S)+\/Patient\/(\S)+$` |   URI path of the request shall be followed by the PDQm resource  |
+|   HostChecking   |   REGEX   |   `^(http[s]?:\/\/)?[a-zA-Z0-9.\-\/]+(\:(\d)+)?$` |   Host Shall be a server name  |
\ No newline at end of file
diff --git a/IHE Validation profiles/samples/PDQm/ITI-78/PDQm - 001 - valid - emptyQuery.txt b/IHE Validation profiles/samples/PDQm/ITI-78/PDQm - 001 - valid - emptyQuery.txt
new file mode 100644
index 0000000..f8bb773
--- /dev/null
+++ b/IHE Validation profiles/samples/PDQm/ITI-78/PDQm - 001 - valid - emptyQuery.txt	
@@ -0,0 +1,2 @@
+GET PatientDemographicsSupplier/Patient HTTP/1.1
+Host: gazelle.ihe.net
\ No newline at end of file
diff --git a/IHE Validation profiles/samples/PDQm/ITI-78/PDQm - 002 - valid - emptyQuery.txt b/IHE Validation profiles/samples/PDQm/ITI-78/PDQm - 002 - valid - emptyQuery.txt
new file mode 100644
index 0000000..8f846dd
--- /dev/null
+++ b/IHE Validation profiles/samples/PDQm/ITI-78/PDQm - 002 - valid - emptyQuery.txt	
@@ -0,0 +1,2 @@
+GET PatientDemographicsSupplier/Patient? HTTP/1.1
+Host: gazelle.ihe.net
\ No newline at end of file
diff --git a/IHE Validation profiles/samples/PDQm/ITI-78/PDQm - 003 - valid - _id.txt b/IHE Validation profiles/samples/PDQm/ITI-78/PDQm - 003 - valid - _id.txt
new file mode 100644
index 0000000..825560d
--- /dev/null
+++ b/IHE Validation profiles/samples/PDQm/ITI-78/PDQm - 003 - valid - _id.txt	
@@ -0,0 +1,5 @@
+GET PatientDemographicsSupplier/Patient?_id=parameter-of_type:string HTTP/1.1
+Host: gazelle.ihe.net
+
+GET PatientDemographicsSupplier/Patient?_id:exact=parameter-of_type:string HTTP/1.1
+Host: gazelle.ihe.net
\ No newline at end of file
diff --git a/IHE Validation profiles/samples/PDQm/ITI-78/PDQm - 004 - valid - active.txt b/IHE Validation profiles/samples/PDQm/ITI-78/PDQm - 004 - valid - active.txt
new file mode 100644
index 0000000..808c590
--- /dev/null
+++ b/IHE Validation profiles/samples/PDQm/ITI-78/PDQm - 004 - valid - active.txt	
@@ -0,0 +1,5 @@
+GET PatientDemographicsSupplier/Patient?active=true HTTP/1.1
+Host: gazelle.ihe.net
+
+GET PatientDemographicsSupplier/Patient?active=false HTTP/1.1
+Host: gazelle.ihe.net
\ No newline at end of file
diff --git a/IHE Validation profiles/samples/PDQm/ITI-78/PDQm - 005 - valid - family.txt b/IHE Validation profiles/samples/PDQm/ITI-78/PDQm - 005 - valid - family.txt
new file mode 100644
index 0000000..e75b686
--- /dev/null
+++ b/IHE Validation profiles/samples/PDQm/ITI-78/PDQm - 005 - valid - family.txt	
@@ -0,0 +1,11 @@
+GET PatientDemographicsSupplier/Patient?family=Hook HTTP/1.1
+Host: gazelle.ihe.net
+
+GET PatientDemographicsSupplier/Patient?family:contains=Hook HTTP/1.1
+Host: gazelle.ihe.net
+
+GET PatientDemographicsSupplier/Patient?family:exact=Hook HTTP/1.1
+Host: gazelle.ihe.net
+
+GET PatientDemographicsSupplier/Patient?family:text=Hook HTTP/1.1
+Host: gazelle.ihe.net
\ No newline at end of file
diff --git a/IHE Validation profiles/samples/PDQm/ITI-78/PDQm - 006 - valid - given.txt b/IHE Validation profiles/samples/PDQm/ITI-78/PDQm - 006 - valid - given.txt
new file mode 100644
index 0000000..173e422
--- /dev/null
+++ b/IHE Validation profiles/samples/PDQm/ITI-78/PDQm - 006 - valid - given.txt	
@@ -0,0 +1,11 @@
+GET PatientDemographicsSupplier/Patient?given=James HTTP/1.1
+Host: gazelle.ihe.net
+
+GET PatientDemographicsSupplier/Patient?given:contains=James HTTP/1.1
+Host: gazelle.ihe.net
+
+GET PatientDemographicsSupplier/Patient?given:exact=James HTTP/1.1
+Host: gazelle.ihe.net
+
+GET PatientDemographicsSupplier/Patient?given:text=James HTTP/1.1
+Host: gazelle.ihe.net
\ No newline at end of file
diff --git a/IHE Validation profiles/samples/PDQm/ITI-78/PDQm - 007 - valid - identifier.txt b/IHE Validation profiles/samples/PDQm/ITI-78/PDQm - 007 - valid - identifier.txt
new file mode 100644
index 0000000..9dfbdb7
--- /dev/null
+++ b/IHE Validation profiles/samples/PDQm/ITI-78/PDQm - 007 - valid - identifier.txt	
@@ -0,0 +1,2 @@
+GET CarePatientDemographicsSupplierervicesSelectiveSupplier/Patient?identifier=urn%3Aoid%3A1.2.3%7Cabc HTTP/1.1
+Host: gazelle.ihe.net
\ No newline at end of file
diff --git a/IHE Validation profiles/samples/PDQm/ITI-78/PDQm - 008 - valid - multiple identifer domains.txt b/IHE Validation profiles/samples/PDQm/ITI-78/PDQm - 008 - valid - multiple identifer domains.txt
new file mode 100644
index 0000000..4b794b2
--- /dev/null
+++ b/IHE Validation profiles/samples/PDQm/ITI-78/PDQm - 008 - valid - multiple identifer domains.txt	
@@ -0,0 +1,2 @@
+GET PatientDemographicsSupplier/Patient?identifier=urn%3Aoid%3A1.2.3%7C%2Curn%3Aoid%3A4.5.6%7C HTTP/1.1
+Host: gazelle.ihe.net
\ No newline at end of file
diff --git a/IHE Validation profiles/samples/PDQm/ITI-78/PDQm - 009 - valid - telecom.txt b/IHE Validation profiles/samples/PDQm/ITI-78/PDQm - 009 - valid - telecom.txt
new file mode 100644
index 0000000..a4f76af
--- /dev/null
+++ b/IHE Validation profiles/samples/PDQm/ITI-78/PDQm - 009 - valid - telecom.txt	
@@ -0,0 +1,2 @@
+GET PatientDemographicsSupplier/Patient?telecom=%28310%29%20874-9015 HTTP/1.1
+Host: gazelle.ihe.net
\ No newline at end of file
diff --git a/IHE Validation profiles/samples/PDQm/ITI-78/PDQm - 010 - valid - birthdate.txt b/IHE Validation profiles/samples/PDQm/ITI-78/PDQm - 010 - valid - birthdate.txt
new file mode 100644
index 0000000..6ee09ca
--- /dev/null
+++ b/IHE Validation profiles/samples/PDQm/ITI-78/PDQm - 010 - valid - birthdate.txt	
@@ -0,0 +1,29 @@
+GET PatientDemographicsSupplier/Patient?birthdate=1981-07-21 HTTP/1.1
+Host: gazelle.ihe.net
+
+GET PatientDemographicsSupplier/Patient?birthdate=eq1981-07-21 HTTP/1.1
+Host: gazelle.ihe.net
+
+GET PatientDemographicsSupplier/Patient?birthdate=ne1981-07-21 HTTP/1.1
+Host: gazelle.ihe.net
+
+GET PatientDemographicsSupplier/Patient?birthdate=lt1981-07-21 HTTP/1.1
+Host: gazelle.ihe.net
+
+GET PatientDemographicsSupplier/Patient?birthdate=gt1981-07-21 HTTP/1.1
+Host: gazelle.ihe.net
+
+GET PatientDemographicsSupplier/Patient?birthdate=ge1981-07-21 HTTP/1.1
+Host: gazelle.ihe.net
+
+GET PatientDemographicsSupplier/Patient?birthdate=le1981-07-21 HTTP/1.1
+Host: gazelle.ihe.net
+
+GET PatientDemographicsSupplier/Patient?birthdate=sa1981-07-21 HTTP/1.1
+Host: gazelle.ihe.net
+
+GET PatientDemographicsSupplier/Patient?birthdate=eb1981-07-21 HTTP/1.1
+Host: gazelle.ihe.net
+
+GET PatientDemographicsSupplier/Patient?birthdate=ap1981-07-21 HTTP/1.1
+Host: gazelle.ihe.net
\ No newline at end of file
diff --git a/IHE Validation profiles/samples/PDQm/ITI-78/PDQm - 011 - valid - address.txt b/IHE Validation profiles/samples/PDQm/ITI-78/PDQm - 011 - valid - address.txt
new file mode 100644
index 0000000..854935a
--- /dev/null
+++ b/IHE Validation profiles/samples/PDQm/ITI-78/PDQm - 011 - valid - address.txt	
@@ -0,0 +1,12 @@
+GET PatientDemographicsSupplier/Patient?address=511-5762%20At%20Rd.%20Chelsea%20MI%2067708 HTTP/1.1
+Host: gazelle.ihe.net
+
+GET PatientDemographicsSupplier/Patient?address:contains=511-5762%20At%20Rd.%2067708 HTTP/1.1
+Host: gazelle.ihe.net
+
+GET PatientDemographicsSupplier/Patient?address:exact=511-5762%20At%20Rd.%20Chelsea%20MI%2067708 HTTP/1.1
+Host: gazelle.ihe.net
+
+GET PatientDemographicsSupplier/Patient?address:text=511-5762%20At%20Rd.%20Chelsea%20MI%2067708 HTTP/1.1
+Host: gazelle.ihe.net
+
diff --git a/IHE Validation profiles/samples/PDQm/ITI-78/PDQm - 012 - valid - address-city.txt b/IHE Validation profiles/samples/PDQm/ITI-78/PDQm - 012 - valid - address-city.txt
new file mode 100644
index 0000000..9d6807a
--- /dev/null
+++ b/IHE Validation profiles/samples/PDQm/ITI-78/PDQm - 012 - valid - address-city.txt	
@@ -0,0 +1,14 @@
+GET PatientDemographicsSupplier/Patient?address-city=Chelsea HTTP/1.1
+Host: gazelle.ihe.net
+
+GET PatientDemographicsSupplier/Patient?address-city=Chelsea HTTP/1.1
+Host: gazelle.ihe.net
+
+GET PatientDemographicsSupplier/Patient?address-city:contains=Chelsea HTTP/1.1
+Host: gazelle.ihe.net
+
+GET PatientDemographicsSupplier/Patient?address-city:exact=Chelsea HTTP/1.1
+Host: gazelle.ihe.net
+
+GET PatientDemographicsSupplier/Patient?address-city:text=Chelsea HTTP/1.1
+Host: gazelle.ihe.net
\ No newline at end of file
diff --git a/IHE Validation profiles/samples/PDQm/ITI-78/PDQm - 013 - valid - address-country.txt b/IHE Validation profiles/samples/PDQm/ITI-78/PDQm - 013 - valid - address-country.txt
new file mode 100644
index 0000000..9b3bb99
--- /dev/null
+++ b/IHE Validation profiles/samples/PDQm/ITI-78/PDQm - 013 - valid - address-country.txt	
@@ -0,0 +1,12 @@
+GET PatientDemographicsSupplier/Patient?address-country=Germany HTTP/1.1
+Host: gazelle.ihe.net
+
+GET PatientDemographicsSupplier/Patient?address-country:contains=Germany HTTP/1.1
+Host: gazelle.ihe.net
+
+GET PatientDemographicsSupplier/Patient?address-country:exact=Germany HTTP/1.1
+Host: gazelle.ihe.net
+
+GET PatientDemographicsSupplier/Patient?address-country:text=Germany HTTP/1.1
+Host: gazelle.ihe.net
+
diff --git a/IHE Validation profiles/samples/PDQm/ITI-78/PDQm - 014 - valid - address-postalcode.txt b/IHE Validation profiles/samples/PDQm/ITI-78/PDQm - 014 - valid - address-postalcode.txt
new file mode 100644
index 0000000..71caf23
--- /dev/null
+++ b/IHE Validation profiles/samples/PDQm/ITI-78/PDQm - 014 - valid - address-postalcode.txt	
@@ -0,0 +1,12 @@
+GET PatientDemographicsSupplier/Patient?address-postalcode=3003 HTTP/1.1
+Host: gazelle.ihe.net
+
+GET PatientDemographicsSupplier/Patient?address-postalcode:contains=3003 HTTP/1.1
+Host: gazelle.ihe.net
+
+GET PatientDemographicsSupplier/Patient?address-postalcode:exact=3003 HTTP/1.1
+Host: gazelle.ihe.net
+
+GET PatientDemographicsSupplier/Patient?address-postalcode:text=3003 HTTP/1.1
+Host: gazelle.ihe.net
+
diff --git a/IHE Validation profiles/samples/PDQm/ITI-78/PDQm - 015 - valid - address-state.txt b/IHE Validation profiles/samples/PDQm/ITI-78/PDQm - 015 - valid - address-state.txt
new file mode 100644
index 0000000..3ab3cd1
--- /dev/null
+++ b/IHE Validation profiles/samples/PDQm/ITI-78/PDQm - 015 - valid - address-state.txt	
@@ -0,0 +1,12 @@
+GET PatientDemographicsSupplier/Patient?address-state=California HTTP/1.1
+Host: gazelle.ihe.net
+
+GET PatientDemographicsSupplier/Patient?address-state:contains=California HTTP/1.1
+Host: gazelle.ihe.net
+
+GET PatientDemographicsSupplier/Patient?address-state:exact=California HTTP/1.1
+Host: gazelle.ihe.net
+
+GET PatientDemographicsSupplier/Patient?address-state:text=California HTTP/1.1
+Host: gazelle.ihe.net
+
diff --git a/IHE Validation profiles/samples/PDQm/ITI-78/PDQm - 016 - valid - gender.txt b/IHE Validation profiles/samples/PDQm/ITI-78/PDQm - 016 - valid - gender.txt
new file mode 100644
index 0000000..adc230c
--- /dev/null
+++ b/IHE Validation profiles/samples/PDQm/ITI-78/PDQm - 016 - valid - gender.txt	
@@ -0,0 +1,23 @@
+GET PatientDemographicsSupplier/Patient?gender=male HTTP/1.1
+Host: gazelle.ihe.net
+
+GET PatientDemographicsSupplier/Patient?gender=Male HTTP/1.1
+Host: gazelle.ihe.net
+
+GET PatientDemographicsSupplier/Patient?gender=female HTTP/1.1
+Host: gazelle.ihe.net
+
+GET CareServicePatientDemographicsSuppliersSelectiveSupplier/Patient?gender=Female HTTP/1.1
+Host: gazelle.ihe.net
+
+GET PatientDemographicsSupplier/Patient?gender=other HTTP/1.1
+Host: gazelle.ihe.net
+
+GET PatientDemographicsSupplier/Patient?gender=Other HTTP/1.1
+Host: gazelle.ihe.net
+
+GET PatientDemographicsSupplier/Patient?gender=unknown HTTP/1.1
+Host: gazelle.ihe.net
+
+GET PatientDemographicsSupplier/Patient?gender=Unknown HTTP/1.1
+Host: gazelle.ihe.net
\ No newline at end of file
diff --git a/IHE Validation profiles/samples/PDQm/ITI-78/PDQm - 017 - valid - mothersMaidenName.txt b/IHE Validation profiles/samples/PDQm/ITI-78/PDQm - 017 - valid - mothersMaidenName.txt
new file mode 100644
index 0000000..241931c
--- /dev/null
+++ b/IHE Validation profiles/samples/PDQm/ITI-78/PDQm - 017 - valid - mothersMaidenName.txt	
@@ -0,0 +1,11 @@
+GET PatientDemographicsSupplier/Patient?motherMaidenName=Smith HTTP/1.1
+Host: gazelle.ihe.net
+
+GET PatientDemographicsSupplier/Patient?motherMaidenName:contains=Smith HTTP/1.1
+Host: gazelle.ihe.net
+
+GET PatientDemographicsSupplier/Patient?motherMaidenName:exact=Smith HTTP/1.1
+Host: gazelle.ihe.net
+
+GET PatientDemographicsSupplier/Patient?motherMaidenName:text=Smith HTTP/1.1
+Host: gazelle.ihe.net
\ No newline at end of file
diff --git a/IHE Validation profiles/samples/PDQm/ITI-78/PDQm - 018 - valid - _format xml.txt b/IHE Validation profiles/samples/PDQm/ITI-78/PDQm - 018 - valid - _format xml.txt
new file mode 100644
index 0000000..453e63f
--- /dev/null
+++ b/IHE Validation profiles/samples/PDQm/ITI-78/PDQm - 018 - valid - _format xml.txt	
@@ -0,0 +1,2 @@
+GET PatientDemographicsSupplier/Patient?_format=xml HTTP/1.1
+Host: gazelle.ihe.net
\ No newline at end of file
diff --git a/IHE Validation profiles/samples/PDQm/ITI-78/PDQm - 019 - valid - _format json.txt b/IHE Validation profiles/samples/PDQm/ITI-78/PDQm - 019 - valid - _format json.txt
new file mode 100644
index 0000000..af52986
--- /dev/null
+++ b/IHE Validation profiles/samples/PDQm/ITI-78/PDQm - 019 - valid - _format json.txt	
@@ -0,0 +1,2 @@
+GET PatientDemographicsSupplier/Patient?_format=json HTTP/1.1
+Host: gazelle.ihe.net
\ No newline at end of file
diff --git a/IHE Validation profiles/samples/PDQm/ITI-78/PDQm - 020 - valid - family & gender .txt b/IHE Validation profiles/samples/PDQm/ITI-78/PDQm - 020 - valid - family & gender .txt
new file mode 100644
index 0000000..2f02dbf
--- /dev/null
+++ b/IHE Validation profiles/samples/PDQm/ITI-78/PDQm - 020 - valid - family & gender .txt	
@@ -0,0 +1,2 @@
+GET PatientDemographicsSupplier/Patient?family:contains=Hook&gender=Male HTTP/1.1
+Host: gazelle.ihe.net
\ No newline at end of file
diff --git a/IHE Validation profiles/samples/PDQm/ITI-78/PDQm - 021 - valid - birthdate & family.txt b/IHE Validation profiles/samples/PDQm/ITI-78/PDQm - 021 - valid - birthdate & family.txt
new file mode 100644
index 0000000..906fbd2
--- /dev/null
+++ b/IHE Validation profiles/samples/PDQm/ITI-78/PDQm - 021 - valid - birthdate & family.txt	
@@ -0,0 +1,2 @@
+GET PatientDemographicsSupplier/Patient?birthdate=eq1981-07-21&family:exact=Hook HTTP/1.1
+Host: gazelle.ihe.net
\ No newline at end of file
diff --git a/IHE Validation profiles/samples/PDQm/ITI-78/PDQm - 022 - valid - Retrieve.txt b/IHE Validation profiles/samples/PDQm/ITI-78/PDQm - 022 - valid - Retrieve.txt
new file mode 100644
index 0000000..6bb5480
--- /dev/null
+++ b/IHE Validation profiles/samples/PDQm/ITI-78/PDQm - 022 - valid - Retrieve.txt	
@@ -0,0 +1,2 @@
+GET PatientDemographicsSupplier/Patient/267 HTTP/1.1
+Host: gazelle.ihe.net
\ No newline at end of file
diff --git a/IHE Validation profiles/samples/PDQm/ITI-78/PDQm - 023 - invalid - Bad method.txt b/IHE Validation profiles/samples/PDQm/ITI-78/PDQm - 023 - invalid - Bad method.txt
new file mode 100644
index 0000000..73e6207
--- /dev/null
+++ b/IHE Validation profiles/samples/PDQm/ITI-78/PDQm - 023 - invalid - Bad method.txt	
@@ -0,0 +1,2 @@
+UPDATE PatientDemographicsSupplier/Patient? HTTP/1.1
+Host: gazelle.ihe.net
\ No newline at end of file
diff --git a/IHE Validation profiles/samples/PDQm/ITI-78/PDQm - 024 - invalid -  Bad URI.txt b/IHE Validation profiles/samples/PDQm/ITI-78/PDQm - 024 - invalid -  Bad URI.txt
new file mode 100644
index 0000000..1611645
--- /dev/null
+++ b/IHE Validation profiles/samples/PDQm/ITI-78/PDQm - 024 - invalid -  Bad URI.txt	
@@ -0,0 +1,2 @@
+GET PatientDemographics Supplier/Patient? HTTP/1.1
+Host: gazelle.ihe.net
\ No newline at end of file
diff --git a/IHE Validation profiles/samples/PDQm/ITI-78/PDQm - 031 - invalid -  with 2 active parameters.txt b/IHE Validation profiles/samples/PDQm/ITI-78/PDQm - 031 - invalid -  with 2 active parameters.txt
new file mode 100644
index 0000000..4e967f7
--- /dev/null
+++ b/IHE Validation profiles/samples/PDQm/ITI-78/PDQm - 031 - invalid -  with 2 active parameters.txt	
@@ -0,0 +1,2 @@
+GET PatientDemographicsSupplier/Patient?active=true&active=false HTTP/1.1
+Host: gazelle.ihe.net
\ No newline at end of file
diff --git a/IHE Validation profiles/samples/PDQm/ITI-78/PDQm - 032 - invalid -  with bad active value.txt b/IHE Validation profiles/samples/PDQm/ITI-78/PDQm - 032 - invalid -  with bad active value.txt
new file mode 100644
index 0000000..8401bac
--- /dev/null
+++ b/IHE Validation profiles/samples/PDQm/ITI-78/PDQm - 032 - invalid -  with bad active value.txt	
@@ -0,0 +1,2 @@
+GET PatientDemographicsSupplier/Patient?active=maybe HTTP/1.1
+Host: gazelle.ihe.net
\ No newline at end of file
diff --git a/IHE Validation profiles/samples/PDQm/ITI-78/PDQm - 033 - invalid -  With 2 identifier parameters.txt b/IHE Validation profiles/samples/PDQm/ITI-78/PDQm - 033 - invalid -  With 2 identifier parameters.txt
new file mode 100644
index 0000000..228a373
--- /dev/null
+++ b/IHE Validation profiles/samples/PDQm/ITI-78/PDQm - 033 - invalid -  With 2 identifier parameters.txt	
@@ -0,0 +1,2 @@
+GET PatientDemographicsSupplier/Patient?identifier=urn%3Aoid%3A1.2.3%7Cabc&identifier=urn%3Aoid%3A1.2.3%7Cdef HTTP/1.1
+Host: gazelle.ihe.net
\ No newline at end of file
diff --git a/IHE Validation profiles/samples/PDQm/ITI-78/PDQm - 034 - invalid -  With bad identifier value.txt b/IHE Validation profiles/samples/PDQm/ITI-78/PDQm - 034 - invalid -  With bad identifier value.txt
new file mode 100644
index 0000000..f4f549b
--- /dev/null
+++ b/IHE Validation profiles/samples/PDQm/ITI-78/PDQm - 034 - invalid -  With bad identifier value.txt	
@@ -0,0 +1,2 @@
+GET PatientDemographicsSupplier/Patient?identifier=urn%3%20Aoid%3%20A1.2.3%7Cabc HTTP/1.1
+Host: gazelle.ihe.net
\ No newline at end of file
diff --git a/IHE Validation profiles/samples/PDQm/ITI-78/PDQm - 035 - invalid -  With bad identifier domains token.txt b/IHE Validation profiles/samples/PDQm/ITI-78/PDQm - 035 - invalid -  With bad identifier domains token.txt
new file mode 100644
index 0000000..80fdc0c
--- /dev/null
+++ b/IHE Validation profiles/samples/PDQm/ITI-78/PDQm - 035 - invalid -  With bad identifier domains token.txt	
@@ -0,0 +1,2 @@
+GET PatientDemographicsSupplier/Patient?identifier=urn%3Aoid%3A1.2.3%7C%20urn%3Aoid%3A4.5.6%7C HTTP/1.1
+Host: gazelle.ihe.net
\ No newline at end of file
diff --git a/IHE Validation profiles/samples/PDQm/ITI-78/PDQm - 036 - invalid -  With 2 birthdateparameters.txt b/IHE Validation profiles/samples/PDQm/ITI-78/PDQm - 036 - invalid -  With 2 birthdateparameters.txt
new file mode 100644
index 0000000..bb72af4
--- /dev/null
+++ b/IHE Validation profiles/samples/PDQm/ITI-78/PDQm - 036 - invalid -  With 2 birthdateparameters.txt	
@@ -0,0 +1,2 @@
+GET PatientDemographicsSupplier/Patient?birthdate=1981-07-21&birthdate=1981-07-22 HTTP/1.1
+Host: gazelle.ihe.net
\ No newline at end of file
diff --git a/IHE Validation profiles/samples/PDQm/ITI-78/PDQm - 037 - invalid -  With bad birthdate format.txt b/IHE Validation profiles/samples/PDQm/ITI-78/PDQm - 037 - invalid -  With bad birthdate format.txt
new file mode 100644
index 0000000..6d34840
--- /dev/null
+++ b/IHE Validation profiles/samples/PDQm/ITI-78/PDQm - 037 - invalid -  With bad birthdate format.txt	
@@ -0,0 +1,2 @@
+GET PatientDemographicsSupplier/Patient?birthdate=21-07-1981 HTTP/1.1
+Host: gazelle.ihe.net
\ No newline at end of file
diff --git a/IHE Validation profiles/samples/PDQm/ITI-78/PDQm - 038 - invalid -  With bad birthdate modifier.txt b/IHE Validation profiles/samples/PDQm/ITI-78/PDQm - 038 - invalid -  With bad birthdate modifier.txt
new file mode 100644
index 0000000..006d26f
--- /dev/null
+++ b/IHE Validation profiles/samples/PDQm/ITI-78/PDQm - 038 - invalid -  With bad birthdate modifier.txt	
@@ -0,0 +1,2 @@
+GET PatientDemographicsSupplier/Patient?birthdate=ee1981-07-21 HTTP/1.1
+Host: gazelle.ihe.net
\ No newline at end of file
diff --git a/IHE Validation profiles/samples/PDQm/ITI-78/PDQm - 039 - invalid -  With 2 address parameters.txt b/IHE Validation profiles/samples/PDQm/ITI-78/PDQm - 039 - invalid -  With 2 address parameters.txt
new file mode 100644
index 0000000..3b47b44
--- /dev/null
+++ b/IHE Validation profiles/samples/PDQm/ITI-78/PDQm - 039 - invalid -  With 2 address parameters.txt	
@@ -0,0 +1,2 @@
+GET PatientDemographicsSupplier/Patient?address=511-5762%20At%20Rd.%20Chelsea%20MI%2067708&address=511-5763%20At%20Rd.%20Chelsea%20MI%2067708 HTTP/1.1
+Host: gazelle.ihe.net
\ No newline at end of file
diff --git a/IHE Validation profiles/samples/PDQm/ITI-78/PDQm - 040 - invalid -  With 2 address-city parameters.txt b/IHE Validation profiles/samples/PDQm/ITI-78/PDQm - 040 - invalid -  With 2 address-city parameters.txt
new file mode 100644
index 0000000..816299b
--- /dev/null
+++ b/IHE Validation profiles/samples/PDQm/ITI-78/PDQm - 040 - invalid -  With 2 address-city parameters.txt	
@@ -0,0 +1,2 @@
+GET PatientDemographicsSupplier/Patient?address-city=Chelsea&address-city=Rennes HTTP/1.1
+Host: gazelle.ihe.net
\ No newline at end of file
diff --git a/IHE Validation profiles/samples/PDQm/ITI-78/PDQm - 041 - invalid -  With 2 address-country parameters.txt b/IHE Validation profiles/samples/PDQm/ITI-78/PDQm - 041 - invalid -  With 2 address-country parameters.txt
new file mode 100644
index 0000000..a8736c3
--- /dev/null
+++ b/IHE Validation profiles/samples/PDQm/ITI-78/PDQm - 041 - invalid -  With 2 address-country parameters.txt	
@@ -0,0 +1,2 @@
+GET PatientDemographicsSupplier/Patien?address-country=Germany&address-country=France HTTP/1.1
+Host: gazelle.ihe.net
\ No newline at end of file
diff --git a/IHE Validation profiles/samples/PDQm/ITI-78/PDQm - 042 - invalid -  With 2 address-postalcode parameter.txt b/IHE Validation profiles/samples/PDQm/ITI-78/PDQm - 042 - invalid -  With 2 address-postalcode parameter.txt
new file mode 100644
index 0000000..db0cb5f
--- /dev/null
+++ b/IHE Validation profiles/samples/PDQm/ITI-78/PDQm - 042 - invalid -  With 2 address-postalcode parameter.txt	
@@ -0,0 +1,2 @@
+GET PatientDemographicsSupplier/Patient?address-postalcode=3003&address-postalcode=1001 HTTP/1.1
+Host: gazelle.ihe.net
\ No newline at end of file
diff --git a/IHE Validation profiles/samples/PDQm/ITI-78/PDQm - 043 - invalid -  With 2 address-state parameters.txt b/IHE Validation profiles/samples/PDQm/ITI-78/PDQm - 043 - invalid -  With 2 address-state parameters.txt
new file mode 100644
index 0000000..20083f3
--- /dev/null
+++ b/IHE Validation profiles/samples/PDQm/ITI-78/PDQm - 043 - invalid -  With 2 address-state parameters.txt	
@@ -0,0 +1,2 @@
+GET PatientDemographicsSupplier/Patient?address-state=California&address-state=Virginia HTTP/1.1
+Host: gazelle.ihe.net
\ No newline at end of file
diff --git a/IHE Validation profiles/samples/PDQm/ITI-78/PDQm - 044 - invalid -  With 2 gender parameters.txt b/IHE Validation profiles/samples/PDQm/ITI-78/PDQm - 044 - invalid -  With 2 gender parameters.txt
new file mode 100644
index 0000000..4d35e0d
--- /dev/null
+++ b/IHE Validation profiles/samples/PDQm/ITI-78/PDQm - 044 - invalid -  With 2 gender parameters.txt	
@@ -0,0 +1,2 @@
+GET PatientDemographicsSupplier/Patient?gender=female&gender=male HTTP/1.1
+Host: gazelle.ihe.net
\ No newline at end of file
diff --git a/IHE Validation profiles/samples/PDQm/ITI-78/PDQm - 045 - invalid -  With bad gender value.txt b/IHE Validation profiles/samples/PDQm/ITI-78/PDQm - 045 - invalid -  With bad gender value.txt
new file mode 100644
index 0000000..5f536dd
--- /dev/null
+++ b/IHE Validation profiles/samples/PDQm/ITI-78/PDQm - 045 - invalid -  With bad gender value.txt	
@@ -0,0 +1,2 @@
+GET PatientDemographicsSupplier/Patient?gender=boy HTTP/1.1
+Host: gazelle.ihe.net
\ No newline at end of file
diff --git a/IHE Validation profiles/samples/PDQm/ITI-78/PDQm - 046 - invalid -  With 2 mothersMaidenNameparameters.txt b/IHE Validation profiles/samples/PDQm/ITI-78/PDQm - 046 - invalid -  With 2 mothersMaidenNameparameters.txt
new file mode 100644
index 0000000..7cdc082
--- /dev/null
+++ b/IHE Validation profiles/samples/PDQm/ITI-78/PDQm - 046 - invalid -  With 2 mothersMaidenNameparameters.txt	
@@ -0,0 +1,2 @@
+GET PatientDemographicsSupplier/Patient?mothersMaidenName=Smith&mothersMaidenName=Smouth HTTP/1.1
+Host: gazelle.ihe.net
\ No newline at end of file
diff --git a/IHE Validation profiles/samples/PDQm/ITI-78/PDQm - 047 - invalid -  With 2 _format parameters.txt b/IHE Validation profiles/samples/PDQm/ITI-78/PDQm - 047 - invalid -  With 2 _format parameters.txt
new file mode 100644
index 0000000..f9734f0
--- /dev/null
+++ b/IHE Validation profiles/samples/PDQm/ITI-78/PDQm - 047 - invalid -  With 2 _format parameters.txt	
@@ -0,0 +1,2 @@
+GET PatientDemographicsSupplier/Patient?_format=xml&_format=json HTTP/1.1
+Host: gazelle.ihe.net
\ No newline at end of file
diff --git a/IHE Validation profiles/samples/PDQm/ITI-78/PDQm - 048 - invalid -  With bad _format value.txt b/IHE Validation profiles/samples/PDQm/ITI-78/PDQm - 048 - invalid -  With bad _format value.txt
new file mode 100644
index 0000000..e9fa250
--- /dev/null
+++ b/IHE Validation profiles/samples/PDQm/ITI-78/PDQm - 048 - invalid -  With bad _format value.txt	
@@ -0,0 +1,2 @@
+GET PatientDemographicsSupplier/Patient?_format=markdown HTTP/1.1
+Host: gazelle.ihe.net
\ No newline at end of file
-- 
GitLab