From b33d5a542b0dbbcf65228320d1ea262139cd05c8 Mon Sep 17 00:00:00 2001 From: Chamath Jayasena Date: Tue, 14 May 2024 11:52:24 +0530 Subject: [PATCH 1/2] Add Da Vinci HREX IG package Related issue: https://github.com/wso2-enterprise/open-healthcare/issues/1530 --- davincihrex100/Ballerina.toml | 8 + davincihrex100/Dependencies.toml | 331 ++ davincihrex100/Package.md | 57 + davincihrex100/initializer.bal | 106 + .../resource_hrex_claim_response.bal | 1766 +++++++++ davincihrex100/resource_hrex_consent.bal | 1340 +++++++ davincihrex100/resource_hrex_coverage.bal | 830 +++++ ...e_hrex_member_match_request_parameters.bal | 3229 +++++++++++++++++ ..._hrex_member_match_response_parameters.bal | 970 +++++ davincihrex100/resource_hrex_organization.bal | 471 +++ .../resource_hrex_patient_demographics.bal | 1011 ++++++ davincihrex100/resource_hrex_practitioner.bal | 642 ++++ .../resource_hrex_practitioner_role.bal | 466 +++ davincihrex100/resource_hrex_provenance.bal | 841 +++++ .../resource_hrex_task_data_request.bal | 2392 ++++++++++++ davincihrex100/variables.bal | 129 + 16 files changed, 14589 insertions(+) create mode 100644 davincihrex100/Ballerina.toml create mode 100644 davincihrex100/Dependencies.toml create mode 100644 davincihrex100/Package.md create mode 100644 davincihrex100/initializer.bal create mode 100644 davincihrex100/resource_hrex_claim_response.bal create mode 100644 davincihrex100/resource_hrex_consent.bal create mode 100644 davincihrex100/resource_hrex_coverage.bal create mode 100644 davincihrex100/resource_hrex_member_match_request_parameters.bal create mode 100644 davincihrex100/resource_hrex_member_match_response_parameters.bal create mode 100644 davincihrex100/resource_hrex_organization.bal create mode 100644 davincihrex100/resource_hrex_patient_demographics.bal create mode 100644 davincihrex100/resource_hrex_practitioner.bal create mode 100644 davincihrex100/resource_hrex_practitioner_role.bal create mode 100644 davincihrex100/resource_hrex_provenance.bal create mode 100644 davincihrex100/resource_hrex_task_data_request.bal create mode 100644 davincihrex100/variables.bal diff --git a/davincihrex100/Ballerina.toml b/davincihrex100/Ballerina.toml new file mode 100644 index 00000000..36886c5f --- /dev/null +++ b/davincihrex100/Ballerina.toml @@ -0,0 +1,8 @@ +[package] +org = "ballerinax" +name = "health.fhir.r4.davincihrex100" +version = "1.0.0" +distribution = "2201.8.6" +authors = ["Ballerina"] +keywords = ["Healthcare", "FHIR", "R4", "DaVinci", "HREX"] +export = ["health.fhir.r4.davincihrex100"] diff --git a/davincihrex100/Dependencies.toml b/davincihrex100/Dependencies.toml new file mode 100644 index 00000000..b6f54344 --- /dev/null +++ b/davincihrex100/Dependencies.toml @@ -0,0 +1,331 @@ +# AUTO-GENERATED FILE. DO NOT MODIFY. + +# This file is auto-generated by Ballerina for managing dependency versions. +# It should not be modified by hand. + +[ballerina] +dependencies-toml-version = "2" +distribution-version = "2201.8.6" + +[[package]] +org = "ballerina" +name = "auth" +version = "2.10.0" +dependencies = [ + {org = "ballerina", name = "crypto"}, + {org = "ballerina", name = "jballerina.java"}, + {org = "ballerina", name = "lang.array"}, + {org = "ballerina", name = "lang.string"}, + {org = "ballerina", name = "log"} +] + +[[package]] +org = "ballerina" +name = "cache" +version = "3.8.0" +dependencies = [ + {org = "ballerina", name = "constraint"}, + {org = "ballerina", name = "jballerina.java"}, + {org = "ballerina", name = "task"}, + {org = "ballerina", name = "time"} +] + +[[package]] +org = "ballerina" +name = "constraint" +version = "1.5.0" +dependencies = [ + {org = "ballerina", name = "jballerina.java"} +] +modules = [ + {org = "ballerina", packageName = "constraint", moduleName = "constraint"} +] + +[[package]] +org = "ballerina" +name = "crypto" +version = "2.6.2" +dependencies = [ + {org = "ballerina", name = "jballerina.java"}, + {org = "ballerina", name = "time"} +] + +[[package]] +org = "ballerina" +name = "file" +version = "1.9.0" +dependencies = [ + {org = "ballerina", name = "io"}, + {org = "ballerina", name = "jballerina.java"}, + {org = "ballerina", name = "os"}, + {org = "ballerina", name = "time"} +] + +[[package]] +org = "ballerina" +name = "http" +version = "2.10.13" +dependencies = [ + {org = "ballerina", name = "auth"}, + {org = "ballerina", name = "cache"}, + {org = "ballerina", name = "constraint"}, + {org = "ballerina", name = "crypto"}, + {org = "ballerina", name = "file"}, + {org = "ballerina", name = "io"}, + {org = "ballerina", name = "jballerina.java"}, + {org = "ballerina", name = "jwt"}, + {org = "ballerina", name = "lang.array"}, + {org = "ballerina", name = "lang.decimal"}, + {org = "ballerina", name = "lang.int"}, + {org = "ballerina", name = "lang.regexp"}, + {org = "ballerina", name = "lang.runtime"}, + {org = "ballerina", name = "lang.string"}, + {org = "ballerina", name = "lang.value"}, + {org = "ballerina", name = "log"}, + {org = "ballerina", name = "mime"}, + {org = "ballerina", name = "oauth2"}, + {org = "ballerina", name = "observe"}, + {org = "ballerina", name = "time"}, + {org = "ballerina", name = "url"} +] + +[[package]] +org = "ballerina" +name = "io" +version = "1.6.0" +dependencies = [ + {org = "ballerina", name = "jballerina.java"}, + {org = "ballerina", name = "lang.value"} +] + +[[package]] +org = "ballerina" +name = "jballerina.java" +version = "0.0.0" + +[[package]] +org = "ballerina" +name = "jwt" +version = "2.10.0" +dependencies = [ + {org = "ballerina", name = "cache"}, + {org = "ballerina", name = "crypto"}, + {org = "ballerina", name = "jballerina.java"}, + {org = "ballerina", name = "lang.int"}, + {org = "ballerina", name = "lang.string"}, + {org = "ballerina", name = "log"}, + {org = "ballerina", name = "time"} +] + +[[package]] +org = "ballerina" +name = "lang.__internal" +version = "0.0.0" +dependencies = [ + {org = "ballerina", name = "jballerina.java"}, + {org = "ballerina", name = "lang.object"} +] + +[[package]] +org = "ballerina" +name = "lang.array" +version = "0.0.0" +dependencies = [ + {org = "ballerina", name = "jballerina.java"}, + {org = "ballerina", name = "lang.__internal"} +] + +[[package]] +org = "ballerina" +name = "lang.decimal" +version = "0.0.0" +dependencies = [ + {org = "ballerina", name = "jballerina.java"} +] + +[[package]] +org = "ballerina" +name = "lang.int" +version = "0.0.0" +dependencies = [ + {org = "ballerina", name = "jballerina.java"}, + {org = "ballerina", name = "lang.__internal"}, + {org = "ballerina", name = "lang.object"} +] + +[[package]] +org = "ballerina" +name = "lang.object" +version = "0.0.0" + +[[package]] +org = "ballerina" +name = "lang.regexp" +version = "0.0.0" +dependencies = [ + {org = "ballerina", name = "jballerina.java"} +] + +[[package]] +org = "ballerina" +name = "lang.runtime" +version = "0.0.0" +dependencies = [ + {org = "ballerina", name = "jballerina.java"} +] + +[[package]] +org = "ballerina" +name = "lang.string" +version = "0.0.0" +dependencies = [ + {org = "ballerina", name = "jballerina.java"}, + {org = "ballerina", name = "lang.regexp"} +] + +[[package]] +org = "ballerina" +name = "lang.value" +version = "0.0.0" +dependencies = [ + {org = "ballerina", name = "jballerina.java"} +] + +[[package]] +org = "ballerina" +name = "log" +version = "2.9.0" +dependencies = [ + {org = "ballerina", name = "io"}, + {org = "ballerina", name = "jballerina.java"}, + {org = "ballerina", name = "lang.value"}, + {org = "ballerina", name = "observe"} +] +modules = [ + {org = "ballerina", packageName = "log", moduleName = "log"} +] + +[[package]] +org = "ballerina" +name = "mime" +version = "2.9.0" +dependencies = [ + {org = "ballerina", name = "io"}, + {org = "ballerina", name = "jballerina.java"}, + {org = "ballerina", name = "lang.int"} +] + +[[package]] +org = "ballerina" +name = "oauth2" +version = "2.10.0" +dependencies = [ + {org = "ballerina", name = "cache"}, + {org = "ballerina", name = "crypto"}, + {org = "ballerina", name = "jballerina.java"}, + {org = "ballerina", name = "log"}, + {org = "ballerina", name = "time"}, + {org = "ballerina", name = "url"} +] + +[[package]] +org = "ballerina" +name = "observe" +version = "1.2.3" +dependencies = [ + {org = "ballerina", name = "jballerina.java"} +] + +[[package]] +org = "ballerina" +name = "os" +version = "1.8.0" +dependencies = [ + {org = "ballerina", name = "io"}, + {org = "ballerina", name = "jballerina.java"} +] + +[[package]] +org = "ballerina" +name = "task" +version = "2.5.0" +dependencies = [ + {org = "ballerina", name = "jballerina.java"}, + {org = "ballerina", name = "time"} +] + +[[package]] +org = "ballerina" +name = "time" +version = "2.4.0" +dependencies = [ + {org = "ballerina", name = "jballerina.java"} +] + +[[package]] +org = "ballerina" +name = "url" +version = "2.4.0" +dependencies = [ + {org = "ballerina", name = "jballerina.java"} +] + +[[package]] +org = "ballerina" +name = "uuid" +version = "1.7.0" +dependencies = [ + {org = "ballerina", name = "crypto"}, + {org = "ballerina", name = "jballerina.java"}, + {org = "ballerina", name = "lang.int"}, + {org = "ballerina", name = "time"} +] + +[[package]] +org = "ballerinax" +name = "health.base" +version = "1.0.3" +dependencies = [ + {org = "ballerina", name = "http"}, + {org = "ballerina", name = "io"}, + {org = "ballerina", name = "jwt"}, + {org = "ballerina", name = "log"}, + {org = "ballerina", name = "mime"}, + {org = "ballerina", name = "time"}, + {org = "ballerina", name = "uuid"} +] + +[[package]] +org = "ballerinax" +name = "health.fhir.r4" +version = "6.0.1" +dependencies = [ + {org = "ballerina", name = "constraint"}, + {org = "ballerina", name = "http"}, + {org = "ballerina", name = "io"}, + {org = "ballerina", name = "jwt"}, + {org = "ballerina", name = "lang.regexp"}, + {org = "ballerina", name = "lang.value"}, + {org = "ballerina", name = "log"}, + {org = "ballerina", name = "time"}, + {org = "ballerina", name = "url"}, + {org = "ballerina", name = "uuid"}, + {org = "ballerinax", name = "health.base"} +] +modules = [ + {org = "ballerinax", packageName = "health.fhir.r4", moduleName = "health.fhir.r4"} +] + +[[package]] +org = "ballerinax" +name = "health.fhir.r4.davincihrex100" +version = "1.0.0" +dependencies = [ + {org = "ballerina", name = "constraint"}, + {org = "ballerina", name = "log"}, + {org = "ballerinax", name = "health.fhir.r4"} +] +modules = [ + {org = "ballerinax", packageName = "health.fhir.r4.davincihrex100", moduleName = "health.fhir.r4.davincihrex100"} +] + diff --git a/davincihrex100/Package.md b/davincihrex100/Package.md new file mode 100644 index 00000000..5c509853 --- /dev/null +++ b/davincihrex100/Package.md @@ -0,0 +1,57 @@ +Ballerina package containing FHIR resource data models +compliant with http://hl7.org/fhir/us/davinci-hrex/ implementation guide. + +# FHIR R4 Da Vinci HREX package + +## Package Overview + +| | | +|----------------------|----------------------| +| FHIR version | R4 | +| Implementation Guide | http://hl7.org/fhir/us/davinci-hrex/ | + + +**Note:** +**This package only supports FHIR JSON payload format only. FHIR XML payload support will be added soon.** + +## Capabilities and features + +### Supported FHIR resource types + +| | | +|------------------|---------------------------------------------| +| 1). HRexMemberMatchRequestParameters | [[Definition]][s1] [[Ballerina Record]][m1] | +| 2). HRexPractitioner | [[Definition]][s2] [[Ballerina Record]][m2] | +| 3). HRexMemberMatchResponseParameters | [[Definition]][s3] [[Ballerina Record]][m3] | +| 4). HRexProvenance | [[Definition]][s4] [[Ballerina Record]][m4] | +| 5). HRexConsent | [[Definition]][s5] [[Ballerina Record]][m5] | +| 6). HRexOrganization | [[Definition]][s6] [[Ballerina Record]][m6] | +| 7). HRexPractitionerRole | [[Definition]][s7] [[Ballerina Record]][m7] | +| 8). HRexCoverage | [[Definition]][s8] [[Ballerina Record]][m8] | +| 9). HRexTaskDataRequest | [[Definition]][s9] [[Ballerina Record]][m9] | +| 10). HRexPatientDemographics | [[Definition]][s10] [[Ballerina Record]][m10] | +| 11). HRexClaimResponse | [[Definition]][s11] [[Ballerina Record]][m11] | + +[m1]: https://lib.ballerina.io/healthcare/hrex/1.0.0#HRexMemberMatchRequestParameters +[m2]: https://lib.ballerina.io/healthcare/hrex/1.0.0#HRexPractitioner +[m3]: https://lib.ballerina.io/healthcare/hrex/1.0.0#HRexMemberMatchResponseParameters +[m4]: https://lib.ballerina.io/healthcare/hrex/1.0.0#HRexProvenance +[m5]: https://lib.ballerina.io/healthcare/hrex/1.0.0#HRexConsent +[m6]: https://lib.ballerina.io/healthcare/hrex/1.0.0#HRexOrganization +[m7]: https://lib.ballerina.io/healthcare/hrex/1.0.0#HRexPractitionerRole +[m8]: https://lib.ballerina.io/healthcare/hrex/1.0.0#HRexCoverage +[m9]: https://lib.ballerina.io/healthcare/hrex/1.0.0#HRexTaskDataRequest +[m10]: https://lib.ballerina.io/healthcare/hrex/1.0.0#HRexPatientDemographics +[m11]: https://lib.ballerina.io/healthcare/hrex/1.0.0#HRexClaimResponse + +[s1]: http://hl7.org/fhir/us/davinci-hrex/StructureDefinition/hrex-parameters-member-match-in +[s2]: http://hl7.org/fhir/us/davinci-hrex/StructureDefinition/hrex-practitioner +[s3]: http://hl7.org/fhir/us/davinci-hrex/StructureDefinition/hrex-parameters-member-match-out +[s4]: http://hl7.org/fhir/us/davinci-hrex/StructureDefinition/hrex-provenance +[s5]: http://hl7.org/fhir/us/davinci-hrex/StructureDefinition/hrex-consent +[s6]: http://hl7.org/fhir/us/davinci-hrex/StructureDefinition/hrex-organization +[s7]: http://hl7.org/fhir/us/davinci-hrex/StructureDefinition/hrex-practitionerrole +[s8]: http://hl7.org/fhir/us/davinci-hrex/StructureDefinition/hrex-coverage +[s9]: http://hl7.org/fhir/us/davinci-hrex/StructureDefinition/hrex-task-data-request +[s10]: http://hl7.org/fhir/us/davinci-hrex/StructureDefinition/hrex-patient-demographics +[s11]: http://hl7.org/fhir/us/davinci-hrex/StructureDefinition/hrex-claimresponse diff --git a/davincihrex100/initializer.bal b/davincihrex100/initializer.bal new file mode 100644 index 00000000..9407a89e --- /dev/null +++ b/davincihrex100/initializer.bal @@ -0,0 +1,106 @@ +// Copyright (c) 2023, WSO2 LLC. (http://www.wso2.com). + +// WSO2 LLC. licenses this file to you under the Apache License, +// Version 2.0 (the "License"); you may not use this file except +// in compliance with the License. +// You may obtain a copy of the License at + +// http://www.apache.org/licenses/LICENSE-2.0 + +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. + +// AUTO-GENERATED FILE. +// This file is auto-generated by Ballerina. + +import ballerinax/health.fhir.r4; +import ballerina/log; + +const FHIR_IG = "hrex"; + +# Initializer for the module +# + return - returns error if error occurred +function init() returns r4:FHIRError? { + // Anything to initialize should happen here here + + //update terminology processor + // TODO: https://github.com/wso2-enterprise/open-healthcare/issues/1047 + r4:InMemoryTerminologyLoader terminologyLoader = new(FHIR_CODE_SYSTEMS, FHIR_VALUE_SETS); + r4:Terminology terminology = check terminologyLoader.load(); + + readonly & r4:IGInfoRecord baseIgRecord = { + title: "hrex", + name: "hrex", + terminology: terminology, + profiles: { + "http://hl7.org/fhir/us/davinci-hrex/StructureDefinition/hrex-parameters-member-match-in": { + url: "http://hl7.org/fhir/us/davinci-hrex/StructureDefinition/hrex-parameters-member-match-in", + resourceType: "Parameters", + modelType: HRexMemberMatchRequestParameters + }, + "http://hl7.org/fhir/us/davinci-hrex/StructureDefinition/hrex-practitioner": { + url: "http://hl7.org/fhir/us/davinci-hrex/StructureDefinition/hrex-practitioner", + resourceType: "Practitioner", + modelType: HRexPractitioner + }, + "http://hl7.org/fhir/us/davinci-hrex/StructureDefinition/hrex-parameters-member-match-out": { + url: "http://hl7.org/fhir/us/davinci-hrex/StructureDefinition/hrex-parameters-member-match-out", + resourceType: "Parameters", + modelType: HRexMemberMatchResponseParameters + }, + "http://hl7.org/fhir/us/davinci-hrex/StructureDefinition/hrex-provenance": { + url: "http://hl7.org/fhir/us/davinci-hrex/StructureDefinition/hrex-provenance", + resourceType: "Provenance", + modelType: HRexProvenance + }, + "http://hl7.org/fhir/us/davinci-hrex/StructureDefinition/hrex-consent": { + url: "http://hl7.org/fhir/us/davinci-hrex/StructureDefinition/hrex-consent", + resourceType: "Consent", + modelType: HRexConsent + }, + "http://hl7.org/fhir/us/davinci-hrex/StructureDefinition/hrex-organization": { + url: "http://hl7.org/fhir/us/davinci-hrex/StructureDefinition/hrex-organization", + resourceType: "Organization", + modelType: HRexOrganization + }, + "http://hl7.org/fhir/us/davinci-hrex/StructureDefinition/hrex-practitionerrole": { + url: "http://hl7.org/fhir/us/davinci-hrex/StructureDefinition/hrex-practitionerrole", + resourceType: "PractitionerRole", + modelType: HRexPractitionerRole + }, + "http://hl7.org/fhir/us/davinci-hrex/StructureDefinition/hrex-coverage": { + url: "http://hl7.org/fhir/us/davinci-hrex/StructureDefinition/hrex-coverage", + resourceType: "Coverage", + modelType: HRexCoverage + }, + "http://hl7.org/fhir/us/davinci-hrex/StructureDefinition/hrex-task-data-request": { + url: "http://hl7.org/fhir/us/davinci-hrex/StructureDefinition/hrex-task-data-request", + resourceType: "Task", + modelType: HRexTaskDataRequest + }, + "http://hl7.org/fhir/us/davinci-hrex/StructureDefinition/hrex-patient-demographics": { + url: "http://hl7.org/fhir/us/davinci-hrex/StructureDefinition/hrex-patient-demographics", + resourceType: "Patient", + modelType: HRexPatientDemographics + }, + "http://hl7.org/fhir/us/davinci-hrex/StructureDefinition/hrex-claimresponse": { + url: "http://hl7.org/fhir/us/davinci-hrex/StructureDefinition/hrex-claimresponse", + resourceType: "ClaimResponse", + modelType: HRexClaimResponse + } + }, + searchParameters: [DAVINCIHEALTHRECORDEXCHANGEHREX_IG_SEARCH_PARAMS_1], + operations: DAVINCIHEALTHRECORDEXCHANGEHREX_IG_OPERATIONS.cloneReadOnly() + }; + r4:FHIRImplementationGuide baseImplementationGuide = new(baseIgRecord); + check fhirRegistry.addImplementationGuide(baseImplementationGuide); + + log:printDebug("FHIR R4 DaVinciHealthRecordExchangeHRex Module initialized."); +} + +# This empty function is used to initialize the module by other modules/packages. +public isolated function initialize() {}; diff --git a/davincihrex100/resource_hrex_claim_response.bal b/davincihrex100/resource_hrex_claim_response.bal new file mode 100644 index 00000000..a54748a6 --- /dev/null +++ b/davincihrex100/resource_hrex_claim_response.bal @@ -0,0 +1,1766 @@ +// Copyright (c) 2023, WSO2 LLC. (http://www.wso2.com). + +// WSO2 LLC. licenses this file to you under the Apache License, +// Version 2.0 (the "License"); you may not use this file except +// in compliance with the License. +// You may obtain a copy of the License at + +// http://www.apache.org/licenses/LICENSE-2.0 + +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. + +// AUTO-GENERATED FILE. +// This file is auto-generated by Ballerina. + +import ballerina/constraint; +import ballerinax/health.fhir.r4; + +public const string PROFILE_BASE_HREXCLAIMRESPONSE = "http://hl7.org/fhir/us/davinci-hrex/StructureDefinition/hrex-claimresponse"; +public const RESOURCE_NAME_HREXCLAIMRESPONSE = "ClaimResponse"; + +# FHIR HRexClaimResponse resource record. +# +# + resourceType - The type of the resource describes +# + insurance - Financial instruments for reimbursement for the health care products and services specified on the claim. +# + request - Original request resource reference. +# + extension - May be used to represent additional information that is not part of the basic definition of the resource. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. +# + use - A code to indicate whether the nature of the request is: to request adjudication of products and services previously rendered; or requesting authorization and adjudication for provision in the future; or requesting the non-binding adjudication of the listed products and services which could be provided in the future. +# + modifierExtension - May be used to represent additional information that is not part of the basic definition of the resource and that modifies the understanding of the element that contains it and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer is allowed to define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions. Modifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself). +# + payeeType - Type of Party to be reimbursed: subscriber, provider, other. +# + preAuthRef - Reference from the Insurer which is used in later communications which refers to this adjudication. +# + language - The base language in which the resource is written. +# + 'error - Errors encountered during the processing of the adjudication. +# + 'type - A finer grained suite of claim type codes which may convey additional information such as Inpatient vs Outpatient and/or a specialty service. +# + processNote - A note that describes or explains adjudication results in a human readable form. +# + addItem - The first-tier service adjudications for payor added product or service lines. +# + total - Categorized monetary totals for the adjudication. +# + fundsReserve - A code, used only on a response to a preauthorization, to indicate whether the benefits payable have been reserved and for whom. +# + insurer - The party responsible for authorization, adjudication and reimbursement. +# + patient - The party to whom the professional services and/or products have been supplied or are being considered and for whom actual for facast reimbursement is sought. +# + communicationRequest - Request for additional supporting or authorizing information. +# + payment - Payment details for the adjudication of the claim. +# + id - The logical id of the resource, as used in the URL for the resource. Once assigned, this value never changes. +# + text - A human-readable narrative that contains a summary of the resource and can be used to represent the content of the resource to a human. The narrative need not encode all the structured data, but is required to contain sufficient detail to make it 'clinically safe' for a human to just read the narrative. Resource definitions may define what content should be represented in the narrative to ensure clinical safety. +# + outcome - The outcome of the claim, predetermination, or preauthorization processing. +# + identifier - A unique identifier assigned to this claim response. +# + item - A claim line. Either a simple (a product or service) or a 'group' of details which can also be a simple items or groups of sub-details. +# + preAuthPeriod - The time frame during which this authorization is effective. +# + formCode - A code for the form to be used for printing the content. +# + created - The date this resource was created. +# + requestor - The provider which is responsible for the claim, predetermination or preauthorization. +# + contained - These resources do not have an independent existence apart from the resource that contains them - they cannot be identified independently, and nor can they have their own independent transaction scope. +# + disposition - A human readable description of the status of the adjudication. +# + form - The actual form, by reference or inclusion, for printing the content or an EOB. +# + meta - The metadata about the resource. This is content that is maintained by the infrastructure. Changes to the content might not always be associated with version changes to the resource. +# + implicitRules - A reference to a set of rules that were followed when the resource was constructed, and which must be understood when processing the content. Often, this is a reference to an implementation guide that defines the special rules along with other profiles etc. +# + subType - A finer grained suite of claim type codes which may convey additional information such as Inpatient vs Outpatient and/or a specialty service. +# + status - The status of the resource instance. +@r4:ResourceDefinition { + resourceType: "ClaimResponse", + baseType: r4:DomainResource, + profile: "http://hl7.org/fhir/us/davinci-hrex/StructureDefinition/hrex-claimresponse", + elements: { + "insurance" : { + name: "insurance", + dataType: HRexClaimResponseInsurance, + min: 0, + max: int:MAX_VALUE, + isArray: true, + path: "ClaimResponse.insurance" + }, + "request" : { + name: "request", + dataType: r4:Reference, + min: 0, + max: 1, + isArray: false, + path: "ClaimResponse.request" + }, + "extension" : { + name: "extension", + dataType: r4:Extension, + min: 0, + max: int:MAX_VALUE, + isArray: true, + path: "ClaimResponse.extension" + }, + "use" : { + name: "use", + dataType: HRexClaimResponseUse, + min: 1, + max: 1, + isArray: false, + path: "ClaimResponse.use", + valueSet: "http://hl7.org/fhir/ValueSet/claim-use|4.0.1" + }, + "modifierExtension" : { + name: "modifierExtension", + dataType: r4:Extension, + min: 0, + max: int:MAX_VALUE, + isArray: true, + path: "ClaimResponse.modifierExtension" + }, + "payeeType" : { + name: "payeeType", + dataType: r4:CodeableConcept, + min: 0, + max: 1, + isArray: false, + path: "ClaimResponse.payeeType", + valueSet: "http://hl7.org/fhir/ValueSet/payeetype" + }, + "preAuthRef" : { + name: "preAuthRef", + dataType: string, + min: 1, + max: 1, + isArray: false, + path: "ClaimResponse.preAuthRef" + }, + "language" : { + name: "language", + dataType: r4:code, + min: 0, + max: 1, + isArray: false, + path: "ClaimResponse.language", + valueSet: "http://hl7.org/fhir/ValueSet/languages" + }, + "error" : { + name: "error", + dataType: HRexClaimResponseError, + min: 0, + max: int:MAX_VALUE, + isArray: true, + path: "ClaimResponse.error" + }, + "type" : { + name: "type", + dataType: r4:CodeableConcept, + min: 1, + max: 1, + isArray: false, + path: "ClaimResponse.type", + valueSet: "http://hl7.org/fhir/ValueSet/claim-type" + }, + "processNote" : { + name: "processNote", + dataType: HRexClaimResponseProcessNote, + min: 0, + max: int:MAX_VALUE, + isArray: true, + path: "ClaimResponse.processNote" + }, + "addItem" : { + name: "addItem", + dataType: HRexClaimResponseAddItem, + min: 0, + max: int:MAX_VALUE, + isArray: true, + path: "ClaimResponse.addItem" + }, + "total" : { + name: "total", + dataType: HRexClaimResponseTotal, + min: 0, + max: int:MAX_VALUE, + isArray: true, + path: "ClaimResponse.total" + }, + "fundsReserve" : { + name: "fundsReserve", + dataType: r4:CodeableConcept, + min: 0, + max: 1, + isArray: false, + path: "ClaimResponse.fundsReserve", + valueSet: "http://hl7.org/fhir/ValueSet/fundsreserve" + }, + "insurer" : { + name: "insurer", + dataType: r4:Reference, + min: 1, + max: 1, + isArray: false, + path: "ClaimResponse.insurer" + }, + "patient" : { + name: "patient", + dataType: r4:Reference, + min: 1, + max: 1, + isArray: false, + path: "ClaimResponse.patient" + }, + "communicationRequest" : { + name: "communicationRequest", + dataType: r4:Reference, + min: 0, + max: int:MAX_VALUE, + isArray: true, + path: "ClaimResponse.communicationRequest" + }, + "payment" : { + name: "payment", + dataType: HRexClaimResponsePayment, + min: 0, + max: 1, + isArray: false, + path: "ClaimResponse.payment" + }, + "id" : { + name: "id", + dataType: string, + min: 0, + max: 1, + isArray: false, + path: "ClaimResponse.id" + }, + "text" : { + name: "text", + dataType: r4:Narrative, + min: 0, + max: 1, + isArray: false, + path: "ClaimResponse.text" + }, + "outcome" : { + name: "outcome", + dataType: HRexClaimResponseOutcome, + min: 1, + max: 1, + isArray: false, + path: "ClaimResponse.outcome", + valueSet: "http://hl7.org/fhir/ValueSet/remittance-outcome|4.0.1" + }, + "identifier" : { + name: "identifier", + dataType: r4:Identifier, + min: 0, + max: int:MAX_VALUE, + isArray: true, + path: "ClaimResponse.identifier" + }, + "item" : { + name: "item", + dataType: HRexClaimResponseItem, + min: 0, + max: int:MAX_VALUE, + isArray: true, + path: "ClaimResponse.item" + }, + "preAuthPeriod" : { + name: "preAuthPeriod", + dataType: r4:Period, + min: 0, + max: 1, + isArray: false, + path: "ClaimResponse.preAuthPeriod" + }, + "formCode" : { + name: "formCode", + dataType: r4:CodeableConcept, + min: 0, + max: 1, + isArray: false, + path: "ClaimResponse.formCode", + valueSet: "http://hl7.org/fhir/ValueSet/forms" + }, + "created" : { + name: "created", + dataType: r4:dateTime, + min: 1, + max: 1, + isArray: false, + path: "ClaimResponse.created" + }, + "requestor" : { + name: "requestor", + dataType: r4:Reference, + min: 0, + max: 1, + isArray: false, + path: "ClaimResponse.requestor" + }, + "contained" : { + name: "contained", + dataType: r4:Resource, + min: 0, + max: int:MAX_VALUE, + isArray: true, + path: "ClaimResponse.contained" + }, + "disposition" : { + name: "disposition", + dataType: string, + min: 0, + max: 1, + isArray: false, + path: "ClaimResponse.disposition" + }, + "form" : { + name: "form", + dataType: r4:Attachment, + min: 0, + max: 1, + isArray: false, + path: "ClaimResponse.form" + }, + "meta" : { + name: "meta", + dataType: r4:Meta, + min: 0, + max: 1, + isArray: false, + path: "ClaimResponse.meta" + }, + "implicitRules" : { + name: "implicitRules", + dataType: r4:uri, + min: 0, + max: 1, + isArray: false, + path: "ClaimResponse.implicitRules" + }, + "subType" : { + name: "subType", + dataType: r4:CodeableConcept, + min: 0, + max: 1, + isArray: false, + path: "ClaimResponse.subType", + valueSet: "http://hl7.org/fhir/ValueSet/claim-subtype" + }, + "status" : { + name: "status", + dataType: HRexClaimResponseStatus, + min: 1, + max: 1, + isArray: false, + path: "ClaimResponse.status", + valueSet: "http://hl7.org/fhir/ValueSet/fm-status|4.0.1" + } + }, + serializers: { + 'xml: r4:fhirResourceXMLSerializer, + 'json: r4:fhirResourceJsonSerializer + } +} +public type HRexClaimResponse record {| + *r4:DomainResource; + + RESOURCE_NAME_HREXCLAIMRESPONSE resourceType = RESOURCE_NAME_HREXCLAIMRESPONSE; + + HRexClaimResponseInsurance[] insurance?; + r4:Reference request?; + r4:Extension[] extension?; + HRexClaimResponseUse use; + r4:Extension[] modifierExtension?; + r4:CodeableConcept payeeType?; + string preAuthRef; + r4:code language?; + HRexClaimResponseError[] 'error?; + r4:CodeableConcept 'type; + HRexClaimResponseProcessNote[] processNote?; + HRexClaimResponseAddItem[] addItem?; + HRexClaimResponseTotal[] total?; + r4:CodeableConcept fundsReserve?; + r4:Reference insurer; + r4:Reference patient; + r4:Reference[] communicationRequest?; + HRexClaimResponsePayment payment?; + string id?; + r4:Narrative text?; + HRexClaimResponseOutcome outcome; + r4:Identifier[] identifier?; + HRexClaimResponseItem[] item?; + r4:Period preAuthPeriod?; + r4:CodeableConcept formCode?; + r4:dateTime created; + r4:Reference requestor?; + r4:Resource[] contained?; + string disposition?; + r4:Attachment form?; + r4:Meta meta?; + r4:uri implicitRules?; + r4:CodeableConcept subType?; + HRexClaimResponseStatus status; + r4:Element ...; +|}; + +# FHIR HRexClaimResponseItemAdjudication datatype record. +# +# + reason - A code supporting the understanding of the adjudication result and explaining variance from expected amount. +# + amount - Monetary amount associated with the category. +# + extension - May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. +# + modifierExtension - May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions. Modifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself). +# + id - Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces. +# + category - A code to indicate the information type of this adjudication record. Information types may include the value submitted, maximum values or percentages allowed or payable under the plan, amounts that: the patient is responsible for in aggregate or pertaining to this item; amounts paid by other coverages; and, the benefit payable for this item. +# + value - A non-monetary value associated with the category. Mutually exclusive to the amount element above. +@r4:DataTypeDefinition { + name: "HRexClaimResponseItemAdjudication", + baseType: (), + elements: { + "reason": { + name: "reason", + dataType: r4:CodeableConcept, + min: 0, + max: 1, + isArray: false, + description: "A code supporting the understanding of the adjudication result and explaining variance from expected amount.", + path: "ClaimResponse.item.adjudication.reason" + }, + "amount": { + name: "amount", + dataType: r4:Money, + min: 0, + max: 1, + isArray: false, + description: "Monetary amount associated with the category.", + path: "ClaimResponse.item.adjudication.amount" + }, + "extension": { + name: "extension", + dataType: r4:Extension, + min: 0, + max: int:MAX_VALUE, + isArray: true, + description: "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension.", + path: "ClaimResponse.item.adjudication.extension" + }, + "modifierExtension": { + name: "modifierExtension", + dataType: r4:Extension, + min: 0, + max: int:MAX_VALUE, + isArray: true, + description: "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions. Modifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself).", + path: "ClaimResponse.item.adjudication.modifierExtension" + }, + "id": { + name: "id", + dataType: string, + min: 0, + max: 1, + isArray: false, + description: "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces.", + path: "ClaimResponse.item.adjudication.id" + }, + "category": { + name: "category", + dataType: r4:CodeableConcept, + min: 1, + max: 1, + isArray: false, + description: "A code to indicate the information type of this adjudication record. Information types may include the value submitted, maximum values or percentages allowed or payable under the plan, amounts that: the patient is responsible for in aggregate or pertaining to this item; amounts paid by other coverages; and, the benefit payable for this item.", + path: "ClaimResponse.item.adjudication.category" + }, + "value": { + name: "value", + dataType: decimal, + min: 0, + max: 1, + isArray: false, + description: "A non-monetary value associated with the category. Mutually exclusive to the amount element above.", + path: "ClaimResponse.item.adjudication.value" + } + }, + serializers: { + 'xml: r4:complexDataTypeXMLSerializer, + 'json: r4:complexDataTypeJsonSerializer + } +} +public type HRexClaimResponseItemAdjudication record {| + *r4:BackboneElement; + + r4:CodeableConcept reason?; + r4:Money amount?; + r4:Extension[] extension?; + r4:Extension[] modifierExtension?; + string id?; + r4:CodeableConcept category; + decimal value?; +|}; + +# FHIR HRexClaimResponseProcessNote datatype record. +# +# + number - A number to uniquely identify a note entry. +# + extension - May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. +# + modifierExtension - May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions. Modifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself). +# + language - A code to define the language used in the text of the note. +# + id - Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces. +# + text - The explanation or description associated with the processing. +# + 'type - The business purpose of the note text. +@r4:DataTypeDefinition { + name: "HRexClaimResponseProcessNote", + baseType: (), + elements: { + "number": { + name: "number", + dataType: r4:positiveInt, + min: 0, + max: 1, + isArray: false, + description: "A number to uniquely identify a note entry.", + path: "ClaimResponse.processNote.number" + }, + "extension": { + name: "extension", + dataType: r4:Extension, + min: 0, + max: int:MAX_VALUE, + isArray: true, + description: "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension.", + path: "ClaimResponse.processNote.extension" + }, + "modifierExtension": { + name: "modifierExtension", + dataType: r4:Extension, + min: 0, + max: int:MAX_VALUE, + isArray: true, + description: "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions. Modifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself).", + path: "ClaimResponse.processNote.modifierExtension" + }, + "language": { + name: "language", + dataType: r4:CodeableConcept, + min: 0, + max: 1, + isArray: false, + description: "A code to define the language used in the text of the note.", + path: "ClaimResponse.processNote.language" + }, + "id": { + name: "id", + dataType: string, + min: 0, + max: 1, + isArray: false, + description: "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces.", + path: "ClaimResponse.processNote.id" + }, + "text": { + name: "text", + dataType: string, + min: 1, + max: 1, + isArray: false, + description: "The explanation or description associated with the processing.", + path: "ClaimResponse.processNote.text" + }, + "type": { + name: "type", + dataType: HRexClaimResponseProcessNoteType, + min: 0, + max: 1, + isArray: false, + description: "The business purpose of the note text.", + path: "ClaimResponse.processNote.type" + } + }, + serializers: { + 'xml: r4:complexDataTypeXMLSerializer, + 'json: r4:complexDataTypeJsonSerializer + } +} +public type HRexClaimResponseProcessNote record {| + *r4:BackboneElement; + + r4:positiveInt number?; + r4:Extension[] extension?; + r4:Extension[] modifierExtension?; + r4:CodeableConcept language?; + string id?; + string text; + HRexClaimResponseProcessNoteType 'type?; +|}; + +# FHIR HRexClaimResponseAddItem datatype record. +# +# + unitPrice - If the item is not a group then this is the fee for the product or service, otherwise this is the total of the fees for the details of the group. +# + extension - An Extension +# + quantity - The number of repetitions of a service or product. +# + programCode - Identifies the program under which this may be recovered. +# + modifier - Item typification or modifiers codes to convey additional context for the product or service. +# + modifierExtension - May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions. Modifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself). +# + subdetailSequence - The sequence number of the sub-details within the details within the claim item which this line is intended to replace. +# + productOrService - When the value is a group code then this item collects a set of related claim details, otherwise this contains the product, service, drug or other billing code for the item. +# + noteNumber - The numbers associated with notes below which apply to the adjudication of this item. +# + servicedPeriod - The date or dates when the service or product was supplied, performed or completed. +# + itemSequence - Claim items which this service line is intended to replace. +# + bodySite - Physical service site on the patient (limb, tooth, etc.). +# + locationCodeableConcept - Where the product or service was provided. +# + provider - The providers who are authorized for the services rendered to the patient. +# + detailSequence - The sequence number of the details within the claim item which this line is intended to replace. +# + subSite - A region or surface of the bodySite, e.g. limb region or tooth surface(s). +# + id - Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces. +# + detail - The second-tier service adjudications for payor added services. +# + servicedDate - The date or dates when the service or product was supplied, performed or completed. +# + factor - A real number that represents a multiplier used in determining the overall value of services delivered and/or goods received. The concept of a Factor allows for a discount or surcharge multiplier to be applied to a monetary amount. +# + net - The quantity times the unit price for an additional service or product or charge. +@r4:DataTypeDefinition { + name: "HRexClaimResponseAddItem", + baseType: (), + elements: { + "unitPrice": { + name: "unitPrice", + dataType: r4:Money, + min: 0, + max: 1, + isArray: false, + description: "If the item is not a group then this is the fee for the product or service, otherwise this is the total of the fees for the details of the group.", + path: "ClaimResponse.addItem.unitPrice" + }, + "extension": { + name: "extension", + dataType: r4:Extension, + min: 0, + max: int:MAX_VALUE, + isArray: true, + description: "An Extension", + path: "ClaimResponse.addItem.extension" + }, + "quantity": { + name: "quantity", + dataType: r4:Quantity, + min: 0, + max: 1, + isArray: false, + description: "The number of repetitions of a service or product.", + path: "ClaimResponse.addItem.quantity" + }, + "programCode": { + name: "programCode", + dataType: r4:CodeableConcept, + min: 0, + max: int:MAX_VALUE, + isArray: true, + description: "Identifies the program under which this may be recovered.", + path: "ClaimResponse.addItem.programCode" + }, + "modifier": { + name: "modifier", + dataType: r4:CodeableConcept, + min: 0, + max: int:MAX_VALUE, + isArray: true, + description: "Item typification or modifiers codes to convey additional context for the product or service.", + path: "ClaimResponse.addItem.modifier" + }, + "modifierExtension": { + name: "modifierExtension", + dataType: r4:Extension, + min: 0, + max: int:MAX_VALUE, + isArray: true, + description: "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions. Modifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself).", + path: "ClaimResponse.addItem.modifierExtension" + }, + "subdetailSequence": { + name: "subdetailSequence", + dataType: r4:positiveInt, + min: 0, + max: int:MAX_VALUE, + isArray: true, + description: "The sequence number of the sub-details within the details within the claim item which this line is intended to replace.", + path: "ClaimResponse.addItem.subdetailSequence" + }, + "productOrService": { + name: "productOrService", + dataType: r4:CodeableConcept, + min: 1, + max: 1, + isArray: false, + description: "When the value is a group code then this item collects a set of related claim details, otherwise this contains the product, service, drug or other billing code for the item.", + path: "ClaimResponse.addItem.productOrService" + }, + "noteNumber": { + name: "noteNumber", + dataType: r4:positiveInt, + min: 0, + max: int:MAX_VALUE, + isArray: true, + description: "The numbers associated with notes below which apply to the adjudication of this item.", + path: "ClaimResponse.addItem.noteNumber" + }, + "servicedPeriod": { + name: "servicedPeriod", + dataType: r4:Period, + min: 0, + max: 1, + isArray: false, + description: "The date or dates when the service or product was supplied, performed or completed.", + path: "ClaimResponse.addItem.serviced[x]" + }, + "itemSequence": { + name: "itemSequence", + dataType: r4:positiveInt, + min: 0, + max: int:MAX_VALUE, + isArray: true, + description: "Claim items which this service line is intended to replace.", + path: "ClaimResponse.addItem.itemSequence" + }, + "bodySite": { + name: "bodySite", + dataType: r4:CodeableConcept, + min: 0, + max: 1, + isArray: false, + description: "Physical service site on the patient (limb, tooth, etc.).", + path: "ClaimResponse.addItem.bodySite" + }, + "locationCodeableConcept": { + name: "locationCodeableConcept", + dataType: r4:CodeableConcept, + min: 0, + max: 1, + isArray: false, + description: "Where the product or service was provided.", + path: "ClaimResponse.addItem.location[x]" + }, + "provider": { + name: "provider", + dataType: r4:Reference, + min: 0, + max: int:MAX_VALUE, + isArray: true, + description: "The providers who are authorized for the services rendered to the patient.", + path: "ClaimResponse.addItem.provider" + }, + "detailSequence": { + name: "detailSequence", + dataType: r4:positiveInt, + min: 0, + max: int:MAX_VALUE, + isArray: true, + description: "The sequence number of the details within the claim item which this line is intended to replace.", + path: "ClaimResponse.addItem.detailSequence" + }, + "subSite": { + name: "subSite", + dataType: r4:CodeableConcept, + min: 0, + max: int:MAX_VALUE, + isArray: true, + description: "A region or surface of the bodySite, e.g. limb region or tooth surface(s).", + path: "ClaimResponse.addItem.subSite" + }, + "id": { + name: "id", + dataType: string, + min: 0, + max: 1, + isArray: false, + description: "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces.", + path: "ClaimResponse.addItem.id" + }, + "detail": { + name: "detail", + dataType: HRexClaimResponseAddItemDetail, + min: 0, + max: int:MAX_VALUE, + isArray: true, + description: "The second-tier service adjudications for payor added services.", + path: "ClaimResponse.addItem.detail" + }, + "servicedDate": { + name: "servicedDate", + dataType: r4:date, + min: 0, + max: 1, + isArray: false, + description: "The date or dates when the service or product was supplied, performed or completed.", + path: "ClaimResponse.addItem.serviced[x]" + }, + "factor": { + name: "factor", + dataType: decimal, + min: 0, + max: 1, + isArray: false, + description: "A real number that represents a multiplier used in determining the overall value of services delivered and/or goods received. The concept of a Factor allows for a discount or surcharge multiplier to be applied to a monetary amount.", + path: "ClaimResponse.addItem.factor" + }, + "net": { + name: "net", + dataType: r4:Money, + min: 0, + max: 1, + isArray: false, + description: "The quantity times the unit price for an additional service or product or charge.", + path: "ClaimResponse.addItem.net" + } + }, + serializers: { + 'xml: r4:complexDataTypeXMLSerializer, + 'json: r4:complexDataTypeJsonSerializer + } +} +public type HRexClaimResponseAddItem record {| + *r4:BackboneElement; + + r4:Extension[] extension?; + r4:CodeableConcept[] modifier?; + r4:Extension[] modifierExtension?; + r4:positiveInt[] subdetailSequence?; + r4:CodeableConcept productOrService; + r4:positiveInt[] noteNumber?; + r4:Period servicedPeriod?; + r4:positiveInt[] itemSequence?; + r4:CodeableConcept locationCodeableConcept?; + r4:Reference[] provider?; + string id?; + decimal factor?; + r4:Money net?; + r4:Money unitPrice?; + r4:Quantity quantity?; + r4:CodeableConcept[] programCode?; + r4:CodeableConcept bodySite?; + r4:positiveInt[] detailSequence?; + r4:CodeableConcept[] subSite?; + HRexClaimResponseAddItemDetail[] detail?; + r4:date servicedDate?; +|}; + +# HRexClaimResponseUse enum +public enum HRexClaimResponseUse { + CODE_USE_PREDETERMINATION = "predetermination", + CODE_USE_PREAUTHORIZATION = "preauthorization", + CODE_USE_CLAIM = "claim" +} + +# HRexClaimResponseProcessNoteType enum +public enum HRexClaimResponseProcessNoteType { + CODE_TYPE_PRINT = "print", + CODE_TYPE_DISPLAY = "display", + CODE_TYPE_PRINTOPER = "printoper" +} + +# HRexClaimResponseOutcome enum +public enum HRexClaimResponseOutcome { + CODE_OUTCOME_QUEUED = "queued", + CODE_OUTCOME_COMPLETE = "complete", + CODE_OUTCOME_ERROR = "error", + CODE_OUTCOME_PARTIAL = "partial" +} + +# FHIR HRexClaimResponseItemDetailSubDetail datatype record. +# +# + subDetailSequence - A number to uniquely reference the claim sub-detail entry. +# + extension - May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. +# + modifierExtension - May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions. Modifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself). +# + id - Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces. +# + noteNumber - The numbers associated with notes below which apply to the adjudication of this item. +@r4:DataTypeDefinition { + name: "HRexClaimResponseItemDetailSubDetail", + baseType: (), + elements: { + "subDetailSequence": { + name: "subDetailSequence", + dataType: r4:positiveInt, + min: 1, + max: 1, + isArray: false, + description: "A number to uniquely reference the claim sub-detail entry.", + path: "ClaimResponse.item.detail.subDetail.subDetailSequence" + }, + "extension": { + name: "extension", + dataType: r4:Extension, + min: 0, + max: int:MAX_VALUE, + isArray: true, + description: "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension.", + path: "ClaimResponse.item.detail.subDetail.extension" + }, + "modifierExtension": { + name: "modifierExtension", + dataType: r4:Extension, + min: 0, + max: int:MAX_VALUE, + isArray: true, + description: "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions. Modifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself).", + path: "ClaimResponse.item.detail.subDetail.modifierExtension" + }, + "id": { + name: "id", + dataType: string, + min: 0, + max: 1, + isArray: false, + description: "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces.", + path: "ClaimResponse.item.detail.subDetail.id" + }, + "noteNumber": { + name: "noteNumber", + dataType: r4:positiveInt, + min: 0, + max: int:MAX_VALUE, + isArray: true, + description: "The numbers associated with notes below which apply to the adjudication of this item.", + path: "ClaimResponse.item.detail.subDetail.noteNumber" + } + }, + serializers: { + 'xml: r4:complexDataTypeXMLSerializer, + 'json: r4:complexDataTypeJsonSerializer + } +} +public type HRexClaimResponseItemDetailSubDetail record {| + *r4:BackboneElement; + + r4:positiveInt subDetailSequence; + r4:Extension[] extension?; + r4:Extension[] modifierExtension?; + string id?; + r4:positiveInt[] noteNumber?; +|}; + +# FHIR HRexClaimResponseTotal datatype record. +# +# + amount - Monetary total amount associated with the category. +# + extension - May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. +# + modifierExtension - May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions. Modifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself). +# + id - Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces. +# + category - A code to indicate the information type of this adjudication record. Information types may include: the value submitted, maximum values or percentages allowed or payable under the plan, amounts that the patient is responsible for in aggregate or pertaining to this item, amounts paid by other coverages, and the benefit payable for this item. +@r4:DataTypeDefinition { + name: "HRexClaimResponseTotal", + baseType: (), + elements: { + "amount": { + name: "amount", + dataType: r4:Money, + min: 1, + max: 1, + isArray: false, + description: "Monetary total amount associated with the category.", + path: "ClaimResponse.total.amount" + }, + "extension": { + name: "extension", + dataType: r4:Extension, + min: 0, + max: int:MAX_VALUE, + isArray: true, + description: "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension.", + path: "ClaimResponse.total.extension" + }, + "modifierExtension": { + name: "modifierExtension", + dataType: r4:Extension, + min: 0, + max: int:MAX_VALUE, + isArray: true, + description: "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions. Modifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself).", + path: "ClaimResponse.total.modifierExtension" + }, + "id": { + name: "id", + dataType: string, + min: 0, + max: 1, + isArray: false, + description: "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces.", + path: "ClaimResponse.total.id" + }, + "category": { + name: "category", + dataType: r4:CodeableConcept, + min: 1, + max: 1, + isArray: false, + description: "A code to indicate the information type of this adjudication record. Information types may include: the value submitted, maximum values or percentages allowed or payable under the plan, amounts that the patient is responsible for in aggregate or pertaining to this item, amounts paid by other coverages, and the benefit payable for this item.", + path: "ClaimResponse.total.category" + } + }, + serializers: { + 'xml: r4:complexDataTypeXMLSerializer, + 'json: r4:complexDataTypeJsonSerializer + } +} +public type HRexClaimResponseTotal record {| + *r4:BackboneElement; + + r4:Money amount; + r4:Extension[] extension?; + r4:Extension[] modifierExtension?; + string id?; + r4:CodeableConcept category; +|}; + +# FHIR HRexClaimResponseError datatype record. +# +# + subDetailSequence - The sequence number of the sub-detail within the detail within the line item submitted which contains the error. This value is omitted when the error occurs outside of the item structure. +# + itemSequence - The sequence number of the line item submitted which contains the error. This value is omitted when the error occurs outside of the item structure. +# + extension - May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. +# + code - An error code, from a specified code system, which details why the claim could not be adjudicated. +# + detailSequence - The sequence number of the detail within the line item submitted which contains the error. This value is omitted when the error occurs outside of the item structure. +# + modifierExtension - May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions. Modifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself). +# + id - Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces. +@r4:DataTypeDefinition { + name: "HRexClaimResponseError", + baseType: (), + elements: { + "subDetailSequence": { + name: "subDetailSequence", + dataType: r4:positiveInt, + min: 0, + max: 1, + isArray: false, + description: "The sequence number of the sub-detail within the detail within the line item submitted which contains the error. This value is omitted when the error occurs outside of the item structure.", + path: "ClaimResponse.error.subDetailSequence" + }, + "itemSequence": { + name: "itemSequence", + dataType: r4:positiveInt, + min: 0, + max: 1, + isArray: false, + description: "The sequence number of the line item submitted which contains the error. This value is omitted when the error occurs outside of the item structure.", + path: "ClaimResponse.error.itemSequence" + }, + "extension": { + name: "extension", + dataType: r4:Extension, + min: 0, + max: int:MAX_VALUE, + isArray: true, + description: "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension.", + path: "ClaimResponse.error.extension" + }, + "code": { + name: "code", + dataType: r4:CodeableConcept, + min: 1, + max: 1, + isArray: false, + description: "An error code, from a specified code system, which details why the claim could not be adjudicated.", + path: "ClaimResponse.error.code" + }, + "detailSequence": { + name: "detailSequence", + dataType: r4:positiveInt, + min: 0, + max: 1, + isArray: false, + description: "The sequence number of the detail within the line item submitted which contains the error. This value is omitted when the error occurs outside of the item structure.", + path: "ClaimResponse.error.detailSequence" + }, + "modifierExtension": { + name: "modifierExtension", + dataType: r4:Extension, + min: 0, + max: int:MAX_VALUE, + isArray: true, + description: "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions. Modifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself).", + path: "ClaimResponse.error.modifierExtension" + }, + "id": { + name: "id", + dataType: string, + min: 0, + max: 1, + isArray: false, + description: "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces.", + path: "ClaimResponse.error.id" + } + }, + serializers: { + 'xml: r4:complexDataTypeXMLSerializer, + 'json: r4:complexDataTypeJsonSerializer + } +} +public type HRexClaimResponseError record {| + *r4:BackboneElement; + + r4:positiveInt subDetailSequence?; + r4:positiveInt itemSequence?; + r4:Extension[] extension?; + r4:CodeableConcept code; + r4:positiveInt detailSequence?; + r4:Extension[] modifierExtension?; + string id?; +|}; + +# FHIR HRexClaimResponsePayment datatype record. +# +# + date - Estimated date the payment will be issued or the actual issue date of payment. +# + identifier - Issuer's unique identifier for the payment instrument. +# + adjustmentReason - Reason for the payment adjustment. +# + amount - Benefits payable less any payment adjustment. +# + extension - May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. +# + modifierExtension - May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions. Modifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself). +# + adjustment - Total amount of all adjustments to this payment included in this transaction which are not related to this claim's adjudication. +# + id - Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces. +# + 'type - Whether this represents partial or complete payment of the benefits payable. +@r4:DataTypeDefinition { + name: "HRexClaimResponsePayment", + baseType: (), + elements: { + "date": { + name: "date", + dataType: r4:date, + min: 0, + max: 1, + isArray: false, + description: "Estimated date the payment will be issued or the actual issue date of payment.", + path: "ClaimResponse.payment.date" + }, + "identifier": { + name: "identifier", + dataType: r4:Identifier, + min: 0, + max: 1, + isArray: false, + description: "Issuer's unique identifier for the payment instrument.", + path: "ClaimResponse.payment.identifier" + }, + "adjustmentReason": { + name: "adjustmentReason", + dataType: r4:CodeableConcept, + min: 0, + max: 1, + isArray: false, + description: "Reason for the payment adjustment.", + path: "ClaimResponse.payment.adjustmentReason" + }, + "amount": { + name: "amount", + dataType: r4:Money, + min: 1, + max: 1, + isArray: false, + description: "Benefits payable less any payment adjustment.", + path: "ClaimResponse.payment.amount" + }, + "extension": { + name: "extension", + dataType: r4:Extension, + min: 0, + max: int:MAX_VALUE, + isArray: true, + description: "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension.", + path: "ClaimResponse.payment.extension" + }, + "modifierExtension": { + name: "modifierExtension", + dataType: r4:Extension, + min: 0, + max: int:MAX_VALUE, + isArray: true, + description: "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions. Modifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself).", + path: "ClaimResponse.payment.modifierExtension" + }, + "adjustment": { + name: "adjustment", + dataType: r4:Money, + min: 0, + max: 1, + isArray: false, + description: "Total amount of all adjustments to this payment included in this transaction which are not related to this claim's adjudication.", + path: "ClaimResponse.payment.adjustment" + }, + "id": { + name: "id", + dataType: string, + min: 0, + max: 1, + isArray: false, + description: "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces.", + path: "ClaimResponse.payment.id" + }, + "type": { + name: "type", + dataType: r4:CodeableConcept, + min: 1, + max: 1, + isArray: false, + description: "Whether this represents partial or complete payment of the benefits payable.", + path: "ClaimResponse.payment.type" + } + }, + serializers: { + 'xml: r4:complexDataTypeXMLSerializer, + 'json: r4:complexDataTypeJsonSerializer + } +} +public type HRexClaimResponsePayment record {| + *r4:BackboneElement; + + r4:date date?; + r4:Identifier identifier?; + r4:CodeableConcept adjustmentReason?; + r4:Money amount; + r4:Extension[] extension?; + r4:Extension[] modifierExtension?; + r4:Money adjustment?; + string id?; + r4:CodeableConcept 'type; +|}; + +# HRexClaimResponseStatus enum +public enum HRexClaimResponseStatus { + CODE_STATUS_DRAFT = "draft", + CODE_STATUS_ACTIVE = "active", + CODE_STATUS_CANCELLED = "cancelled", + CODE_STATUS_ENTERED_IN_ERROR = "entered-in-error" +} + +# FHIR HRexClaimResponseAddItemDetailSubDetail datatype record. +# +# + unitPrice - If the item is not a group then this is the fee for the product or service, otherwise this is the total of the fees for the details of the group. +# + extension - May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. +# + quantity - The number of repetitions of a service or product. +# + modifier - Item typification or modifiers codes to convey additional context for the product or service. +# + modifierExtension - May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions. Modifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself). +# + id - Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces. +# + productOrService - When the value is a group code then this item collects a set of related claim details, otherwise this contains the product, service, drug or other billing code for the item. +# + factor - A real number that represents a multiplier used in determining the overall value of services delivered and/or goods received. The concept of a Factor allows for a discount or surcharge multiplier to be applied to a monetary amount. +# + net - The quantity times the unit price for an additional service or product or charge. +# + noteNumber - The numbers associated with notes below which apply to the adjudication of this item. +@r4:DataTypeDefinition { + name: "HRexClaimResponseAddItemDetailSubDetail", + baseType: (), + elements: { + "unitPrice": { + name: "unitPrice", + dataType: r4:Money, + min: 0, + max: 1, + isArray: false, + description: "If the item is not a group then this is the fee for the product or service, otherwise this is the total of the fees for the details of the group.", + path: "ClaimResponse.addItem.detail.subDetail.unitPrice" + }, + "extension": { + name: "extension", + dataType: r4:Extension, + min: 0, + max: int:MAX_VALUE, + isArray: true, + description: "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension.", + path: "ClaimResponse.addItem.detail.subDetail.extension" + }, + "quantity": { + name: "quantity", + dataType: r4:Quantity, + min: 0, + max: 1, + isArray: false, + description: "The number of repetitions of a service or product.", + path: "ClaimResponse.addItem.detail.subDetail.quantity" + }, + "modifier": { + name: "modifier", + dataType: r4:CodeableConcept, + min: 0, + max: int:MAX_VALUE, + isArray: true, + description: "Item typification or modifiers codes to convey additional context for the product or service.", + path: "ClaimResponse.addItem.detail.subDetail.modifier" + }, + "modifierExtension": { + name: "modifierExtension", + dataType: r4:Extension, + min: 0, + max: int:MAX_VALUE, + isArray: true, + description: "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions. Modifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself).", + path: "ClaimResponse.addItem.detail.subDetail.modifierExtension" + }, + "id": { + name: "id", + dataType: string, + min: 0, + max: 1, + isArray: false, + description: "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces.", + path: "ClaimResponse.addItem.detail.subDetail.id" + }, + "productOrService": { + name: "productOrService", + dataType: r4:CodeableConcept, + min: 1, + max: 1, + isArray: false, + description: "When the value is a group code then this item collects a set of related claim details, otherwise this contains the product, service, drug or other billing code for the item.", + path: "ClaimResponse.addItem.detail.subDetail.productOrService" + }, + "factor": { + name: "factor", + dataType: decimal, + min: 0, + max: 1, + isArray: false, + description: "A real number that represents a multiplier used in determining the overall value of services delivered and/or goods received. The concept of a Factor allows for a discount or surcharge multiplier to be applied to a monetary amount.", + path: "ClaimResponse.addItem.detail.subDetail.factor" + }, + "net": { + name: "net", + dataType: r4:Money, + min: 0, + max: 1, + isArray: false, + description: "The quantity times the unit price for an additional service or product or charge.", + path: "ClaimResponse.addItem.detail.subDetail.net" + }, + "noteNumber": { + name: "noteNumber", + dataType: r4:positiveInt, + min: 0, + max: int:MAX_VALUE, + isArray: true, + description: "The numbers associated with notes below which apply to the adjudication of this item.", + path: "ClaimResponse.addItem.detail.subDetail.noteNumber" + } + }, + serializers: { + 'xml: r4:complexDataTypeXMLSerializer, + 'json: r4:complexDataTypeJsonSerializer + } +} +public type HRexClaimResponseAddItemDetailSubDetail record {| + *r4:BackboneElement; + + r4:Money unitPrice?; + r4:Extension[] extension?; + r4:Quantity quantity?; + r4:CodeableConcept[] modifier?; + r4:Extension[] modifierExtension?; + string id?; + r4:CodeableConcept productOrService; + decimal factor?; + r4:Money net?; + r4:positiveInt[] noteNumber?; +|}; + +# FHIR HRexClaimResponseItemDetail datatype record. +# +# + extension - May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. +# + detailSequence - A number to uniquely reference the claim detail entry. +# + modifierExtension - May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions. Modifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself). +# + subDetail - A sub-detail adjudication of a simple product or service. +# + id - Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces. +# + noteNumber - The numbers associated with notes below which apply to the adjudication of this item. +@r4:DataTypeDefinition { + name: "HRexClaimResponseItemDetail", + baseType: (), + elements: { + "extension": { + name: "extension", + dataType: r4:Extension, + min: 0, + max: int:MAX_VALUE, + isArray: true, + description: "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension.", + path: "ClaimResponse.item.detail.extension" + }, + "detailSequence": { + name: "detailSequence", + dataType: r4:positiveInt, + min: 1, + max: 1, + isArray: false, + description: "A number to uniquely reference the claim detail entry.", + path: "ClaimResponse.item.detail.detailSequence" + }, + "modifierExtension": { + name: "modifierExtension", + dataType: r4:Extension, + min: 0, + max: int:MAX_VALUE, + isArray: true, + description: "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions. Modifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself).", + path: "ClaimResponse.item.detail.modifierExtension" + }, + "subDetail": { + name: "subDetail", + dataType: HRexClaimResponseItemDetailSubDetail, + min: 0, + max: int:MAX_VALUE, + isArray: true, + description: "A sub-detail adjudication of a simple product or service.", + path: "ClaimResponse.item.detail.subDetail" + }, + "id": { + name: "id", + dataType: string, + min: 0, + max: 1, + isArray: false, + description: "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces.", + path: "ClaimResponse.item.detail.id" + }, + "noteNumber": { + name: "noteNumber", + dataType: r4:positiveInt, + min: 0, + max: int:MAX_VALUE, + isArray: true, + description: "The numbers associated with notes below which apply to the adjudication of this item.", + path: "ClaimResponse.item.detail.noteNumber" + } + }, + serializers: { + 'xml: r4:complexDataTypeXMLSerializer, + 'json: r4:complexDataTypeJsonSerializer + } +} +public type HRexClaimResponseItemDetail record {| + *r4:BackboneElement; + + r4:Extension[] extension?; + r4:positiveInt detailSequence; + r4:Extension[] modifierExtension?; + HRexClaimResponseItemDetailSubDetail[] subDetail?; + string id?; + r4:positiveInt[] noteNumber?; +|}; + +# FHIR HRexClaimResponseItem datatype record. +# +# + adjudication - If this item is a group then the values here are a summary of the adjudication of the detail items. If this item is a simple product or service then this is the result of the adjudication of this item. +# + itemSequence - A number to uniquely reference the claim item entries. +# + extension - May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. +# + modifierExtension - May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions. Modifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself). +# + detail - A claim detail. Either a simple (a product or service) or a 'group' of sub-details which are simple items. +# + id - Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces. +# + noteNumber - The numbers associated with notes below which apply to the adjudication of this item. +@r4:DataTypeDefinition { + name: "HRexClaimResponseItem", + baseType: (), + elements: { + "adjudication": { + name: "adjudication", + dataType: HRexClaimResponseItemAdjudication, + min: 1, + max: int:MAX_VALUE, + isArray: true, + description: "If this item is a group then the values here are a summary of the adjudication of the detail items. If this item is a simple product or service then this is the result of the adjudication of this item.", + path: "ClaimResponse.item.adjudication" + }, + "itemSequence": { + name: "itemSequence", + dataType: r4:positiveInt, + min: 1, + max: 1, + isArray: false, + description: "A number to uniquely reference the claim item entries.", + path: "ClaimResponse.item.itemSequence" + }, + "extension": { + name: "extension", + dataType: r4:Extension, + min: 0, + max: int:MAX_VALUE, + isArray: true, + description: "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension.", + path: "ClaimResponse.item.extension" + }, + "modifierExtension": { + name: "modifierExtension", + dataType: r4:Extension, + min: 0, + max: int:MAX_VALUE, + isArray: true, + description: "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions. Modifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself).", + path: "ClaimResponse.item.modifierExtension" + }, + "detail": { + name: "detail", + dataType: HRexClaimResponseItemDetail, + min: 0, + max: int:MAX_VALUE, + isArray: true, + description: "A claim detail. Either a simple (a product or service) or a 'group' of sub-details which are simple items.", + path: "ClaimResponse.item.detail" + }, + "id": { + name: "id", + dataType: string, + min: 0, + max: 1, + isArray: false, + description: "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces.", + path: "ClaimResponse.item.id" + }, + "noteNumber": { + name: "noteNumber", + dataType: r4:positiveInt, + min: 0, + max: int:MAX_VALUE, + isArray: true, + description: "The numbers associated with notes below which apply to the adjudication of this item.", + path: "ClaimResponse.item.noteNumber" + } + }, + serializers: { + 'xml: r4:complexDataTypeXMLSerializer, + 'json: r4:complexDataTypeJsonSerializer + } +} +public type HRexClaimResponseItem record {| + *r4:BackboneElement; + + @constraint:Array { + minLength: 1 + } + HRexClaimResponseItemAdjudication[] adjudication; + r4:positiveInt itemSequence; + r4:Extension[] extension?; + r4:Extension[] modifierExtension?; + HRexClaimResponseItemDetail[] detail?; + string id?; + r4:positiveInt[] noteNumber?; +|}; + +# FHIR HRexClaimResponseInsurance datatype record. +# +# + coverage - Reference to the insurance card level information contained in the Coverage resource. The coverage issuing insurer will use these details to locate the patient's actual coverage within the insurer's information system. +# + sequence - A number to uniquely identify insurance entries and provide a sequence of coverages to convey coordination of benefit order. +# + extension - May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. +# + businessArrangement - A business agreement number established between the provider and the insurer for special business processing purposes. +# + claimResponse - The result of the adjudication of the line items for the Coverage specified in this insurance. +# + focal - A flag to indicate that this Coverage is to be used for adjudication of this claim when set to true. +# + modifierExtension - May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions. Modifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself). +# + id - Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces. +@r4:DataTypeDefinition { + name: "HRexClaimResponseInsurance", + baseType: (), + elements: { + "coverage": { + name: "coverage", + dataType: r4:Reference, + min: 1, + max: 1, + isArray: false, + description: "Reference to the insurance card level information contained in the Coverage resource. The coverage issuing insurer will use these details to locate the patient's actual coverage within the insurer's information system.", + path: "ClaimResponse.insurance.coverage" + }, + "sequence": { + name: "sequence", + dataType: r4:positiveInt, + min: 1, + max: 1, + isArray: false, + description: "A number to uniquely identify insurance entries and provide a sequence of coverages to convey coordination of benefit order.", + path: "ClaimResponse.insurance.sequence" + }, + "extension": { + name: "extension", + dataType: r4:Extension, + min: 0, + max: int:MAX_VALUE, + isArray: true, + description: "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension.", + path: "ClaimResponse.insurance.extension" + }, + "businessArrangement": { + name: "businessArrangement", + dataType: string, + min: 0, + max: 1, + isArray: false, + description: "A business agreement number established between the provider and the insurer for special business processing purposes.", + path: "ClaimResponse.insurance.businessArrangement" + }, + "claimResponse": { + name: "claimResponse", + dataType: r4:Reference, + min: 0, + max: 1, + isArray: false, + description: "The result of the adjudication of the line items for the Coverage specified in this insurance.", + path: "ClaimResponse.insurance.claimResponse" + }, + "focal": { + name: "focal", + dataType: boolean, + min: 1, + max: 1, + isArray: false, + description: "A flag to indicate that this Coverage is to be used for adjudication of this claim when set to true.", + path: "ClaimResponse.insurance.focal" + }, + "modifierExtension": { + name: "modifierExtension", + dataType: r4:Extension, + min: 0, + max: int:MAX_VALUE, + isArray: true, + description: "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions. Modifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself).", + path: "ClaimResponse.insurance.modifierExtension" + }, + "id": { + name: "id", + dataType: string, + min: 0, + max: 1, + isArray: false, + description: "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces.", + path: "ClaimResponse.insurance.id" + } + }, + serializers: { + 'xml: r4:complexDataTypeXMLSerializer, + 'json: r4:complexDataTypeJsonSerializer + } +} +public type HRexClaimResponseInsurance record {| + *r4:BackboneElement; + + r4:Reference coverage; + r4:positiveInt sequence; + r4:Extension[] extension?; + string businessArrangement?; + r4:Reference claimResponse?; + boolean focal; + r4:Extension[] modifierExtension?; + string id?; +|}; + +# FHIR HRexClaimResponseAddItemDetail datatype record. +# +# + unitPrice - If the item is not a group then this is the fee for the product or service, otherwise this is the total of the fees for the details of the group. +# + extension - May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. +# + quantity - The number of repetitions of a service or product. +# + modifier - Item typification or modifiers codes to convey additional context for the product or service. +# + modifierExtension - May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions. Modifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself). +# + subDetail - The third-tier service adjudications for payor added services. +# + id - Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces. +# + productOrService - When the value is a group code then this item collects a set of related claim details, otherwise this contains the product, service, drug or other billing code for the item. +# + factor - A real number that represents a multiplier used in determining the overall value of services delivered and/or goods received. The concept of a Factor allows for a discount or surcharge multiplier to be applied to a monetary amount. +# + net - The quantity times the unit price for an additional service or product or charge. +# + noteNumber - The numbers associated with notes below which apply to the adjudication of this item. +@r4:DataTypeDefinition { + name: "HRexClaimResponseAddItemDetail", + baseType: (), + elements: { + "unitPrice": { + name: "unitPrice", + dataType: r4:Money, + min: 0, + max: 1, + isArray: false, + description: "If the item is not a group then this is the fee for the product or service, otherwise this is the total of the fees for the details of the group.", + path: "ClaimResponse.addItem.detail.unitPrice" + }, + "extension": { + name: "extension", + dataType: r4:Extension, + min: 0, + max: int:MAX_VALUE, + isArray: true, + description: "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension.", + path: "ClaimResponse.addItem.detail.extension" + }, + "quantity": { + name: "quantity", + dataType: r4:Quantity, + min: 0, + max: 1, + isArray: false, + description: "The number of repetitions of a service or product.", + path: "ClaimResponse.addItem.detail.quantity" + }, + "modifier": { + name: "modifier", + dataType: r4:CodeableConcept, + min: 0, + max: int:MAX_VALUE, + isArray: true, + description: "Item typification or modifiers codes to convey additional context for the product or service.", + path: "ClaimResponse.addItem.detail.modifier" + }, + "modifierExtension": { + name: "modifierExtension", + dataType: r4:Extension, + min: 0, + max: int:MAX_VALUE, + isArray: true, + description: "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions. Modifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself).", + path: "ClaimResponse.addItem.detail.modifierExtension" + }, + "subDetail": { + name: "subDetail", + dataType: HRexClaimResponseAddItemDetailSubDetail, + min: 0, + max: int:MAX_VALUE, + isArray: true, + description: "The third-tier service adjudications for payor added services.", + path: "ClaimResponse.addItem.detail.subDetail" + }, + "id": { + name: "id", + dataType: string, + min: 0, + max: 1, + isArray: false, + description: "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces.", + path: "ClaimResponse.addItem.detail.id" + }, + "productOrService": { + name: "productOrService", + dataType: r4:CodeableConcept, + min: 1, + max: 1, + isArray: false, + description: "When the value is a group code then this item collects a set of related claim details, otherwise this contains the product, service, drug or other billing code for the item.", + path: "ClaimResponse.addItem.detail.productOrService" + }, + "factor": { + name: "factor", + dataType: decimal, + min: 0, + max: 1, + isArray: false, + description: "A real number that represents a multiplier used in determining the overall value of services delivered and/or goods received. The concept of a Factor allows for a discount or surcharge multiplier to be applied to a monetary amount.", + path: "ClaimResponse.addItem.detail.factor" + }, + "net": { + name: "net", + dataType: r4:Money, + min: 0, + max: 1, + isArray: false, + description: "The quantity times the unit price for an additional service or product or charge.", + path: "ClaimResponse.addItem.detail.net" + }, + "noteNumber": { + name: "noteNumber", + dataType: r4:positiveInt, + min: 0, + max: int:MAX_VALUE, + isArray: true, + description: "The numbers associated with notes below which apply to the adjudication of this item.", + path: "ClaimResponse.addItem.detail.noteNumber" + } + }, + serializers: { + 'xml: r4:complexDataTypeXMLSerializer, + 'json: r4:complexDataTypeJsonSerializer + } +} +public type HRexClaimResponseAddItemDetail record {| + *r4:BackboneElement; + + r4:Money unitPrice?; + r4:Extension[] extension?; + r4:Quantity quantity?; + r4:CodeableConcept[] modifier?; + r4:Extension[] modifierExtension?; + HRexClaimResponseAddItemDetailSubDetail[] subDetail?; + string id?; + r4:CodeableConcept productOrService; + decimal factor?; + r4:Money net?; + r4:positiveInt[] noteNumber?; +|}; + diff --git a/davincihrex100/resource_hrex_consent.bal b/davincihrex100/resource_hrex_consent.bal new file mode 100644 index 00000000..9c8835a8 --- /dev/null +++ b/davincihrex100/resource_hrex_consent.bal @@ -0,0 +1,1340 @@ +// Copyright (c) 2023, WSO2 LLC. (http://www.wso2.com). + +// WSO2 LLC. licenses this file to you under the Apache License, +// Version 2.0 (the "License"); you may not use this file except +// in compliance with the License. +// You may obtain a copy of the License at + +// http://www.apache.org/licenses/LICENSE-2.0 + +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. + +// AUTO-GENERATED FILE. +// This file is auto-generated by Ballerina. + +import ballerina/constraint; +import ballerinax/health.fhir.r4; + +public const string PROFILE_BASE_HREXCONSENT = "http://hl7.org/fhir/us/davinci-hrex/StructureDefinition/hrex-consent"; +public const RESOURCE_NAME_HREXCONSENT = "Consent"; + +# FHIR HRexConsent resource record. +# +# + resourceType - The type of the resource describes +# + dateTime - When this Consent was issued / created / indexed. +# + sourceReference - The source on which this consent statement is based. The source might be a scanned original paper form, or a reference to a consent that links back to such a source, a reference to a document repository (e.g. XDS) that stores the original consent document. +# + identifier - Unique identifier for this copy of the Consent Statement. +# + extension - May be used to represent additional information that is not part of the basic definition of the resource. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. +# + performer - Either the Grantor, which is the entity responsible for granting the rights listed in a Consent Directive or the Grantee, which is the entity responsible for complying with the Consent Directive, including any obligations or limitations on authorizations and enforcement of prohibitions. +# + modifierExtension - May be used to represent additional information that is not part of the basic definition of the resource and that modifies the understanding of the element that contains it and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer is allowed to define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions. Modifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself). +# + language - The base language in which the resource is written. +# + contained - These resources do not have an independent existence apart from the resource that contains them - they cannot be identified independently, and nor can they have their own independent transaction scope. +# + policyRule - A reference to the specific base computable regulation or policy. +# + meta - The metadata about the resource. This is content that is maintained by the infrastructure. Changes to the content might not always be associated with version changes to the resource. +# + patient - The patient/healthcare consumer to whom this consent applies. +# + provision - An exception to the base policy of this consent. An exception can be an addition or removal of access permissions. +# + organization - The organization that manages the consent, and the framework within which it is executed. +# + scope - A selector of the type of consent being presented: ADR, Privacy, Treatment, Research. This list is now extensible. +# + implicitRules - A reference to a set of rules that were followed when the resource was constructed, and which must be understood when processing the content. Often, this is a reference to an implementation guide that defines the special rules along with other profiles etc. +# + id - The logical id of the resource, as used in the URL for the resource. Once assigned, this value never changes. +# + text - A human-readable narrative that contains a summary of the resource and can be used to represent the content of the resource to a human. The narrative need not encode all the structured data, but is required to contain sufficient detail to make it 'clinically safe' for a human to just read the narrative. Resource definitions may define what content should be represented in the narrative to ensure clinical safety. +# + category - A classification of the type of consents found in the statement. This element supports indexing and retrieval of consent statements. +# * category Slicings +# 1) HRexConsentCategoryDisclosure: Classification of the consent statement - for indexing/retrieval +# - min = 0 +# - max = * +# +# + verification - Whether a treatment instruction (e.g. artificial respiration yes or no) was verified with the patient, his/her family or another authorized person. +# + policy - The references to the policies that are included in this consent scope. Policies may be organizational, but are often defined jurisdictionally, or in law. +# * policy Slicings +# 1) HRexConsentPolicyHrex: Policies covered by this consent +# - min = 1 +# - max = * +# +# + status - Indicates the current state of this consent. +@r4:ResourceDefinition { + resourceType: "Consent", + baseType: r4:DomainResource, + profile: "http://hl7.org/fhir/us/davinci-hrex/StructureDefinition/hrex-consent", + elements: { + "dateTime" : { + name: "dateTime", + dataType: r4:dateTime, + min: 0, + max: 1, + isArray: false, + path: "Consent.dateTime" + }, + "sourceReference" : { + name: "sourceReference", + dataType: r4:Reference, + min: 1, + max: 1, + isArray: false, + path: "Consent.source[x]" + }, + "identifier" : { + name: "identifier", + dataType: r4:Identifier, + min: 0, + max: int:MAX_VALUE, + isArray: true, + path: "Consent.identifier" + }, + "extension" : { + name: "extension", + dataType: r4:Extension, + min: 0, + max: int:MAX_VALUE, + isArray: true, + path: "Consent.extension" + }, + "performer" : { + name: "performer", + dataType: r4:Reference, + min: 1, + max: 1, + isArray: false, + path: "Consent.performer" + }, + "modifierExtension" : { + name: "modifierExtension", + dataType: r4:Extension, + min: 0, + max: int:MAX_VALUE, + isArray: true, + path: "Consent.modifierExtension" + }, + "language" : { + name: "language", + dataType: r4:code, + min: 0, + max: 1, + isArray: false, + path: "Consent.language", + valueSet: "http://hl7.org/fhir/ValueSet/languages" + }, + "contained" : { + name: "contained", + dataType: r4:Resource, + min: 0, + max: int:MAX_VALUE, + isArray: true, + path: "Consent.contained" + }, + "policyRule" : { + name: "policyRule", + dataType: r4:CodeableConcept, + min: 0, + max: 1, + isArray: false, + path: "Consent.policyRule", + valueSet: "http://hl7.org/fhir/ValueSet/consent-policy" + }, + "meta" : { + name: "meta", + dataType: r4:Meta, + min: 0, + max: 1, + isArray: false, + path: "Consent.meta" + }, + "patient" : { + name: "patient", + dataType: r4:Reference, + min: 1, + max: 1, + isArray: false, + path: "Consent.patient" + }, + "provision" : { + name: "provision", + dataType: HRexConsentProvision, + min: 1, + max: 1, + isArray: false, + path: "Consent.provision" + }, + "organization" : { + name: "organization", + dataType: r4:Reference, + min: 0, + max: int:MAX_VALUE, + isArray: true, + path: "Consent.organization" + }, + "scope" : { + name: "scope", + dataType: HRexConsentScope, + min: 1, + max: 1, + isArray: false, + path: "Consent.scope", + valueSet: "http://hl7.org/fhir/ValueSet/consent-scope" + }, + "implicitRules" : { + name: "implicitRules", + dataType: r4:uri, + min: 0, + max: 1, + isArray: false, + path: "Consent.implicitRules" + }, + "id" : { + name: "id", + dataType: string, + min: 0, + max: 1, + isArray: false, + path: "Consent.id" + }, + "text" : { + name: "text", + dataType: r4:Narrative, + min: 0, + max: 1, + isArray: false, + path: "Consent.text" + }, + "category" : { + name: "category", + dataType: r4:CodeableConcept, + min: 1, + max: int:MAX_VALUE, + isArray: true, + path: "Consent.category", + valueSet: "http://hl7.org/fhir/ValueSet/consent-category" + }, + "verification" : { + name: "verification", + dataType: HRexConsentVerification, + min: 0, + max: int:MAX_VALUE, + isArray: true, + path: "Consent.verification" + }, + "policy" : { + name: "policy", + dataType: HRexConsentPolicy, + min: 0, + max: int:MAX_VALUE, + isArray: true, + path: "Consent.policy" + }, + "status" : { + name: "status", + dataType: HRexConsentStatus, + min: 1, + max: 1, + isArray: false, + path: "Consent.status", + valueSet: "http://hl7.org/fhir/ValueSet/consent-state-codes|4.0.1" + } + }, + serializers: { + 'xml: r4:fhirResourceXMLSerializer, + 'json: r4:fhirResourceJsonSerializer + } +} +public type HRexConsent record {| + *r4:DomainResource; + + RESOURCE_NAME_HREXCONSENT resourceType = RESOURCE_NAME_HREXCONSENT; + + r4:dateTime dateTime?; + r4:Reference sourceReference; + r4:Identifier[] identifier?; + r4:Extension[] extension?; + r4:Reference performer; + r4:Extension[] modifierExtension?; + r4:code language?; + r4:Resource[] contained?; + r4:CodeableConcept policyRule?; + r4:Meta meta?; + r4:Reference patient; + HRexConsentProvision provision; + r4:Reference[] organization?; + HRexConsentScope scope; + r4:uri implicitRules?; + string id?; + r4:Narrative text?; + @constraint:Array { + minLength: 1 + } + r4:CodeableConcept[] category; + HRexConsentVerification[] verification?; + HRexConsentPolicy[] policy?; + HRexConsentStatus status; + r4:Element ...; +|}; + +# FHIR HRexConsentCategoryDisclosure datatype record. +# +# + coding - A reference to a code defined by a terminology system. +@r4:DataTypeDefinition { + name: "HRexConsentCategoryDisclosure", + baseType: (), + elements: { + "coding": { + name: "coding", + dataType: HRexConsentCategoryCoding, + min: 1, + max: int:MAX_VALUE, + isArray: true, + description: "A reference to a code defined by a terminology system.", + path: "Consent.category.coding" + } + }, + serializers: { + 'xml: r4:complexDataTypeXMLSerializer, + 'json: r4:complexDataTypeJsonSerializer + } +} +public type HRexConsentCategoryDisclosure record {| + *r4:CodeableConcept; + + @constraint:Array { + minLength: 1 + } + HRexConsentCategoryCoding[] coding; +|}; + +# FHIR HRexConsentProvisionData datatype record. +# +# + reference - A reference to a specific resource that defines which resources are covered by this consent. +# + extension - May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. +# + meaning - How the resource reference is interpreted when testing consent restrictions. +# + modifierExtension - May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions. Modifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself). +# + id - Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces. +@r4:DataTypeDefinition { + name: "HRexConsentProvisionData", + baseType: (), + elements: { + "reference": { + name: "reference", + dataType: r4:Reference, + min: 1, + max: 1, + isArray: false, + description: "A reference to a specific resource that defines which resources are covered by this consent.", + path: "Consent.provision.data.reference" + }, + "extension": { + name: "extension", + dataType: r4:Extension, + min: 0, + max: int:MAX_VALUE, + isArray: true, + description: "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension.", + path: "Consent.provision.data.extension" + }, + "meaning": { + name: "meaning", + dataType: HRexConsentProvisionDataMeaning, + min: 1, + max: 1, + isArray: false, + description: "How the resource reference is interpreted when testing consent restrictions.", + path: "Consent.provision.data.meaning" + }, + "modifierExtension": { + name: "modifierExtension", + dataType: r4:Extension, + min: 0, + max: int:MAX_VALUE, + isArray: true, + description: "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions. Modifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself).", + path: "Consent.provision.data.modifierExtension" + }, + "id": { + name: "id", + dataType: string, + min: 0, + max: 1, + isArray: false, + description: "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces.", + path: "Consent.provision.data.id" + } + }, + serializers: { + 'xml: r4:complexDataTypeXMLSerializer, + 'json: r4:complexDataTypeJsonSerializer + } +} +public type HRexConsentProvisionData record {| + *r4:BackboneElement; + + r4:Reference reference; + r4:Extension[] extension?; + HRexConsentProvisionDataMeaning meaning; + r4:Extension[] modifierExtension?; + string id?; +|}; + +# FHIR HRexConsentProvisionActorRole datatype record. +# +# + coding - A reference to a code defined by a terminology system. +@r4:DataTypeDefinition { + name: "HRexConsentProvisionActorRole", + baseType: (), + elements: { + "coding": { + name: "coding", + dataType: HRexConsentProvisionActorRoleCoding, + min: 1, + max: int:MAX_VALUE, + isArray: true, + description: "A reference to a code defined by a terminology system.", + path: "Consent.provision.actor.role.coding" + } + }, + serializers: { + 'xml: r4:complexDataTypeXMLSerializer, + 'json: r4:complexDataTypeJsonSerializer + } +} +public type HRexConsentProvisionActorRole record {| + *r4:CodeableConcept; + + @constraint:Array { + minLength: 1 + } + HRexConsentProvisionActorRoleCoding[] coding; +|}; + +# FHIR HRexConsentScopeCoding datatype record. +# +# + system - The identification of the code system that defines the meaning of the symbol in the code. +# + code - A symbol in syntax defined by the system. The symbol may be a predefined code or an expression in a syntax defined by the coding system (e.g. post-coordination). +@r4:DataTypeDefinition { + name: "HRexConsentScopeCoding", + baseType: (), + elements: { + "system": { + name: "system", + dataType: r4:uri, + min: 1, + max: 1, + isArray: false, + description: "The identification of the code system that defines the meaning of the symbol in the code.", + path: "Consent.scope.coding.system" + }, + "code": { + name: "code", + dataType: r4:code, + min: 1, + max: 1, + isArray: false, + description: "A symbol in syntax defined by the system. The symbol may be a predefined code or an expression in a syntax defined by the coding system (e.g. post-coordination).", + path: "Consent.scope.coding.code" + } + }, + serializers: { + 'xml: r4:complexDataTypeXMLSerializer, + 'json: r4:complexDataTypeJsonSerializer + } +} +public type HRexConsentScopeCoding record {| + *r4:Coding; + + r4:uri system = "http://terminology.hl7.org/CodeSystem/consentscope"; + r4:code code = "patient-privacy"; +|}; + +# FHIR HRexConsentProvisionActorSource datatype record. +# +# + reference - The resource that identifies the actor. To identify actors by type, use group to identify a set of actors by some property they share (e.g. 'admitting officers'). +# + extension - May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. +# + role - How the individual is involved in the resources content that is described in the exception. +# + modifierExtension - May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions. Modifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself). +# + id - Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces. +@r4:DataTypeDefinition { + name: "HRexConsentProvisionActorSource", + baseType: (), + elements: { + "reference": { + name: "reference", + dataType: r4:Reference, + min: 1, + max: 1, + isArray: false, + description: "The resource that identifies the actor. To identify actors by type, use group to identify a set of actors by some property they share (e.g. 'admitting officers').", + path: "Consent.provision.actor.reference" + }, + "extension": { + name: "extension", + dataType: r4:Extension, + min: 0, + max: int:MAX_VALUE, + isArray: true, + description: "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension.", + path: "Consent.provision.actor.extension" + }, + "role": { + name: "role", + dataType: HRexConsentProvisionActorRole, + min: 1, + max: 1, + isArray: false, + description: "How the individual is involved in the resources content that is described in the exception.", + path: "Consent.provision.actor.role" + }, + "modifierExtension": { + name: "modifierExtension", + dataType: r4:Extension, + min: 0, + max: int:MAX_VALUE, + isArray: true, + description: "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions. Modifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself).", + path: "Consent.provision.actor.modifierExtension" + }, + "id": { + name: "id", + dataType: string, + min: 0, + max: 1, + isArray: false, + description: "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces.", + path: "Consent.provision.actor.id" + } + }, + serializers: { + 'xml: r4:complexDataTypeXMLSerializer, + 'json: r4:complexDataTypeJsonSerializer + } +} +public type HRexConsentProvisionActorSource record {| + *HRexConsentProvisionActor; + + r4:Reference reference; + r4:Extension[] extension?; + HRexConsentProvisionActorRole role; + r4:Extension[] modifierExtension?; + string id?; +|}; + +# FHIR HRexConsentCategoryCoding datatype record. +# +# + system - The identification of the code system that defines the meaning of the symbol in the code. +# + code - A symbol in syntax defined by the system. The symbol may be a predefined code or an expression in a syntax defined by the coding system (e.g. post-coordination). +@r4:DataTypeDefinition { + name: "HRexConsentCategoryCoding", + baseType: (), + elements: { + "system": { + name: "system", + dataType: r4:uri, + min: 1, + max: 1, + isArray: false, + description: "The identification of the code system that defines the meaning of the symbol in the code.", + path: "Consent.category.coding.system" + }, + "code": { + name: "code", + dataType: r4:code, + min: 1, + max: 1, + isArray: false, + description: "A symbol in syntax defined by the system. The symbol may be a predefined code or an expression in a syntax defined by the coding system (e.g. post-coordination).", + path: "Consent.category.coding.code" + } + }, + serializers: { + 'xml: r4:complexDataTypeXMLSerializer, + 'json: r4:complexDataTypeJsonSerializer + } +} +public type HRexConsentCategoryCoding record {| + *r4:Coding; + + r4:uri system = "http://terminology.hl7.org/CodeSystem/v3-ActCode"; + r4:code code = "IDSCL"; +|}; + +# FHIR HRexConsentPolicyUriHrex datatype record. +# +@r4:DataTypeDefinition { + name: "HRexConsentPolicyUriHrex", + baseType: (), + elements: { + }, + serializers: { + 'xml: r4:complexDataTypeXMLSerializer, + 'json: r4:complexDataTypeJsonSerializer + } +} +public type HRexConsentPolicyUriHrex record {| + +|}; + +# HRexConsentProvisionDataMeaning enum +public enum HRexConsentProvisionDataMeaning { + CODE_MEANING_INSTANCE = "instance", + CODE_MEANING_RELATED = "related", + CODE_MEANING_DEPENDENTS = "dependents", + CODE_MEANING_AUTHOREDBY = "authoredby" +} + +# FHIR HRexConsentProvisionAction datatype record. +# +# + coding - A reference to a code defined by a terminology system. +@r4:DataTypeDefinition { + name: "HRexConsentProvisionAction", + baseType: (), + elements: { + "coding": { + name: "coding", + dataType: HRexConsentProvisionActionCoding, + min: 1, + max: int:MAX_VALUE, + isArray: true, + description: "A reference to a code defined by a terminology system.", + path: "Consent.provision.action.coding" + } + }, + serializers: { + 'xml: r4:complexDataTypeXMLSerializer, + 'json: r4:complexDataTypeJsonSerializer + } +} +public type HRexConsentProvisionAction record {| + *r4:CodeableConcept; + + @constraint:Array { + minLength: 1 + } + HRexConsentProvisionActionCoding[] coding; +|}; + +# FHIR HRexConsentProvisionActorRecipient datatype record. +# +# + reference - The resource that identifies the actor. To identify actors by type, use group to identify a set of actors by some property they share (e.g. 'admitting officers'). +# + extension - May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. +# + role - How the individual is involved in the resources content that is described in the exception. +# + modifierExtension - May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions. Modifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself). +# + id - Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces. +@r4:DataTypeDefinition { + name: "HRexConsentProvisionActorRecipient", + baseType: (), + elements: { + "reference": { + name: "reference", + dataType: r4:Reference, + min: 1, + max: 1, + isArray: false, + description: "The resource that identifies the actor. To identify actors by type, use group to identify a set of actors by some property they share (e.g. 'admitting officers').", + path: "Consent.provision.actor.reference" + }, + "extension": { + name: "extension", + dataType: r4:Extension, + min: 0, + max: int:MAX_VALUE, + isArray: true, + description: "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension.", + path: "Consent.provision.actor.extension" + }, + "role": { + name: "role", + dataType: HRexConsentProvisionActorRoleOne, + min: 1, + max: 1, + isArray: false, + description: "How the individual is involved in the resources content that is described in the exception.", + path: "Consent.provision.actor.role" + }, + "modifierExtension": { + name: "modifierExtension", + dataType: r4:Extension, + min: 0, + max: int:MAX_VALUE, + isArray: true, + description: "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions. Modifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself).", + path: "Consent.provision.actor.modifierExtension" + }, + "id": { + name: "id", + dataType: string, + min: 0, + max: 1, + isArray: false, + description: "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces.", + path: "Consent.provision.actor.id" + } + }, + serializers: { + 'xml: r4:complexDataTypeXMLSerializer, + 'json: r4:complexDataTypeJsonSerializer + } +} +public type HRexConsentProvisionActorRecipient record {| + *HRexConsentProvisionActor; + + r4:Reference reference; + r4:Extension[] extension?; + HRexConsentProvisionActorRoleOne role; + r4:Extension[] modifierExtension?; + string id?; +|}; + +# FHIR HRexConsentProvisionActorRoleOne datatype record. +# +# + coding - A reference to a code defined by a terminology system. +@r4:DataTypeDefinition { + name: "HRexConsentProvisionActorRoleOne", + baseType: (), + elements: { + "coding": { + name: "coding", + dataType: HRexConsentProvisionActorRoleCodingOne, + min: 1, + max: int:MAX_VALUE, + isArray: true, + description: "A reference to a code defined by a terminology system.", + path: "Consent.provision.actor.role.coding" + } + }, + serializers: { + 'xml: r4:complexDataTypeXMLSerializer, + 'json: r4:complexDataTypeJsonSerializer + } +} +public type HRexConsentProvisionActorRoleOne record {| + *r4:CodeableConcept; + + @constraint:Array { + minLength: 1 + } + HRexConsentProvisionActorRoleCodingOne[] coding; +|}; + +# FHIR HRexConsentProvision datatype record. +# +# + dataPeriod - Clinical or Operational Relevant period of time that bounds the data controlled by this rule. +# + extension - May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. +# + period - The timeframe in this rule is valid. +# + code - If this code is found in an instance, then the rule applies. +# + data - The resources controlled by this rule if specific resources are referenced. +# + purpose - The context of the activities a user is taking - why the user is accessing the data - that are controlled by this rule. +# + securityLabel - A security label, comprised of 0..* security label fields (Privacy tags), which define which resources are controlled by this exception. +# + modifierExtension - May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions. Modifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself). +# + 'type - Action to take - permit or deny - when the rule conditions are met. Not permitted in root rule, required in all nested rules. +# + actor - Who or what is controlled by this rule. Use group to identify a set of actors by some property they share (e.g. 'admitting officers'). +# + action - Actions controlled by this Rule. +# + id - Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces. +# + 'class - The class of information covered by this rule. The type can be a FHIR resource type, a profile on a type, or a CDA document, or some other type that indicates what sort of information the consent relates to. +@r4:DataTypeDefinition { + name: "HRexConsentProvision", + baseType: (), + elements: { + "dataPeriod": { + name: "dataPeriod", + dataType: r4:Period, + min: 0, + max: 0, + isArray: false, + description: "Clinical or Operational Relevant period of time that bounds the data controlled by this rule.", + path: "Consent.provision.dataPeriod" + }, + "extension": { + name: "extension", + dataType: r4:Extension, + min: 0, + max: int:MAX_VALUE, + isArray: true, + description: "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension.", + path: "Consent.provision.extension" + }, + "period": { + name: "period", + dataType: r4:Period, + min: 1, + max: 1, + isArray: false, + description: "The timeframe in this rule is valid.", + path: "Consent.provision.period" + }, + "code": { + name: "code", + dataType: r4:CodeableConcept, + min: 0, + max: 0, + isArray: false, + description: "If this code is found in an instance, then the rule applies.", + path: "Consent.provision.code" + }, + "data": { + name: "data", + dataType: HRexConsentProvisionData, + min: 0, + max: 0, + isArray: false, + description: "The resources controlled by this rule if specific resources are referenced.", + path: "Consent.provision.data" + }, + "purpose": { + name: "purpose", + dataType: r4:Coding, + min: 0, + max: 0, + isArray: false, + description: "The context of the activities a user is taking - why the user is accessing the data - that are controlled by this rule.", + path: "Consent.provision.purpose" + }, + "securityLabel": { + name: "securityLabel", + dataType: r4:Coding, + min: 0, + max: 0, + isArray: false, + description: "A security label, comprised of 0..* security label fields (Privacy tags), which define which resources are controlled by this exception.", + path: "Consent.provision.securityLabel" + }, + "modifierExtension": { + name: "modifierExtension", + dataType: r4:Extension, + min: 0, + max: int:MAX_VALUE, + isArray: true, + description: "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions. Modifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself).", + path: "Consent.provision.modifierExtension" + }, + "type": { + name: "type", + dataType: HRexConsentProvisionType, + min: 1, + max: 1, + isArray: false, + description: "Action to take - permit or deny - when the rule conditions are met. Not permitted in root rule, required in all nested rules.", + path: "Consent.provision.type" + }, + "actor": { + name: "actor", + dataType: HRexConsentProvisionActor, + min: 0, + max: int:MAX_VALUE, + isArray: true, + description: "Who or what is controlled by this rule. Use group to identify a set of actors by some property they share (e.g. 'admitting officers').", + path: "Consent.provision.actor" + }, + "action": { + name: "action", + dataType: HRexConsentProvisionAction, + min: 1, + max: 1, + isArray: false, + description: "Actions controlled by this Rule.", + path: "Consent.provision.action" + }, + "id": { + name: "id", + dataType: string, + min: 0, + max: 1, + isArray: false, + description: "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces.", + path: "Consent.provision.id" + }, + "class": { + name: "class", + dataType: r4:Coding, + min: 0, + max: 0, + isArray: false, + description: "The class of information covered by this rule. The type can be a FHIR resource type, a profile on a type, or a CDA document, or some other type that indicates what sort of information the consent relates to.", + path: "Consent.provision.class" + } + }, + serializers: { + 'xml: r4:complexDataTypeXMLSerializer, + 'json: r4:complexDataTypeJsonSerializer + } +} +public type HRexConsentProvision record {| + *r4:BackboneElement; + + r4:Period dataPeriod?; + r4:Extension[] extension?; + r4:Period period; + r4:CodeableConcept code?; + HRexConsentProvisionData data?; + r4:Coding purpose?; + r4:Coding securityLabel?; + r4:Extension[] modifierExtension?; + HRexConsentProvisionType 'type = "permit"; + HRexConsentProvisionActor[] actor?; + HRexConsentProvisionAction action; + string id?; + r4:Coding 'class?; +|}; + +# FHIR HRexConsentPolicy datatype record. +# +# + extension - May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. +# + authority - Entity or Organization having regulatory jurisdiction or accountability for enforcing policies pertaining to Consent Directives. +# + modifierExtension - May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions. Modifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself). +# + id - Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces. +# + uri - The references to the policies that are included in this consent scope. Policies may be organizational, but are often defined jurisdictionally, or in law. +@r4:DataTypeDefinition { + name: "HRexConsentPolicy", + baseType: (), + elements: { + "extension": { + name: "extension", + dataType: r4:Extension, + min: 0, + max: int:MAX_VALUE, + isArray: true, + description: "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension.", + path: "Consent.policy.extension" + }, + "authority": { + name: "authority", + dataType: r4:uri, + min: 0, + max: 1, + isArray: false, + description: "Entity or Organization having regulatory jurisdiction or accountability for enforcing policies pertaining to Consent Directives.", + path: "Consent.policy.authority" + }, + "modifierExtension": { + name: "modifierExtension", + dataType: r4:Extension, + min: 0, + max: int:MAX_VALUE, + isArray: true, + description: "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions. Modifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself).", + path: "Consent.policy.modifierExtension" + }, + "id": { + name: "id", + dataType: string, + min: 0, + max: 1, + isArray: false, + description: "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces.", + path: "Consent.policy.id" + }, + "uri": { + name: "uri", + dataType: r4:uri, + min: 0, + max: 1, + isArray: false, + description: "The references to the policies that are included in this consent scope. Policies may be organizational, but are often defined jurisdictionally, or in law.", + path: "Consent.policy.uri" + } + }, + serializers: { + 'xml: r4:complexDataTypeXMLSerializer, + 'json: r4:complexDataTypeJsonSerializer + } +} +public type HRexConsentPolicy record {| + *r4:BackboneElement; + + r4:Extension[] extension?; + r4:uri authority?; + r4:Extension[] modifierExtension?; + string id?; + r4:uri uri?; +|}; + +# HRexConsentStatus enum +public enum HRexConsentStatus { + CODE_STATUS_INACTIVE = "inactive", + CODE_STATUS_PROPOSED = "proposed", + CODE_STATUS_REJECTED = "rejected", + CODE_STATUS_DRAFT = "draft", + CODE_STATUS_ACTIVE = "active", + CODE_STATUS_ENTERED_IN_ERROR = "entered-in-error" +} + +# FHIR HRexConsentPolicyHrex datatype record. +# +# + extension - May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. +# + authority - Entity or Organization having regulatory jurisdiction or accountability for enforcing policies pertaining to Consent Directives. +# + modifierExtension - May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions. Modifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself). +# + id - Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces. +# + hrex - The references to the policies that are included in this consent scope. Policies may be organizational, but are often defined jurisdictionally, or in law. +@r4:DataTypeDefinition { + name: "HRexConsentPolicyHrex", + baseType: (), + elements: { + "extension": { + name: "extension", + dataType: r4:Extension, + min: 0, + max: int:MAX_VALUE, + isArray: true, + description: "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension.", + path: "Consent.policy.extension" + }, + "authority": { + name: "authority", + dataType: r4:uri, + min: 0, + max: 1, + isArray: false, + description: "Entity or Organization having regulatory jurisdiction or accountability for enforcing policies pertaining to Consent Directives.", + path: "Consent.policy.authority" + }, + "modifierExtension": { + name: "modifierExtension", + dataType: r4:Extension, + min: 0, + max: int:MAX_VALUE, + isArray: true, + description: "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions. Modifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself).", + path: "Consent.policy.modifierExtension" + }, + "id": { + name: "id", + dataType: string, + min: 0, + max: 1, + isArray: false, + description: "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces.", + path: "Consent.policy.id" + }, + "hrex": { + name: "hrex", + dataType: HRexConsentPolicyUriHrex, + min: 1, + max: 1, + isArray: false, + description: "The references to the policies that are included in this consent scope. Policies may be organizational, but are often defined jurisdictionally, or in law.", + path: "Consent.policy.uri" + } + }, + serializers: { + 'xml: r4:complexDataTypeXMLSerializer, + 'json: r4:complexDataTypeJsonSerializer + } +} +public type HRexConsentPolicyHrex record {| + *HRexConsentPolicy; + + r4:Extension[] extension?; + r4:uri authority?; + r4:Extension[] modifierExtension?; + string id?; + HRexConsentPolicyUriHrex hrex; +|}; + +# FHIR HRexConsentVerification datatype record. +# +# + extension - May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. +# + verifiedWith - Who verified the instruction (Patient, Relative or other Authorized Person). +# + modifierExtension - May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions. Modifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself). +# + verified - Has the instruction been verified. +# + id - Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces. +# + verificationDate - Date verification was collected. +@r4:DataTypeDefinition { + name: "HRexConsentVerification", + baseType: (), + elements: { + "extension": { + name: "extension", + dataType: r4:Extension, + min: 0, + max: int:MAX_VALUE, + isArray: true, + description: "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension.", + path: "Consent.verification.extension" + }, + "verifiedWith": { + name: "verifiedWith", + dataType: r4:Reference, + min: 0, + max: 1, + isArray: false, + description: "Who verified the instruction (Patient, Relative or other Authorized Person).", + path: "Consent.verification.verifiedWith" + }, + "modifierExtension": { + name: "modifierExtension", + dataType: r4:Extension, + min: 0, + max: int:MAX_VALUE, + isArray: true, + description: "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions. Modifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself).", + path: "Consent.verification.modifierExtension" + }, + "verified": { + name: "verified", + dataType: boolean, + min: 1, + max: 1, + isArray: false, + description: "Has the instruction been verified.", + path: "Consent.verification.verified" + }, + "id": { + name: "id", + dataType: string, + min: 0, + max: 1, + isArray: false, + description: "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces.", + path: "Consent.verification.id" + }, + "verificationDate": { + name: "verificationDate", + dataType: r4:dateTime, + min: 0, + max: 1, + isArray: false, + description: "Date verification was collected.", + path: "Consent.verification.verificationDate" + } + }, + serializers: { + 'xml: r4:complexDataTypeXMLSerializer, + 'json: r4:complexDataTypeJsonSerializer + } +} +public type HRexConsentVerification record {| + *r4:BackboneElement; + + r4:Extension[] extension?; + r4:Reference verifiedWith?; + r4:Extension[] modifierExtension?; + boolean verified; + string id?; + r4:dateTime verificationDate?; +|}; + +# FHIR HRexConsentScope datatype record. +# +# + coding - A reference to a code defined by a terminology system. +@r4:DataTypeDefinition { + name: "HRexConsentScope", + baseType: (), + elements: { + "coding": { + name: "coding", + dataType: HRexConsentScopeCoding, + min: 1, + max: int:MAX_VALUE, + isArray: true, + description: "A reference to a code defined by a terminology system.", + path: "Consent.scope.coding" + } + }, + serializers: { + 'xml: r4:complexDataTypeXMLSerializer, + 'json: r4:complexDataTypeJsonSerializer + } +} +public type HRexConsentScope record {| + *r4:CodeableConcept; + + @constraint:Array { + minLength: 1 + } + HRexConsentScopeCoding[] coding; +|}; + +# FHIR HRexConsentProvisionActorRoleCodingOne datatype record. +# +# + system - The identification of the code system that defines the meaning of the symbol in the code. +# + code - A symbol in syntax defined by the system. The symbol may be a predefined code or an expression in a syntax defined by the coding system (e.g. post-coordination). +@r4:DataTypeDefinition { + name: "HRexConsentProvisionActorRoleCodingOne", + baseType: (), + elements: { + "system": { + name: "system", + dataType: r4:uri, + min: 1, + max: 1, + isArray: false, + description: "The identification of the code system that defines the meaning of the symbol in the code.", + path: "Consent.provision.actor.role.coding.system" + }, + "code": { + name: "code", + dataType: r4:code, + min: 1, + max: 1, + isArray: false, + description: "A symbol in syntax defined by the system. The symbol may be a predefined code or an expression in a syntax defined by the coding system (e.g. post-coordination).", + path: "Consent.provision.actor.role.coding.code" + } + }, + serializers: { + 'xml: r4:complexDataTypeXMLSerializer, + 'json: r4:complexDataTypeJsonSerializer + } +} +public type HRexConsentProvisionActorRoleCodingOne record {| + *r4:Coding; + + r4:uri system = "http://terminology.hl7.org/CodeSystem/v3-ParticipationType"; + r4:code code = "IRCP"; +|}; + +# FHIR HRexConsentProvisionActor datatype record. +# +# + reference - The resource that identifies the actor. To identify actors by type, use group to identify a set of actors by some property they share (e.g. 'admitting officers'). +# + extension - May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. +# + role - How the individual is involved in the resources content that is described in the exception. +# + modifierExtension - May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions. Modifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself). +# + id - Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces. +@r4:DataTypeDefinition { + name: "HRexConsentProvisionActor", + baseType: (), + elements: { + "reference": { + name: "reference", + dataType: r4:Reference, + min: 1, + max: 1, + isArray: false, + description: "The resource that identifies the actor. To identify actors by type, use group to identify a set of actors by some property they share (e.g. 'admitting officers').", + path: "Consent.provision.actor.reference" + }, + "extension": { + name: "extension", + dataType: r4:Extension, + min: 0, + max: int:MAX_VALUE, + isArray: true, + description: "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension.", + path: "Consent.provision.actor.extension" + }, + "role": { + name: "role", + dataType: r4:CodeableConcept, + min: 1, + max: 1, + isArray: false, + description: "How the individual is involved in the resources content that is described in the exception.", + path: "Consent.provision.actor.role" + }, + "modifierExtension": { + name: "modifierExtension", + dataType: r4:Extension, + min: 0, + max: int:MAX_VALUE, + isArray: true, + description: "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions. Modifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself).", + path: "Consent.provision.actor.modifierExtension" + }, + "id": { + name: "id", + dataType: string, + min: 0, + max: 1, + isArray: false, + description: "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces.", + path: "Consent.provision.actor.id" + } + }, + serializers: { + 'xml: r4:complexDataTypeXMLSerializer, + 'json: r4:complexDataTypeJsonSerializer + } +} +public type HRexConsentProvisionActor record {| + *r4:BackboneElement; + + r4:Reference reference; + r4:Extension[] extension?; + r4:CodeableConcept role; + r4:Extension[] modifierExtension?; + string id?; +|}; + +# FHIR HRexConsentProvisionActorRoleCoding datatype record. +# +# + system - The identification of the code system that defines the meaning of the symbol in the code. +# + code - A symbol in syntax defined by the system. The symbol may be a predefined code or an expression in a syntax defined by the coding system (e.g. post-coordination). +@r4:DataTypeDefinition { + name: "HRexConsentProvisionActorRoleCoding", + baseType: (), + elements: { + "system": { + name: "system", + dataType: r4:uri, + min: 1, + max: 1, + isArray: false, + description: "The identification of the code system that defines the meaning of the symbol in the code.", + path: "Consent.provision.actor.role.coding.system" + }, + "code": { + name: "code", + dataType: r4:code, + min: 1, + max: 1, + isArray: false, + description: "A symbol in syntax defined by the system. The symbol may be a predefined code or an expression in a syntax defined by the coding system (e.g. post-coordination).", + path: "Consent.provision.actor.role.coding.code" + } + }, + serializers: { + 'xml: r4:complexDataTypeXMLSerializer, + 'json: r4:complexDataTypeJsonSerializer + } +} +public type HRexConsentProvisionActorRoleCoding record {| + *r4:Coding; + + r4:uri system = "http://terminology.hl7.org/CodeSystem/provenance-participant-type"; + r4:code code = "performer"; +|}; + +# HRexConsentProvisionType enum +public enum HRexConsentProvisionType { + CODE_TYPE_DENY = "deny", + CODE_TYPE_PERMIT = "permit" +} + +# FHIR HRexConsentProvisionActionCoding datatype record. +# +# + system - The identification of the code system that defines the meaning of the symbol in the code. +# + code - A symbol in syntax defined by the system. The symbol may be a predefined code or an expression in a syntax defined by the coding system (e.g. post-coordination). +@r4:DataTypeDefinition { + name: "HRexConsentProvisionActionCoding", + baseType: (), + elements: { + "system": { + name: "system", + dataType: r4:uri, + min: 1, + max: 1, + isArray: false, + description: "The identification of the code system that defines the meaning of the symbol in the code.", + path: "Consent.provision.action.coding.system" + }, + "code": { + name: "code", + dataType: r4:code, + min: 1, + max: 1, + isArray: false, + description: "A symbol in syntax defined by the system. The symbol may be a predefined code or an expression in a syntax defined by the coding system (e.g. post-coordination).", + path: "Consent.provision.action.coding.code" + } + }, + serializers: { + 'xml: r4:complexDataTypeXMLSerializer, + 'json: r4:complexDataTypeJsonSerializer + } +} +public type HRexConsentProvisionActionCoding record {| + *r4:Coding; + + r4:uri system = "http://terminology.hl7.org/CodeSystem/consentaction"; + r4:code code = "disclose"; +|}; + diff --git a/davincihrex100/resource_hrex_coverage.bal b/davincihrex100/resource_hrex_coverage.bal new file mode 100644 index 00000000..327c33a8 --- /dev/null +++ b/davincihrex100/resource_hrex_coverage.bal @@ -0,0 +1,830 @@ +// Copyright (c) 2023, WSO2 LLC. (http://www.wso2.com). + +// WSO2 LLC. licenses this file to you under the Apache License, +// Version 2.0 (the "License"); you may not use this file except +// in compliance with the License. +// You may obtain a copy of the License at + +// http://www.apache.org/licenses/LICENSE-2.0 + +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. + +// AUTO-GENERATED FILE. +// This file is auto-generated by Ballerina. + +import ballerina/constraint; +import ballerinax/health.fhir.r4; + +public const string PROFILE_BASE_HREXCOVERAGE = "http://hl7.org/fhir/us/davinci-hrex/StructureDefinition/hrex-coverage"; +public const RESOURCE_NAME_HREXCOVERAGE = "Coverage"; + +# FHIR HRexCoverage resource record. +# +# + resourceType - The type of the resource describes +# + extension - May be used to represent additional information that is not part of the basic definition of the resource. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. +# + subrogation - When 'subrogation=true' this insurance instance has been included not for adjudication but to provide insurers with the details to recover costs. +# + modifierExtension - May be used to represent additional information that is not part of the basic definition of the resource and that modifies the understanding of the element that contains it and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer is allowed to define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions. Modifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself). +# + language - The base language in which the resource is written. +# + 'type - The type of coverage: social program, medical plan, accident coverage (workers compensation, auto), group health or payment by an individual or organization. +# + network - The insurer-specific identifier for the insurer-defined network of providers to which the beneficiary may seek treatment which will be covered at the 'in-network' rate, otherwise 'out of network' terms and conditions apply. +# + payor - The program or plan underwriter or payor including both insurance and non-insurance agreements, such as patient-pay agreements. +# + id - The logical id of the resource, as used in the URL for the resource. Once assigned, this value never changes. +# + text - A human-readable narrative that contains a summary of the resource and can be used to represent the content of the resource to a human. The narrative need not encode all the structured data, but is required to contain sufficient detail to make it 'clinically safe' for a human to just read the narrative. Resource definitions may define what content should be represented in the narrative to ensure clinical safety. +# + relationship - The relationship of beneficiary (patient) to the subscriber. +# + 'class - A suite of underwriter specific classifiers. +# * class Slicings +# 1) HRexCoverageClassGroup: Additional coverage classifications +# - min = 0 +# - max = 1 +# +# + dependent - A unique identifier for a dependent under the coverage. +# + 'order - The order of applicability of this coverage relative to other coverages which are currently in force. Note, there may be gaps in the numbering and this does not imply primary, secondary etc. as the specific positioning of coverages depends upon the episode of care. +# + identifier - A unique identifier assigned to this coverage. +# + costToBeneficiary - A suite of codes indicating the cost category and associated amount which have been detailed in the policy and may have been included on the health card. +# + period - Time period during which the coverage is in force. A missing start date indicates the start date isn't known, a missing end date means the coverage is continuing to be in force. +# + subscriber - The party who has signed-up for or 'owns' the contractual relationship to the policy or to whom the benefit of the policy for services rendered to them or their family is due. +# + contract - The policy(s) which constitute this insurance coverage. +# + subscriberId - The insurer assigned ID for the Subscriber. +# + contained - These resources do not have an independent existence apart from the resource that contains them - they cannot be identified independently, and nor can they have their own independent transaction scope. +# + beneficiary - The party who benefits from the insurance coverage; the patient when products and/or services are provided. +# + meta - The metadata about the resource. This is content that is maintained by the infrastructure. Changes to the content might not always be associated with version changes to the resource. +# + implicitRules - A reference to a set of rules that were followed when the resource was constructed, and which must be understood when processing the content. Often, this is a reference to an implementation guide that defines the special rules along with other profiles etc. +# + policyHolder - The party who 'owns' the insurance policy. +# + status - The status of the resource instance. +@r4:ResourceDefinition { + resourceType: "Coverage", + baseType: r4:DomainResource, + profile: "http://hl7.org/fhir/us/davinci-hrex/StructureDefinition/hrex-coverage", + elements: { + "extension" : { + name: "extension", + dataType: r4:Extension, + min: 0, + max: int:MAX_VALUE, + isArray: true, + path: "Coverage.extension" + }, + "subrogation" : { + name: "subrogation", + dataType: boolean, + min: 0, + max: 1, + isArray: false, + path: "Coverage.subrogation" + }, + "modifierExtension" : { + name: "modifierExtension", + dataType: r4:Extension, + min: 0, + max: int:MAX_VALUE, + isArray: true, + path: "Coverage.modifierExtension" + }, + "language" : { + name: "language", + dataType: r4:code, + min: 0, + max: 1, + isArray: false, + path: "Coverage.language", + valueSet: "http://hl7.org/fhir/ValueSet/languages" + }, + "type" : { + name: "type", + dataType: r4:CodeableConcept, + min: 0, + max: 1, + isArray: false, + path: "Coverage.type", + valueSet: "http://hl7.org/fhir/ValueSet/coverage-type" + }, + "network" : { + name: "network", + dataType: string, + min: 0, + max: 1, + isArray: false, + path: "Coverage.network" + }, + "payor" : { + name: "payor", + dataType: r4:Reference, + min: 1, + max: 1, + isArray: false, + path: "Coverage.payor" + }, + "id" : { + name: "id", + dataType: string, + min: 0, + max: 1, + isArray: false, + path: "Coverage.id" + }, + "text" : { + name: "text", + dataType: r4:Narrative, + min: 0, + max: 1, + isArray: false, + path: "Coverage.text" + }, + "relationship" : { + name: "relationship", + dataType: r4:CodeableConcept, + min: 0, + max: 1, + isArray: false, + path: "Coverage.relationship", + valueSet: "http://hl7.org/fhir/ValueSet/subscriber-relationship" + }, + "class" : { + name: "class", + dataType: HRexCoverageClass, + min: 0, + max: int:MAX_VALUE, + isArray: true, + path: "Coverage.class" + }, + "dependent" : { + name: "dependent", + dataType: string, + min: 0, + max: 1, + isArray: false, + path: "Coverage.dependent" + }, + "order" : { + name: "order", + dataType: r4:positiveInt, + min: 0, + max: 1, + isArray: false, + path: "Coverage.order" + }, + "identifier" : { + name: "identifier", + dataType: HRexCoverageIdentifier, + min: 0, + max: 1, + isArray: false, + path: "Coverage.identifier" + }, + "costToBeneficiary" : { + name: "costToBeneficiary", + dataType: HRexCoverageCostToBeneficiary, + min: 0, + max: int:MAX_VALUE, + isArray: true, + path: "Coverage.costToBeneficiary" + }, + "period" : { + name: "period", + dataType: r4:Period, + min: 0, + max: 1, + isArray: false, + path: "Coverage.period" + }, + "subscriber" : { + name: "subscriber", + dataType: r4:Reference, + min: 0, + max: 1, + isArray: false, + path: "Coverage.subscriber" + }, + "contract" : { + name: "contract", + dataType: r4:Reference, + min: 0, + max: int:MAX_VALUE, + isArray: true, + path: "Coverage.contract" + }, + "subscriberId" : { + name: "subscriberId", + dataType: string, + min: 0, + max: 1, + isArray: false, + path: "Coverage.subscriberId" + }, + "contained" : { + name: "contained", + dataType: r4:Resource, + min: 0, + max: int:MAX_VALUE, + isArray: true, + path: "Coverage.contained" + }, + "beneficiary" : { + name: "beneficiary", + dataType: r4:Reference, + min: 1, + max: 1, + isArray: false, + path: "Coverage.beneficiary" + }, + "meta" : { + name: "meta", + dataType: r4:Meta, + min: 0, + max: 1, + isArray: false, + path: "Coverage.meta" + }, + "implicitRules" : { + name: "implicitRules", + dataType: r4:uri, + min: 0, + max: 1, + isArray: false, + path: "Coverage.implicitRules" + }, + "policyHolder" : { + name: "policyHolder", + dataType: r4:Reference, + min: 0, + max: 1, + isArray: false, + path: "Coverage.policyHolder" + }, + "status" : { + name: "status", + dataType: HRexCoverageStatus, + min: 1, + max: 1, + isArray: false, + path: "Coverage.status", + valueSet: "http://hl7.org/fhir/ValueSet/fm-status|4.0.1" + } + }, + serializers: { + 'xml: r4:fhirResourceXMLSerializer, + 'json: r4:fhirResourceJsonSerializer + } +} +public type HRexCoverage record {| + *r4:DomainResource; + + RESOURCE_NAME_HREXCOVERAGE resourceType = RESOURCE_NAME_HREXCOVERAGE; + + r4:Extension[] extension?; + boolean subrogation?; + r4:Extension[] modifierExtension?; + r4:code language?; + r4:CodeableConcept 'type?; + string network?; + r4:Reference payor; + string id?; + r4:Narrative text?; + r4:CodeableConcept relationship?; + HRexCoverageClass[] 'class?; + string dependent?; + r4:positiveInt 'order?; + HRexCoverageIdentifier identifier?; + HRexCoverageCostToBeneficiary[] costToBeneficiary?; + r4:Period period?; + r4:Reference subscriber?; + r4:Reference[] contract?; + string subscriberId?; + r4:Resource[] contained?; + r4:Reference beneficiary; + r4:Meta meta?; + r4:uri implicitRules?; + r4:Reference policyHolder?; + HRexCoverageStatus status; + r4:Element ...; +|}; + +# HRexCoverageIdentifierUse enum +public enum HRexCoverageIdentifierUse { + CODE_USE_SECONDARY = "secondary", + CODE_USE_TEMP = "temp", + CODE_USE_USUAL = "usual", + CODE_USE_OLD = "old", + CODE_USE_OFFICIAL = "official" +} + +# FHIR HRexCoverageClassTypeCoding datatype record. +# +# + system - The identification of the code system that defines the meaning of the symbol in the code. +# + code - A symbol in syntax defined by the system. The symbol may be a predefined code or an expression in a syntax defined by the coding system (e.g. post-coordination). +@r4:DataTypeDefinition { + name: "HRexCoverageClassTypeCoding", + baseType: (), + elements: { + "system": { + name: "system", + dataType: r4:uri, + min: 1, + max: 1, + isArray: false, + description: "The identification of the code system that defines the meaning of the symbol in the code.", + path: "Coverage.class.type.coding.system" + }, + "code": { + name: "code", + dataType: r4:code, + min: 1, + max: 1, + isArray: false, + description: "A symbol in syntax defined by the system. The symbol may be a predefined code or an expression in a syntax defined by the coding system (e.g. post-coordination).", + path: "Coverage.class.type.coding.code" + } + }, + serializers: { + 'xml: r4:complexDataTypeXMLSerializer, + 'json: r4:complexDataTypeJsonSerializer + } +} +public type HRexCoverageClassTypeCoding record {| + *r4:Coding; + + r4:uri system = "http://terminology.hl7.org/CodeSystem/coverage-class"; + r4:code code = "group"; +|}; + +# FHIR HRexCoverageIdentifier datatype record. +# +# + extension - May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. +# + period - Time period during which identifier is/was valid for use. +# + system - Establishes the namespace for the value - that is, a URL that describes a set values that are unique. +# + use - The purpose of this identifier. +# + assigner - Organization that issued/manages the identifier. +# + id - Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces. +# + 'type - A coded type for the identifier that can be used to determine which identifier to use for a specific purpose. +# + value - The portion of the identifier typically relevant to the user and which is unique within the context of the system. +@r4:DataTypeDefinition { + name: "HRexCoverageIdentifier", + baseType: (), + elements: { + "extension": { + name: "extension", + dataType: r4:Extension, + min: 0, + max: int:MAX_VALUE, + isArray: true, + description: "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension.", + path: "Coverage.identifier.extension" + }, + "period": { + name: "period", + dataType: r4:Period, + min: 0, + max: 1, + isArray: false, + description: "Time period during which identifier is/was valid for use.", + path: "Coverage.identifier.period" + }, + "system": { + name: "system", + dataType: r4:uri, + min: 0, + max: 1, + isArray: false, + description: "Establishes the namespace for the value - that is, a URL that describes a set values that are unique.", + path: "Coverage.identifier.system" + }, + "use": { + name: "use", + dataType: HRexCoverageIdentifierUse, + min: 0, + max: 1, + isArray: false, + description: "The purpose of this identifier.", + path: "Coverage.identifier.use" + }, + "assigner": { + name: "assigner", + dataType: r4:Reference, + min: 0, + max: 1, + isArray: false, + description: "Organization that issued/manages the identifier.", + path: "Coverage.identifier.assigner" + }, + "id": { + name: "id", + dataType: string, + min: 0, + max: 1, + isArray: false, + description: "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces.", + path: "Coverage.identifier.id" + }, + "type": { + name: "type", + dataType: r4:CodeableConcept, + min: 0, + max: 1, + isArray: false, + description: "A coded type for the identifier that can be used to determine which identifier to use for a specific purpose.", + path: "Coverage.identifier.type" + }, + "value": { + name: "value", + dataType: string, + min: 1, + max: 1, + isArray: false, + description: "The portion of the identifier typically relevant to the user and which is unique within the context of the system.", + path: "Coverage.identifier.value" + } + }, + serializers: { + 'xml: r4:complexDataTypeXMLSerializer, + 'json: r4:complexDataTypeJsonSerializer + } +} +public type HRexCoverageIdentifier record {| + *r4:Identifier; + + r4:Extension[] extension?; + r4:Period period?; + r4:uri system?; + HRexCoverageIdentifierUse use?; + r4:Reference assigner?; + string id?; + r4:CodeableConcept 'type?; + string value; +|}; + +# HRexCoverageStatus enum +public enum HRexCoverageStatus { + CODE_STATUS_DRAFT = "draft", + CODE_STATUS_ACTIVE = "active", + CODE_STATUS_CANCELLED = "cancelled", + CODE_STATUS_ENTERED_IN_ERROR = "entered-in-error" +} + +# FHIR HRexCoverageClass datatype record. +# +# + extension - May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. +# + modifierExtension - May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions. Modifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself). +# + name - A short description for the class. +# + id - Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces. +# + 'type - The type of classification for which an insurer-specific class label or number and optional name is provided, for example may be used to identify a class of coverage or employer group, Policy, Plan. +# + value - The alphanumeric string value associated with the insurer issued label. +@r4:DataTypeDefinition { + name: "HRexCoverageClass", + baseType: (), + elements: { + "extension": { + name: "extension", + dataType: r4:Extension, + min: 0, + max: int:MAX_VALUE, + isArray: true, + description: "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension.", + path: "Coverage.class.extension" + }, + "modifierExtension": { + name: "modifierExtension", + dataType: r4:Extension, + min: 0, + max: int:MAX_VALUE, + isArray: true, + description: "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions. Modifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself).", + path: "Coverage.class.modifierExtension" + }, + "name": { + name: "name", + dataType: string, + min: 0, + max: 1, + isArray: false, + description: "A short description for the class.", + path: "Coverage.class.name" + }, + "id": { + name: "id", + dataType: string, + min: 0, + max: 1, + isArray: false, + description: "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces.", + path: "Coverage.class.id" + }, + "type": { + name: "type", + dataType: r4:CodeableConcept, + min: 1, + max: 1, + isArray: false, + description: "The type of classification for which an insurer-specific class label or number and optional name is provided, for example may be used to identify a class of coverage or employer group, Policy, Plan.", + path: "Coverage.class.type" + }, + "value": { + name: "value", + dataType: string, + min: 1, + max: 1, + isArray: false, + description: "The alphanumeric string value associated with the insurer issued label.", + path: "Coverage.class.value" + } + }, + serializers: { + 'xml: r4:complexDataTypeXMLSerializer, + 'json: r4:complexDataTypeJsonSerializer + } +} +public type HRexCoverageClass record {| + *r4:BackboneElement; + + r4:Extension[] extension?; + r4:Extension[] modifierExtension?; + string name?; + string id?; + r4:CodeableConcept 'type; + string value; +|}; + +# FHIR HRexCoverageCostToBeneficiaryException datatype record. +# +# + extension - May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. +# + period - The timeframe during when the exception is in force. +# + modifierExtension - May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions. Modifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself). +# + id - Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces. +# + 'type - The code for the specific exception. +@r4:DataTypeDefinition { + name: "HRexCoverageCostToBeneficiaryException", + baseType: (), + elements: { + "extension": { + name: "extension", + dataType: r4:Extension, + min: 0, + max: int:MAX_VALUE, + isArray: true, + description: "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension.", + path: "Coverage.costToBeneficiary.exception.extension" + }, + "period": { + name: "period", + dataType: r4:Period, + min: 0, + max: 1, + isArray: false, + description: "The timeframe during when the exception is in force.", + path: "Coverage.costToBeneficiary.exception.period" + }, + "modifierExtension": { + name: "modifierExtension", + dataType: r4:Extension, + min: 0, + max: int:MAX_VALUE, + isArray: true, + description: "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions. Modifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself).", + path: "Coverage.costToBeneficiary.exception.modifierExtension" + }, + "id": { + name: "id", + dataType: string, + min: 0, + max: 1, + isArray: false, + description: "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces.", + path: "Coverage.costToBeneficiary.exception.id" + }, + "type": { + name: "type", + dataType: r4:CodeableConcept, + min: 1, + max: 1, + isArray: false, + description: "The code for the specific exception.", + path: "Coverage.costToBeneficiary.exception.type" + } + }, + serializers: { + 'xml: r4:complexDataTypeXMLSerializer, + 'json: r4:complexDataTypeJsonSerializer + } +} +public type HRexCoverageCostToBeneficiaryException record {| + *r4:BackboneElement; + + r4:Extension[] extension?; + r4:Period period?; + r4:Extension[] modifierExtension?; + string id?; + r4:CodeableConcept 'type; +|}; + +# FHIR HRexCoverageCostToBeneficiary datatype record. +# +# + exception - A suite of codes indicating exceptions or reductions to patient costs and their effective periods. +# + extension - May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. +# + valueMoney - The amount due from the patient for the cost category. +# + modifierExtension - May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions. Modifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself). +# + id - Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces. +# + 'type - The category of patient centric costs associated with treatment. +# + valueQuantity - The amount due from the patient for the cost category. +@r4:DataTypeDefinition { + name: "HRexCoverageCostToBeneficiary", + baseType: (), + elements: { + "exception": { + name: "exception", + dataType: HRexCoverageCostToBeneficiaryException, + min: 0, + max: int:MAX_VALUE, + isArray: true, + description: "A suite of codes indicating exceptions or reductions to patient costs and their effective periods.", + path: "Coverage.costToBeneficiary.exception" + }, + "extension": { + name: "extension", + dataType: r4:Extension, + min: 0, + max: int:MAX_VALUE, + isArray: true, + description: "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension.", + path: "Coverage.costToBeneficiary.extension" + }, + "valueMoney": { + name: "valueMoney", + dataType: r4:Money, + min: 1, + max: 1, + isArray: false, + description: "The amount due from the patient for the cost category.", + path: "Coverage.costToBeneficiary.value[x]" + }, + "modifierExtension": { + name: "modifierExtension", + dataType: r4:Extension, + min: 0, + max: int:MAX_VALUE, + isArray: true, + description: "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions. Modifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself).", + path: "Coverage.costToBeneficiary.modifierExtension" + }, + "id": { + name: "id", + dataType: string, + min: 0, + max: 1, + isArray: false, + description: "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces.", + path: "Coverage.costToBeneficiary.id" + }, + "type": { + name: "type", + dataType: r4:CodeableConcept, + min: 0, + max: 1, + isArray: false, + description: "The category of patient centric costs associated with treatment.", + path: "Coverage.costToBeneficiary.type" + }, + "valueQuantity": { + name: "valueQuantity", + dataType: r4:Quantity, + min: 1, + max: 1, + isArray: false, + description: "The amount due from the patient for the cost category.", + path: "Coverage.costToBeneficiary.value[x]" + } + }, + serializers: { + 'xml: r4:complexDataTypeXMLSerializer, + 'json: r4:complexDataTypeJsonSerializer + } +} +public type HRexCoverageCostToBeneficiary record {| + *r4:BackboneElement; + + HRexCoverageCostToBeneficiaryException[] exception?; + r4:Extension[] extension?; + r4:Money valueMoney; + r4:Extension[] modifierExtension?; + string id?; + r4:CodeableConcept 'type?; + r4:Quantity valueQuantity; +|}; + +# FHIR HRexCoverageClassType datatype record. +# +# + coding - A reference to a code defined by a terminology system. +@r4:DataTypeDefinition { + name: "HRexCoverageClassType", + baseType: (), + elements: { + "coding": { + name: "coding", + dataType: HRexCoverageClassTypeCoding, + min: 1, + max: int:MAX_VALUE, + isArray: true, + description: "A reference to a code defined by a terminology system.", + path: "Coverage.class.type.coding" + } + }, + serializers: { + 'xml: r4:complexDataTypeXMLSerializer, + 'json: r4:complexDataTypeJsonSerializer + } +} +public type HRexCoverageClassType record {| + *r4:CodeableConcept; + + @constraint:Array { + minLength: 1 + } + HRexCoverageClassTypeCoding[] coding; +|}; + +# FHIR HRexCoverageClassGroup datatype record. +# +# + extension - May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. +# + modifierExtension - May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions. Modifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself). +# + name - A short description for the class. +# + id - Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces. +# + 'type - The type of classification for which an insurer-specific class label or number and optional name is provided, for example may be used to identify a class of coverage or employer group, Policy, Plan. +# + value - The alphanumeric string value associated with the insurer issued label. +@r4:DataTypeDefinition { + name: "HRexCoverageClassGroup", + baseType: (), + elements: { + "extension": { + name: "extension", + dataType: r4:Extension, + min: 0, + max: int:MAX_VALUE, + isArray: true, + description: "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension.", + path: "Coverage.class.extension" + }, + "modifierExtension": { + name: "modifierExtension", + dataType: r4:Extension, + min: 0, + max: int:MAX_VALUE, + isArray: true, + description: "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions. Modifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself).", + path: "Coverage.class.modifierExtension" + }, + "name": { + name: "name", + dataType: string, + min: 0, + max: 1, + isArray: false, + description: "A short description for the class.", + path: "Coverage.class.name" + }, + "id": { + name: "id", + dataType: string, + min: 0, + max: 1, + isArray: false, + description: "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces.", + path: "Coverage.class.id" + }, + "type": { + name: "type", + dataType: HRexCoverageClassType, + min: 1, + max: 1, + isArray: false, + description: "The type of classification for which an insurer-specific class label or number and optional name is provided, for example may be used to identify a class of coverage or employer group, Policy, Plan.", + path: "Coverage.class.type" + }, + "value": { + name: "value", + dataType: string, + min: 1, + max: 1, + isArray: false, + description: "The alphanumeric string value associated with the insurer issued label.", + path: "Coverage.class.value" + } + }, + serializers: { + 'xml: r4:complexDataTypeXMLSerializer, + 'json: r4:complexDataTypeJsonSerializer + } +} +public type HRexCoverageClassGroup record {| + *HRexCoverageClass; + + r4:Extension[] extension?; + r4:Extension[] modifierExtension?; + string name?; + string id?; + HRexCoverageClassType 'type; + string value; +|}; + diff --git a/davincihrex100/resource_hrex_member_match_request_parameters.bal b/davincihrex100/resource_hrex_member_match_request_parameters.bal new file mode 100644 index 00000000..3268f779 --- /dev/null +++ b/davincihrex100/resource_hrex_member_match_request_parameters.bal @@ -0,0 +1,3229 @@ +// Copyright (c) 2023, WSO2 LLC. (http://www.wso2.com). + +// WSO2 LLC. licenses this file to you under the Apache License, +// Version 2.0 (the "License"); you may not use this file except +// in compliance with the License. +// You may obtain a copy of the License at + +// http://www.apache.org/licenses/LICENSE-2.0 + +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. + +// AUTO-GENERATED FILE. +// This file is auto-generated by Ballerina. + +import ballerina/constraint; +import ballerinax/health.fhir.r4; + +public const string PROFILE_BASE_HREXMEMBERMATCHREQUESTPARAMETERS = "http://hl7.org/fhir/us/davinci-hrex/StructureDefinition/hrex-parameters-member-match-in"; +public const RESOURCE_NAME_HREXMEMBERMATCHREQUESTPARAMETERS = "Parameters"; + +# FHIR HRexMemberMatchRequestParameters resource record. +# +# + resourceType - The type of the resource describes +# + meta - The metadata about the resource. This is content that is maintained by the infrastructure. Changes to the content might not always be associated with version changes to the resource. +# + 'parameter - A parameter passed to or received from the operation. +# * parameter Slicings +# 1) HRexMemberMatchRequestParametersParameterMemberPatient: Operation Parameter +# - min = 1 +# - max = 1 +# +# 2) HRexMemberMatchRequestParametersParameterConsent: Operation Parameter +# - min = 1 +# - max = 1 +# +# 3) HRexMemberMatchRequestParametersParameterCoverageToLink: Operation Parameter +# - min = 0 +# - max = 1 +# +# 4) HRexMemberMatchRequestParametersParameterCoverageToMatch: Operation Parameter +# - min = 1 +# - max = 1 +# +# + implicitRules - A reference to a set of rules that were followed when the resource was constructed, and which must be understood when processing the content. Often, this is a reference to an implementation guide that defines the special rules along with other profiles etc. +# + language - The base language in which the resource is written. +# + id - The logical id of the resource, as used in the URL for the resource. Once assigned, this value never changes. +@r4:ResourceDefinition { + resourceType: "Parameters", + baseType: r4:DomainResource, + profile: "http://hl7.org/fhir/us/davinci-hrex/StructureDefinition/hrex-parameters-member-match-in", + elements: { + "meta" : { + name: "meta", + dataType: r4:Meta, + min: 0, + max: 1, + isArray: false, + path: "Parameters.meta" + }, + "parameter" : { + name: "parameter", + dataType: HRexMemberMatchRequestParametersParameter, + min: 3, + max: 4, + isArray: true, + path: "Parameters.parameter" + }, + "implicitRules" : { + name: "implicitRules", + dataType: r4:uri, + min: 0, + max: 1, + isArray: false, + path: "Parameters.implicitRules" + }, + "language" : { + name: "language", + dataType: r4:code, + min: 0, + max: 1, + isArray: false, + path: "Parameters.language", + valueSet: "http://hl7.org/fhir/ValueSet/languages" + }, + "id" : { + name: "id", + dataType: string, + min: 0, + max: 1, + isArray: false, + path: "Parameters.id" + } + }, + serializers: { + 'xml: r4:fhirResourceXMLSerializer, + 'json: r4:fhirResourceJsonSerializer + } +} +public type HRexMemberMatchRequestParameters record {| + *r4:DomainResource; + + RESOURCE_NAME_HREXMEMBERMATCHREQUESTPARAMETERS resourceType = RESOURCE_NAME_HREXMEMBERMATCHREQUESTPARAMETERS; + + r4:Meta meta?; + @constraint:Array { + minLength: 3, + maxLength: 4 + } + HRexMemberMatchRequestParametersParameter[] 'parameter; + r4:uri implicitRules?; + r4:code language?; + string id?; + r4:Element ...; +|}; + +# FHIR HRexMemberMatchRequestParametersParameterCoverageToLink datatype record. +# +# + valueTime - If the parameter is a data type. +# + valueTriggerDefinition - If the parameter is a data type. +# + valueMoney - If the parameter is a data type. +# + valueSignature - If the parameter is a data type. +# + modifierExtension - May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions. Modifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself). +# + valueUuid - If the parameter is a data type. +# + valueRatio - If the parameter is a data type. +# + valueParameterDefinition - If the parameter is a data type. +# + id - Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces. +# + valueInteger - If the parameter is a data type. +# + valueUnsignedInt - If the parameter is a data type. +# + valueQuantity - If the parameter is a data type. +# + valueCanonical - If the parameter is a data type. +# + valueCount - If the parameter is a data type. +# + valueId - If the parameter is a data type. +# + 'resource - This is the Coverage profile which is used to provide insurance information for scheduling an appointment and/or registering a patient. +# + valueCode - If the parameter is a data type. +# + valueAddress - If the parameter is a data type. +# + valueContactPoint - If the parameter is a data type. +# + valuePeriod - If the parameter is a data type. +# + valueSampledData - If the parameter is a data type. +# + valueTiming - If the parameter is a data type. +# + name - The name of the parameter (reference to the operation definition). +# + valueInstant - If the parameter is a data type. +# + valueAge - If the parameter is a data type. +# + valueDosage - If the parameter is a data type. +# + valueBase64Binary - If the parameter is a data type. +# + valueBoolean - If the parameter is a data type. +# + valueCoding - If the parameter is a data type. +# + extension - May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. +# + valueIdentifier - If the parameter is a data type. +# + valueExpression - If the parameter is a data type. +# + valueReference - If the parameter is a data type. +# + valueRange - If the parameter is a data type. +# + valueUri - If the parameter is a data type. +# + valueDistance - If the parameter is a data type. +# + valueUrl - If the parameter is a data type. +# + valueContactDetail - If the parameter is a data type. +# + valueMeta - If the parameter is a data type. +# + valueCodeableConcept - If the parameter is a data type. +# + valueMarkdown - If the parameter is a data type. +# + valueAttachment - If the parameter is a data type. +# + valueUsageContext - If the parameter is a data type. +# + valueDateTime - If the parameter is a data type. +# + valueHumanName - If the parameter is a data type. +# + valueRelatedArtifact - If the parameter is a data type. +# + valueDecimal - If the parameter is a data type. +# + valueDate - If the parameter is a data type. +# + valueOid - If the parameter is a data type. +# + valueContributor - If the parameter is a data type. +# + valueString - If the parameter is a data type. +# + valuePositiveInt - If the parameter is a data type. +# + valueDuration - If the parameter is a data type. +# + valueDataRequirement - If the parameter is a data type. +# + valueAnnotation - If the parameter is a data type. +@r4:DataTypeDefinition { + name: "HRexMemberMatchRequestParametersParameterCoverageToLink", + baseType: (), + elements: { + "valueTime": { + name: "valueTime", + dataType: r4:time, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueTriggerDefinition": { + name: "valueTriggerDefinition", + dataType: r4:TriggerDefinition, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueMoney": { + name: "valueMoney", + dataType: r4:Money, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueSignature": { + name: "valueSignature", + dataType: r4:Signature, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "modifierExtension": { + name: "modifierExtension", + dataType: r4:Extension, + min: 0, + max: int:MAX_VALUE, + isArray: true, + description: "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions. Modifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself).", + path: "Parameters.parameter.modifierExtension" + }, + "valueUuid": { + name: "valueUuid", + dataType: r4:uuid, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueRatio": { + name: "valueRatio", + dataType: r4:Ratio, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueParameterDefinition": { + name: "valueParameterDefinition", + dataType: r4:ParameterDefinition, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "id": { + name: "id", + dataType: string, + min: 0, + max: 1, + isArray: false, + description: "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces.", + path: "Parameters.parameter.id" + }, + "valueInteger": { + name: "valueInteger", + dataType: r4:integer, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueUnsignedInt": { + name: "valueUnsignedInt", + dataType: r4:unsignedInt, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueQuantity": { + name: "valueQuantity", + dataType: r4:Quantity, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueCanonical": { + name: "valueCanonical", + dataType: r4:canonical, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueCount": { + name: "valueCount", + dataType: r4:Count, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueId": { + name: "valueId", + dataType: r4:id, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "resource": { + name: "resource", + dataType: r4:Resource, + min: 1, + max: 1, + isArray: false, + description: "This is the Coverage profile which is used to provide insurance information for scheduling an appointment and/or registering a patient.", + path: "Parameters.parameter.resource" + }, + "valueCode": { + name: "valueCode", + dataType: r4:code, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueAddress": { + name: "valueAddress", + dataType: r4:Address, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueContactPoint": { + name: "valueContactPoint", + dataType: r4:ContactPoint, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valuePeriod": { + name: "valuePeriod", + dataType: r4:Period, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueSampledData": { + name: "valueSampledData", + dataType: r4:SampledData, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueTiming": { + name: "valueTiming", + dataType: r4:Timing, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "name": { + name: "name", + dataType: string, + min: 1, + max: 1, + isArray: false, + description: "The name of the parameter (reference to the operation definition).", + path: "Parameters.parameter.name" + }, + "valueInstant": { + name: "valueInstant", + dataType: r4:instant, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueAge": { + name: "valueAge", + dataType: r4:Age, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueDosage": { + name: "valueDosage", + dataType: r4:Dosage, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueBase64Binary": { + name: "valueBase64Binary", + dataType: r4:base64Binary, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueBoolean": { + name: "valueBoolean", + dataType: boolean, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueCoding": { + name: "valueCoding", + dataType: r4:Coding, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "extension": { + name: "extension", + dataType: r4:Extension, + min: 0, + max: int:MAX_VALUE, + isArray: true, + description: "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension.", + path: "Parameters.parameter.extension" + }, + "valueIdentifier": { + name: "valueIdentifier", + dataType: r4:Identifier, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueExpression": { + name: "valueExpression", + dataType: r4:Expression, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueReference": { + name: "valueReference", + dataType: r4:Reference, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueRange": { + name: "valueRange", + dataType: r4:Range, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueUri": { + name: "valueUri", + dataType: r4:uri, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueDistance": { + name: "valueDistance", + dataType: r4:Distance, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueUrl": { + name: "valueUrl", + dataType: r4:urlType, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueContactDetail": { + name: "valueContactDetail", + dataType: r4:ContactDetail, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueMeta": { + name: "valueMeta", + dataType: r4:Meta, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueCodeableConcept": { + name: "valueCodeableConcept", + dataType: r4:CodeableConcept, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueMarkdown": { + name: "valueMarkdown", + dataType: r4:markdown, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueAttachment": { + name: "valueAttachment", + dataType: r4:Attachment, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueUsageContext": { + name: "valueUsageContext", + dataType: r4:UsageContext, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueDateTime": { + name: "valueDateTime", + dataType: r4:dateTime, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueHumanName": { + name: "valueHumanName", + dataType: r4:HumanName, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueRelatedArtifact": { + name: "valueRelatedArtifact", + dataType: r4:RelatedArtifact, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueDecimal": { + name: "valueDecimal", + dataType: decimal, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueDate": { + name: "valueDate", + dataType: r4:date, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueOid": { + name: "valueOid", + dataType: r4:oid, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueContributor": { + name: "valueContributor", + dataType: r4:Contributor, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueString": { + name: "valueString", + dataType: string, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valuePositiveInt": { + name: "valuePositiveInt", + dataType: r4:positiveInt, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueDuration": { + name: "valueDuration", + dataType: r4:Duration, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueDataRequirement": { + name: "valueDataRequirement", + dataType: r4:DataRequirement, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueAnnotation": { + name: "valueAnnotation", + dataType: r4:Annotation, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + } + }, + serializers: { + 'xml: r4:complexDataTypeXMLSerializer, + 'json: r4:complexDataTypeJsonSerializer + } +} +public type HRexMemberMatchRequestParametersParameterCoverageToLink record {| + *HRexMemberMatchRequestParametersParameter; + + r4:time valueTime?; + r4:TriggerDefinition valueTriggerDefinition?; + r4:Money valueMoney?; + r4:Signature valueSignature?; + r4:Extension[] modifierExtension?; + r4:uuid valueUuid?; + r4:Ratio valueRatio?; + r4:ParameterDefinition valueParameterDefinition?; + string id?; + r4:integer valueInteger?; + r4:unsignedInt valueUnsignedInt?; + r4:Quantity valueQuantity?; + r4:canonical valueCanonical?; + r4:Count valueCount?; + r4:id valueId?; + r4:Resource 'resource; + r4:code valueCode?; + r4:Address valueAddress?; + r4:ContactPoint valueContactPoint?; + r4:Period valuePeriod?; + r4:SampledData valueSampledData?; + r4:Timing valueTiming?; + string name = "CoverageToLink"; + r4:instant valueInstant?; + r4:Age valueAge?; + r4:Dosage valueDosage?; + r4:base64Binary valueBase64Binary?; + boolean valueBoolean?; + r4:Coding valueCoding?; + r4:Extension[] extension?; + r4:Identifier valueIdentifier?; + r4:Expression valueExpression?; + r4:Reference valueReference?; + r4:Range valueRange?; + r4:uri valueUri?; + r4:Distance valueDistance?; + r4:urlType valueUrl?; + r4:ContactDetail valueContactDetail?; + r4:Meta valueMeta?; + r4:CodeableConcept valueCodeableConcept?; + r4:markdown valueMarkdown?; + r4:Attachment valueAttachment?; + r4:UsageContext valueUsageContext?; + r4:dateTime valueDateTime?; + r4:HumanName valueHumanName?; + r4:RelatedArtifact valueRelatedArtifact?; + decimal valueDecimal?; + r4:date valueDate?; + r4:oid valueOid?; + r4:Contributor valueContributor?; + string valueString?; + r4:positiveInt valuePositiveInt?; + r4:Duration valueDuration?; + r4:DataRequirement valueDataRequirement?; + r4:Annotation valueAnnotation?; +|}; + +# FHIR HRexMemberMatchRequestParametersParameter datatype record. +# +# + valueTime - If the parameter is a data type. +# + valueTriggerDefinition - If the parameter is a data type. +# + valueMoney - If the parameter is a data type. +# + valueSignature - If the parameter is a data type. +# + modifierExtension - May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions. Modifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself). +# + valueUuid - If the parameter is a data type. +# + valueRatio - If the parameter is a data type. +# + valueParameterDefinition - If the parameter is a data type. +# + id - Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces. +# + valueInteger - If the parameter is a data type. +# + valueUnsignedInt - If the parameter is a data type. +# + valueQuantity - If the parameter is a data type. +# + valueCanonical - If the parameter is a data type. +# + valueCount - If the parameter is a data type. +# + valueId - If the parameter is a data type. +# + 'resource - If the parameter is a whole resource. +# + valueCode - If the parameter is a data type. +# + valueAddress - If the parameter is a data type. +# + valueContactPoint - If the parameter is a data type. +# + valuePeriod - If the parameter is a data type. +# + valueSampledData - If the parameter is a data type. +# + valueTiming - If the parameter is a data type. +# + name - The name of the parameter (reference to the operation definition). +# + valueInstant - If the parameter is a data type. +# + valueAge - If the parameter is a data type. +# + valueDosage - If the parameter is a data type. +# + valueBase64Binary - If the parameter is a data type. +# + valueBoolean - If the parameter is a data type. +# + valueCoding - If the parameter is a data type. +# + extension - May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. +# + valueIdentifier - If the parameter is a data type. +# + valueExpression - If the parameter is a data type. +# + valueReference - If the parameter is a data type. +# + valueRange - If the parameter is a data type. +# + valueUri - If the parameter is a data type. +# + valueDistance - If the parameter is a data type. +# + valueUrl - If the parameter is a data type. +# + valueContactDetail - If the parameter is a data type. +# + valueMeta - If the parameter is a data type. +# + valueCodeableConcept - If the parameter is a data type. +# + valueMarkdown - If the parameter is a data type. +# + valueAttachment - If the parameter is a data type. +# + valueUsageContext - If the parameter is a data type. +# + valueDateTime - If the parameter is a data type. +# + valueHumanName - If the parameter is a data type. +# + valueRelatedArtifact - If the parameter is a data type. +# + valueDecimal - If the parameter is a data type. +# + valueDate - If the parameter is a data type. +# + valueOid - If the parameter is a data type. +# + valueContributor - If the parameter is a data type. +# + valueString - If the parameter is a data type. +# + valuePositiveInt - If the parameter is a data type. +# + valueDuration - If the parameter is a data type. +# + valueDataRequirement - If the parameter is a data type. +# + valueAnnotation - If the parameter is a data type. +@r4:DataTypeDefinition { + name: "HRexMemberMatchRequestParametersParameter", + baseType: (), + elements: { + "valueTime": { + name: "valueTime", + dataType: r4:time, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueTriggerDefinition": { + name: "valueTriggerDefinition", + dataType: r4:TriggerDefinition, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueMoney": { + name: "valueMoney", + dataType: r4:Money, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueSignature": { + name: "valueSignature", + dataType: r4:Signature, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "modifierExtension": { + name: "modifierExtension", + dataType: r4:Extension, + min: 0, + max: int:MAX_VALUE, + isArray: true, + description: "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions. Modifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself).", + path: "Parameters.parameter.modifierExtension" + }, + "valueUuid": { + name: "valueUuid", + dataType: r4:uuid, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueRatio": { + name: "valueRatio", + dataType: r4:Ratio, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueParameterDefinition": { + name: "valueParameterDefinition", + dataType: r4:ParameterDefinition, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "id": { + name: "id", + dataType: string, + min: 0, + max: 1, + isArray: false, + description: "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces.", + path: "Parameters.parameter.id" + }, + "valueInteger": { + name: "valueInteger", + dataType: r4:integer, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueUnsignedInt": { + name: "valueUnsignedInt", + dataType: r4:unsignedInt, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueQuantity": { + name: "valueQuantity", + dataType: r4:Quantity, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueCanonical": { + name: "valueCanonical", + dataType: r4:canonical, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueCount": { + name: "valueCount", + dataType: r4:Count, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueId": { + name: "valueId", + dataType: r4:id, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "resource": { + name: "resource", + dataType: r4:Resource, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a whole resource.", + path: "Parameters.parameter.resource" + }, + "valueCode": { + name: "valueCode", + dataType: r4:code, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueAddress": { + name: "valueAddress", + dataType: r4:Address, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueContactPoint": { + name: "valueContactPoint", + dataType: r4:ContactPoint, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valuePeriod": { + name: "valuePeriod", + dataType: r4:Period, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueSampledData": { + name: "valueSampledData", + dataType: r4:SampledData, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueTiming": { + name: "valueTiming", + dataType: r4:Timing, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "name": { + name: "name", + dataType: string, + min: 1, + max: 1, + isArray: false, + description: "The name of the parameter (reference to the operation definition).", + path: "Parameters.parameter.name" + }, + "valueInstant": { + name: "valueInstant", + dataType: r4:instant, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueAge": { + name: "valueAge", + dataType: r4:Age, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueDosage": { + name: "valueDosage", + dataType: r4:Dosage, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueBase64Binary": { + name: "valueBase64Binary", + dataType: r4:base64Binary, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueBoolean": { + name: "valueBoolean", + dataType: boolean, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueCoding": { + name: "valueCoding", + dataType: r4:Coding, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "extension": { + name: "extension", + dataType: r4:Extension, + min: 0, + max: int:MAX_VALUE, + isArray: true, + description: "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension.", + path: "Parameters.parameter.extension" + }, + "valueIdentifier": { + name: "valueIdentifier", + dataType: r4:Identifier, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueExpression": { + name: "valueExpression", + dataType: r4:Expression, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueReference": { + name: "valueReference", + dataType: r4:Reference, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueRange": { + name: "valueRange", + dataType: r4:Range, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueUri": { + name: "valueUri", + dataType: r4:uri, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueDistance": { + name: "valueDistance", + dataType: r4:Distance, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueUrl": { + name: "valueUrl", + dataType: r4:urlType, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueContactDetail": { + name: "valueContactDetail", + dataType: r4:ContactDetail, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueMeta": { + name: "valueMeta", + dataType: r4:Meta, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueCodeableConcept": { + name: "valueCodeableConcept", + dataType: r4:CodeableConcept, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueMarkdown": { + name: "valueMarkdown", + dataType: r4:markdown, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueAttachment": { + name: "valueAttachment", + dataType: r4:Attachment, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueUsageContext": { + name: "valueUsageContext", + dataType: r4:UsageContext, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueDateTime": { + name: "valueDateTime", + dataType: r4:dateTime, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueHumanName": { + name: "valueHumanName", + dataType: r4:HumanName, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueRelatedArtifact": { + name: "valueRelatedArtifact", + dataType: r4:RelatedArtifact, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueDecimal": { + name: "valueDecimal", + dataType: decimal, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueDate": { + name: "valueDate", + dataType: r4:date, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueOid": { + name: "valueOid", + dataType: r4:oid, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueContributor": { + name: "valueContributor", + dataType: r4:Contributor, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueString": { + name: "valueString", + dataType: string, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valuePositiveInt": { + name: "valuePositiveInt", + dataType: r4:positiveInt, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueDuration": { + name: "valueDuration", + dataType: r4:Duration, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueDataRequirement": { + name: "valueDataRequirement", + dataType: r4:DataRequirement, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueAnnotation": { + name: "valueAnnotation", + dataType: r4:Annotation, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + } + }, + serializers: { + 'xml: r4:complexDataTypeXMLSerializer, + 'json: r4:complexDataTypeJsonSerializer + } +} +public type HRexMemberMatchRequestParametersParameter record {| + *r4:BackboneElement; + + r4:time valueTime?; + r4:TriggerDefinition valueTriggerDefinition?; + r4:Money valueMoney?; + r4:Signature valueSignature?; + r4:Extension[] modifierExtension?; + r4:uuid valueUuid?; + r4:Ratio valueRatio?; + r4:ParameterDefinition valueParameterDefinition?; + string id?; + r4:integer valueInteger?; + r4:unsignedInt valueUnsignedInt?; + r4:Quantity valueQuantity?; + r4:canonical valueCanonical?; + r4:Count valueCount?; + r4:id valueId?; + r4:Resource 'resource?; + r4:code valueCode?; + r4:Address valueAddress?; + r4:ContactPoint valueContactPoint?; + r4:Period valuePeriod?; + r4:SampledData valueSampledData?; + r4:Timing valueTiming?; + string name; + r4:instant valueInstant?; + r4:Age valueAge?; + r4:Dosage valueDosage?; + r4:base64Binary valueBase64Binary?; + boolean valueBoolean?; + r4:Coding valueCoding?; + r4:Extension[] extension?; + r4:Identifier valueIdentifier?; + r4:Expression valueExpression?; + r4:Reference valueReference?; + r4:Range valueRange?; + r4:uri valueUri?; + r4:Distance valueDistance?; + r4:urlType valueUrl?; + r4:ContactDetail valueContactDetail?; + r4:Meta valueMeta?; + r4:CodeableConcept valueCodeableConcept?; + r4:markdown valueMarkdown?; + r4:Attachment valueAttachment?; + r4:UsageContext valueUsageContext?; + r4:dateTime valueDateTime?; + r4:HumanName valueHumanName?; + r4:RelatedArtifact valueRelatedArtifact?; + decimal valueDecimal?; + r4:date valueDate?; + r4:oid valueOid?; + r4:Contributor valueContributor?; + string valueString?; + r4:positiveInt valuePositiveInt?; + r4:Duration valueDuration?; + r4:DataRequirement valueDataRequirement?; + r4:Annotation valueAnnotation?; +|}; + +# FHIR HRexMemberMatchRequestParametersParameterConsent datatype record. +# +# + valueTime - If the parameter is a data type. +# + valueTriggerDefinition - If the parameter is a data type. +# + valueMoney - If the parameter is a data type. +# + valueSignature - If the parameter is a data type. +# + modifierExtension - May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions. Modifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself). +# + valueUuid - If the parameter is a data type. +# + valueRatio - If the parameter is a data type. +# + valueParameterDefinition - If the parameter is a data type. +# + id - Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces. +# + valueInteger - If the parameter is a data type. +# + valueUnsignedInt - If the parameter is a data type. +# + valueQuantity - If the parameter is a data type. +# + valueCanonical - If the parameter is a data type. +# + valueCount - If the parameter is a data type. +# + valueId - If the parameter is a data type. +# + 'resource - This Consent profile conveys high-level computable information about a member's consent for information sharing, along with information that allows a party depending on the consent to follow up with the consent holder to access the 'original' consent, be it in paper form, audio recording or electronic for audit purposes. +# + valueCode - If the parameter is a data type. +# + valueAddress - If the parameter is a data type. +# + valueContactPoint - If the parameter is a data type. +# + valuePeriod - If the parameter is a data type. +# + valueSampledData - If the parameter is a data type. +# + valueTiming - If the parameter is a data type. +# + name - The name of the parameter (reference to the operation definition). +# + valueInstant - If the parameter is a data type. +# + valueAge - If the parameter is a data type. +# + valueDosage - If the parameter is a data type. +# + valueBase64Binary - If the parameter is a data type. +# + valueBoolean - If the parameter is a data type. +# + valueCoding - If the parameter is a data type. +# + extension - May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. +# + valueIdentifier - If the parameter is a data type. +# + valueExpression - If the parameter is a data type. +# + valueReference - If the parameter is a data type. +# + valueRange - If the parameter is a data type. +# + valueUri - If the parameter is a data type. +# + valueDistance - If the parameter is a data type. +# + valueUrl - If the parameter is a data type. +# + valueContactDetail - If the parameter is a data type. +# + valueMeta - If the parameter is a data type. +# + valueCodeableConcept - If the parameter is a data type. +# + valueMarkdown - If the parameter is a data type. +# + valueAttachment - If the parameter is a data type. +# + valueUsageContext - If the parameter is a data type. +# + valueDateTime - If the parameter is a data type. +# + valueHumanName - If the parameter is a data type. +# + valueRelatedArtifact - If the parameter is a data type. +# + valueDecimal - If the parameter is a data type. +# + valueDate - If the parameter is a data type. +# + valueOid - If the parameter is a data type. +# + valueContributor - If the parameter is a data type. +# + valueString - If the parameter is a data type. +# + valuePositiveInt - If the parameter is a data type. +# + valueDuration - If the parameter is a data type. +# + valueDataRequirement - If the parameter is a data type. +# + valueAnnotation - If the parameter is a data type. +@r4:DataTypeDefinition { + name: "HRexMemberMatchRequestParametersParameterConsent", + baseType: (), + elements: { + "valueTime": { + name: "valueTime", + dataType: r4:time, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueTriggerDefinition": { + name: "valueTriggerDefinition", + dataType: r4:TriggerDefinition, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueMoney": { + name: "valueMoney", + dataType: r4:Money, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueSignature": { + name: "valueSignature", + dataType: r4:Signature, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "modifierExtension": { + name: "modifierExtension", + dataType: r4:Extension, + min: 0, + max: int:MAX_VALUE, + isArray: true, + description: "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions. Modifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself).", + path: "Parameters.parameter.modifierExtension" + }, + "valueUuid": { + name: "valueUuid", + dataType: r4:uuid, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueRatio": { + name: "valueRatio", + dataType: r4:Ratio, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueParameterDefinition": { + name: "valueParameterDefinition", + dataType: r4:ParameterDefinition, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "id": { + name: "id", + dataType: string, + min: 0, + max: 1, + isArray: false, + description: "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces.", + path: "Parameters.parameter.id" + }, + "valueInteger": { + name: "valueInteger", + dataType: r4:integer, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueUnsignedInt": { + name: "valueUnsignedInt", + dataType: r4:unsignedInt, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueQuantity": { + name: "valueQuantity", + dataType: r4:Quantity, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueCanonical": { + name: "valueCanonical", + dataType: r4:canonical, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueCount": { + name: "valueCount", + dataType: r4:Count, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueId": { + name: "valueId", + dataType: r4:id, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "resource": { + name: "resource", + dataType: r4:Resource, + min: 1, + max: 1, + isArray: false, + description: "This Consent profile conveys high-level computable information about a member's consent for information sharing, along with information that allows a party depending on the consent to follow up with the consent holder to access the 'original' consent, be it in paper form, audio recording or electronic for audit purposes.", + path: "Parameters.parameter.resource" + }, + "valueCode": { + name: "valueCode", + dataType: r4:code, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueAddress": { + name: "valueAddress", + dataType: r4:Address, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueContactPoint": { + name: "valueContactPoint", + dataType: r4:ContactPoint, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valuePeriod": { + name: "valuePeriod", + dataType: r4:Period, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueSampledData": { + name: "valueSampledData", + dataType: r4:SampledData, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueTiming": { + name: "valueTiming", + dataType: r4:Timing, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "name": { + name: "name", + dataType: string, + min: 1, + max: 1, + isArray: false, + description: "The name of the parameter (reference to the operation definition).", + path: "Parameters.parameter.name" + }, + "valueInstant": { + name: "valueInstant", + dataType: r4:instant, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueAge": { + name: "valueAge", + dataType: r4:Age, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueDosage": { + name: "valueDosage", + dataType: r4:Dosage, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueBase64Binary": { + name: "valueBase64Binary", + dataType: r4:base64Binary, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueBoolean": { + name: "valueBoolean", + dataType: boolean, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueCoding": { + name: "valueCoding", + dataType: r4:Coding, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "extension": { + name: "extension", + dataType: r4:Extension, + min: 0, + max: int:MAX_VALUE, + isArray: true, + description: "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension.", + path: "Parameters.parameter.extension" + }, + "valueIdentifier": { + name: "valueIdentifier", + dataType: r4:Identifier, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueExpression": { + name: "valueExpression", + dataType: r4:Expression, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueReference": { + name: "valueReference", + dataType: r4:Reference, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueRange": { + name: "valueRange", + dataType: r4:Range, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueUri": { + name: "valueUri", + dataType: r4:uri, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueDistance": { + name: "valueDistance", + dataType: r4:Distance, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueUrl": { + name: "valueUrl", + dataType: r4:urlType, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueContactDetail": { + name: "valueContactDetail", + dataType: r4:ContactDetail, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueMeta": { + name: "valueMeta", + dataType: r4:Meta, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueCodeableConcept": { + name: "valueCodeableConcept", + dataType: r4:CodeableConcept, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueMarkdown": { + name: "valueMarkdown", + dataType: r4:markdown, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueAttachment": { + name: "valueAttachment", + dataType: r4:Attachment, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueUsageContext": { + name: "valueUsageContext", + dataType: r4:UsageContext, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueDateTime": { + name: "valueDateTime", + dataType: r4:dateTime, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueHumanName": { + name: "valueHumanName", + dataType: r4:HumanName, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueRelatedArtifact": { + name: "valueRelatedArtifact", + dataType: r4:RelatedArtifact, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueDecimal": { + name: "valueDecimal", + dataType: decimal, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueDate": { + name: "valueDate", + dataType: r4:date, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueOid": { + name: "valueOid", + dataType: r4:oid, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueContributor": { + name: "valueContributor", + dataType: r4:Contributor, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueString": { + name: "valueString", + dataType: string, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valuePositiveInt": { + name: "valuePositiveInt", + dataType: r4:positiveInt, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueDuration": { + name: "valueDuration", + dataType: r4:Duration, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueDataRequirement": { + name: "valueDataRequirement", + dataType: r4:DataRequirement, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueAnnotation": { + name: "valueAnnotation", + dataType: r4:Annotation, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + } + }, + serializers: { + 'xml: r4:complexDataTypeXMLSerializer, + 'json: r4:complexDataTypeJsonSerializer + } +} +public type HRexMemberMatchRequestParametersParameterConsent record {| + *HRexMemberMatchRequestParametersParameter; + + r4:time valueTime?; + r4:TriggerDefinition valueTriggerDefinition?; + r4:Money valueMoney?; + r4:Signature valueSignature?; + r4:Extension[] modifierExtension?; + r4:uuid valueUuid?; + r4:Ratio valueRatio?; + r4:ParameterDefinition valueParameterDefinition?; + string id?; + r4:integer valueInteger?; + r4:unsignedInt valueUnsignedInt?; + r4:Quantity valueQuantity?; + r4:canonical valueCanonical?; + r4:Count valueCount?; + r4:id valueId?; + r4:Resource 'resource; + r4:code valueCode?; + r4:Address valueAddress?; + r4:ContactPoint valueContactPoint?; + r4:Period valuePeriod?; + r4:SampledData valueSampledData?; + r4:Timing valueTiming?; + string name = "Consent"; + r4:instant valueInstant?; + r4:Age valueAge?; + r4:Dosage valueDosage?; + r4:base64Binary valueBase64Binary?; + boolean valueBoolean?; + r4:Coding valueCoding?; + r4:Extension[] extension?; + r4:Identifier valueIdentifier?; + r4:Expression valueExpression?; + r4:Reference valueReference?; + r4:Range valueRange?; + r4:uri valueUri?; + r4:Distance valueDistance?; + r4:urlType valueUrl?; + r4:ContactDetail valueContactDetail?; + r4:Meta valueMeta?; + r4:CodeableConcept valueCodeableConcept?; + r4:markdown valueMarkdown?; + r4:Attachment valueAttachment?; + r4:UsageContext valueUsageContext?; + r4:dateTime valueDateTime?; + r4:HumanName valueHumanName?; + r4:RelatedArtifact valueRelatedArtifact?; + decimal valueDecimal?; + r4:date valueDate?; + r4:oid valueOid?; + r4:Contributor valueContributor?; + string valueString?; + r4:positiveInt valuePositiveInt?; + r4:Duration valueDuration?; + r4:DataRequirement valueDataRequirement?; + r4:Annotation valueAnnotation?; +|}; + +# FHIR HRexMemberMatchRequestParametersParameterCoverageToMatch datatype record. +# +# + valueTime - If the parameter is a data type. +# + valueTriggerDefinition - If the parameter is a data type. +# + valueMoney - If the parameter is a data type. +# + valueSignature - If the parameter is a data type. +# + modifierExtension - May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions. Modifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself). +# + valueUuid - If the parameter is a data type. +# + valueRatio - If the parameter is a data type. +# + valueParameterDefinition - If the parameter is a data type. +# + id - Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces. +# + valueInteger - If the parameter is a data type. +# + valueUnsignedInt - If the parameter is a data type. +# + valueQuantity - If the parameter is a data type. +# + valueCanonical - If the parameter is a data type. +# + valueCount - If the parameter is a data type. +# + valueId - If the parameter is a data type. +# + 'resource - This is the Coverage profile which is used to provide insurance information for scheduling an appointment and/or registering a patient. +# + valueCode - If the parameter is a data type. +# + valueAddress - If the parameter is a data type. +# + valueContactPoint - If the parameter is a data type. +# + valuePeriod - If the parameter is a data type. +# + valueSampledData - If the parameter is a data type. +# + valueTiming - If the parameter is a data type. +# + name - The name of the parameter (reference to the operation definition). +# + valueInstant - If the parameter is a data type. +# + valueAge - If the parameter is a data type. +# + valueDosage - If the parameter is a data type. +# + valueBase64Binary - If the parameter is a data type. +# + valueBoolean - If the parameter is a data type. +# + valueCoding - If the parameter is a data type. +# + extension - May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. +# + valueIdentifier - If the parameter is a data type. +# + valueExpression - If the parameter is a data type. +# + valueReference - If the parameter is a data type. +# + valueRange - If the parameter is a data type. +# + valueUri - If the parameter is a data type. +# + valueDistance - If the parameter is a data type. +# + valueUrl - If the parameter is a data type. +# + valueContactDetail - If the parameter is a data type. +# + valueMeta - If the parameter is a data type. +# + valueCodeableConcept - If the parameter is a data type. +# + valueMarkdown - If the parameter is a data type. +# + valueAttachment - If the parameter is a data type. +# + valueUsageContext - If the parameter is a data type. +# + valueDateTime - If the parameter is a data type. +# + valueHumanName - If the parameter is a data type. +# + valueRelatedArtifact - If the parameter is a data type. +# + valueDecimal - If the parameter is a data type. +# + valueDate - If the parameter is a data type. +# + valueOid - If the parameter is a data type. +# + valueContributor - If the parameter is a data type. +# + valueString - If the parameter is a data type. +# + valuePositiveInt - If the parameter is a data type. +# + valueDuration - If the parameter is a data type. +# + valueDataRequirement - If the parameter is a data type. +# + valueAnnotation - If the parameter is a data type. +@r4:DataTypeDefinition { + name: "HRexMemberMatchRequestParametersParameterCoverageToMatch", + baseType: (), + elements: { + "valueTime": { + name: "valueTime", + dataType: r4:time, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueTriggerDefinition": { + name: "valueTriggerDefinition", + dataType: r4:TriggerDefinition, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueMoney": { + name: "valueMoney", + dataType: r4:Money, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueSignature": { + name: "valueSignature", + dataType: r4:Signature, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "modifierExtension": { + name: "modifierExtension", + dataType: r4:Extension, + min: 0, + max: int:MAX_VALUE, + isArray: true, + description: "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions. Modifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself).", + path: "Parameters.parameter.modifierExtension" + }, + "valueUuid": { + name: "valueUuid", + dataType: r4:uuid, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueRatio": { + name: "valueRatio", + dataType: r4:Ratio, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueParameterDefinition": { + name: "valueParameterDefinition", + dataType: r4:ParameterDefinition, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "id": { + name: "id", + dataType: string, + min: 0, + max: 1, + isArray: false, + description: "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces.", + path: "Parameters.parameter.id" + }, + "valueInteger": { + name: "valueInteger", + dataType: r4:integer, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueUnsignedInt": { + name: "valueUnsignedInt", + dataType: r4:unsignedInt, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueQuantity": { + name: "valueQuantity", + dataType: r4:Quantity, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueCanonical": { + name: "valueCanonical", + dataType: r4:canonical, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueCount": { + name: "valueCount", + dataType: r4:Count, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueId": { + name: "valueId", + dataType: r4:id, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "resource": { + name: "resource", + dataType: r4:Resource, + min: 1, + max: 1, + isArray: false, + description: "This is the Coverage profile which is used to provide insurance information for scheduling an appointment and/or registering a patient.", + path: "Parameters.parameter.resource" + }, + "valueCode": { + name: "valueCode", + dataType: r4:code, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueAddress": { + name: "valueAddress", + dataType: r4:Address, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueContactPoint": { + name: "valueContactPoint", + dataType: r4:ContactPoint, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valuePeriod": { + name: "valuePeriod", + dataType: r4:Period, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueSampledData": { + name: "valueSampledData", + dataType: r4:SampledData, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueTiming": { + name: "valueTiming", + dataType: r4:Timing, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "name": { + name: "name", + dataType: string, + min: 1, + max: 1, + isArray: false, + description: "The name of the parameter (reference to the operation definition).", + path: "Parameters.parameter.name" + }, + "valueInstant": { + name: "valueInstant", + dataType: r4:instant, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueAge": { + name: "valueAge", + dataType: r4:Age, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueDosage": { + name: "valueDosage", + dataType: r4:Dosage, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueBase64Binary": { + name: "valueBase64Binary", + dataType: r4:base64Binary, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueBoolean": { + name: "valueBoolean", + dataType: boolean, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueCoding": { + name: "valueCoding", + dataType: r4:Coding, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "extension": { + name: "extension", + dataType: r4:Extension, + min: 0, + max: int:MAX_VALUE, + isArray: true, + description: "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension.", + path: "Parameters.parameter.extension" + }, + "valueIdentifier": { + name: "valueIdentifier", + dataType: r4:Identifier, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueExpression": { + name: "valueExpression", + dataType: r4:Expression, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueReference": { + name: "valueReference", + dataType: r4:Reference, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueRange": { + name: "valueRange", + dataType: r4:Range, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueUri": { + name: "valueUri", + dataType: r4:uri, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueDistance": { + name: "valueDistance", + dataType: r4:Distance, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueUrl": { + name: "valueUrl", + dataType: r4:urlType, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueContactDetail": { + name: "valueContactDetail", + dataType: r4:ContactDetail, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueMeta": { + name: "valueMeta", + dataType: r4:Meta, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueCodeableConcept": { + name: "valueCodeableConcept", + dataType: r4:CodeableConcept, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueMarkdown": { + name: "valueMarkdown", + dataType: r4:markdown, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueAttachment": { + name: "valueAttachment", + dataType: r4:Attachment, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueUsageContext": { + name: "valueUsageContext", + dataType: r4:UsageContext, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueDateTime": { + name: "valueDateTime", + dataType: r4:dateTime, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueHumanName": { + name: "valueHumanName", + dataType: r4:HumanName, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueRelatedArtifact": { + name: "valueRelatedArtifact", + dataType: r4:RelatedArtifact, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueDecimal": { + name: "valueDecimal", + dataType: decimal, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueDate": { + name: "valueDate", + dataType: r4:date, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueOid": { + name: "valueOid", + dataType: r4:oid, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueContributor": { + name: "valueContributor", + dataType: r4:Contributor, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueString": { + name: "valueString", + dataType: string, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valuePositiveInt": { + name: "valuePositiveInt", + dataType: r4:positiveInt, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueDuration": { + name: "valueDuration", + dataType: r4:Duration, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueDataRequirement": { + name: "valueDataRequirement", + dataType: r4:DataRequirement, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueAnnotation": { + name: "valueAnnotation", + dataType: r4:Annotation, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + } + }, + serializers: { + 'xml: r4:complexDataTypeXMLSerializer, + 'json: r4:complexDataTypeJsonSerializer + } +} +public type HRexMemberMatchRequestParametersParameterCoverageToMatch record {| + *HRexMemberMatchRequestParametersParameter; + + r4:time valueTime?; + r4:TriggerDefinition valueTriggerDefinition?; + r4:Money valueMoney?; + r4:Signature valueSignature?; + r4:Extension[] modifierExtension?; + r4:uuid valueUuid?; + r4:Ratio valueRatio?; + r4:ParameterDefinition valueParameterDefinition?; + string id?; + r4:integer valueInteger?; + r4:unsignedInt valueUnsignedInt?; + r4:Quantity valueQuantity?; + r4:canonical valueCanonical?; + r4:Count valueCount?; + r4:id valueId?; + r4:Resource 'resource; + r4:code valueCode?; + r4:Address valueAddress?; + r4:ContactPoint valueContactPoint?; + r4:Period valuePeriod?; + r4:SampledData valueSampledData?; + r4:Timing valueTiming?; + string name = "CoverageToMatch"; + r4:instant valueInstant?; + r4:Age valueAge?; + r4:Dosage valueDosage?; + r4:base64Binary valueBase64Binary?; + boolean valueBoolean?; + r4:Coding valueCoding?; + r4:Extension[] extension?; + r4:Identifier valueIdentifier?; + r4:Expression valueExpression?; + r4:Reference valueReference?; + r4:Range valueRange?; + r4:uri valueUri?; + r4:Distance valueDistance?; + r4:urlType valueUrl?; + r4:ContactDetail valueContactDetail?; + r4:Meta valueMeta?; + r4:CodeableConcept valueCodeableConcept?; + r4:markdown valueMarkdown?; + r4:Attachment valueAttachment?; + r4:UsageContext valueUsageContext?; + r4:dateTime valueDateTime?; + r4:HumanName valueHumanName?; + r4:RelatedArtifact valueRelatedArtifact?; + decimal valueDecimal?; + r4:date valueDate?; + r4:oid valueOid?; + r4:Contributor valueContributor?; + string valueString?; + r4:positiveInt valuePositiveInt?; + r4:Duration valueDuration?; + r4:DataRequirement valueDataRequirement?; + r4:Annotation valueAnnotation?; +|}; + +# FHIR HRexMemberMatchRequestParametersParameterMemberPatient datatype record. +# +# + valueTime - If the parameter is a data type. +# + valueTriggerDefinition - If the parameter is a data type. +# + valueMoney - If the parameter is a data type. +# + valueSignature - If the parameter is a data type. +# + modifierExtension - May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions. Modifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself). +# + valueUuid - If the parameter is a data type. +# + valueRatio - If the parameter is a data type. +# + valueParameterDefinition - If the parameter is a data type. +# + id - Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces. +# + valueInteger - If the parameter is a data type. +# + valueUnsignedInt - If the parameter is a data type. +# + valueQuantity - If the parameter is a data type. +# + valueCanonical - If the parameter is a data type. +# + valueCount - If the parameter is a data type. +# + valueId - If the parameter is a data type. +# + 'resource - The US Core Patient Profile is based upon the core FHIR Patient Resource and designed to meet the applicable patient demographic data elements from the 2015 Edition Common Clinical Data Set. +# + valueCode - If the parameter is a data type. +# + valueAddress - If the parameter is a data type. +# + valueContactPoint - If the parameter is a data type. +# + valuePeriod - If the parameter is a data type. +# + valueSampledData - If the parameter is a data type. +# + valueTiming - If the parameter is a data type. +# + name - The name of the parameter (reference to the operation definition). +# + valueInstant - If the parameter is a data type. +# + valueAge - If the parameter is a data type. +# + valueDosage - If the parameter is a data type. +# + valueBase64Binary - If the parameter is a data type. +# + valueBoolean - If the parameter is a data type. +# + valueCoding - If the parameter is a data type. +# + extension - May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. +# + valueIdentifier - If the parameter is a data type. +# + valueExpression - If the parameter is a data type. +# + valueReference - If the parameter is a data type. +# + valueRange - If the parameter is a data type. +# + valueUri - If the parameter is a data type. +# + valueDistance - If the parameter is a data type. +# + valueUrl - If the parameter is a data type. +# + valueContactDetail - If the parameter is a data type. +# + valueMeta - If the parameter is a data type. +# + valueCodeableConcept - If the parameter is a data type. +# + valueMarkdown - If the parameter is a data type. +# + valueAttachment - If the parameter is a data type. +# + valueUsageContext - If the parameter is a data type. +# + valueDateTime - If the parameter is a data type. +# + valueHumanName - If the parameter is a data type. +# + valueRelatedArtifact - If the parameter is a data type. +# + valueDecimal - If the parameter is a data type. +# + valueDate - If the parameter is a data type. +# + valueOid - If the parameter is a data type. +# + valueContributor - If the parameter is a data type. +# + valueString - If the parameter is a data type. +# + valuePositiveInt - If the parameter is a data type. +# + valueDuration - If the parameter is a data type. +# + valueDataRequirement - If the parameter is a data type. +# + valueAnnotation - If the parameter is a data type. +@r4:DataTypeDefinition { + name: "HRexMemberMatchRequestParametersParameterMemberPatient", + baseType: (), + elements: { + "valueTime": { + name: "valueTime", + dataType: r4:time, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueTriggerDefinition": { + name: "valueTriggerDefinition", + dataType: r4:TriggerDefinition, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueMoney": { + name: "valueMoney", + dataType: r4:Money, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueSignature": { + name: "valueSignature", + dataType: r4:Signature, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "modifierExtension": { + name: "modifierExtension", + dataType: r4:Extension, + min: 0, + max: int:MAX_VALUE, + isArray: true, + description: "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions. Modifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself).", + path: "Parameters.parameter.modifierExtension" + }, + "valueUuid": { + name: "valueUuid", + dataType: r4:uuid, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueRatio": { + name: "valueRatio", + dataType: r4:Ratio, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueParameterDefinition": { + name: "valueParameterDefinition", + dataType: r4:ParameterDefinition, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "id": { + name: "id", + dataType: string, + min: 0, + max: 1, + isArray: false, + description: "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces.", + path: "Parameters.parameter.id" + }, + "valueInteger": { + name: "valueInteger", + dataType: r4:integer, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueUnsignedInt": { + name: "valueUnsignedInt", + dataType: r4:unsignedInt, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueQuantity": { + name: "valueQuantity", + dataType: r4:Quantity, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueCanonical": { + name: "valueCanonical", + dataType: r4:canonical, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueCount": { + name: "valueCount", + dataType: r4:Count, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueId": { + name: "valueId", + dataType: r4:id, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "resource": { + name: "resource", + dataType: r4:Resource, + min: 1, + max: 1, + isArray: false, + description: "The US Core Patient Profile is based upon the core FHIR Patient Resource and designed to meet the applicable patient demographic data elements from the 2015 Edition Common Clinical Data Set.", + path: "Parameters.parameter.resource" + }, + "valueCode": { + name: "valueCode", + dataType: r4:code, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueAddress": { + name: "valueAddress", + dataType: r4:Address, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueContactPoint": { + name: "valueContactPoint", + dataType: r4:ContactPoint, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valuePeriod": { + name: "valuePeriod", + dataType: r4:Period, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueSampledData": { + name: "valueSampledData", + dataType: r4:SampledData, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueTiming": { + name: "valueTiming", + dataType: r4:Timing, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "name": { + name: "name", + dataType: string, + min: 1, + max: 1, + isArray: false, + description: "The name of the parameter (reference to the operation definition).", + path: "Parameters.parameter.name" + }, + "valueInstant": { + name: "valueInstant", + dataType: r4:instant, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueAge": { + name: "valueAge", + dataType: r4:Age, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueDosage": { + name: "valueDosage", + dataType: r4:Dosage, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueBase64Binary": { + name: "valueBase64Binary", + dataType: r4:base64Binary, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueBoolean": { + name: "valueBoolean", + dataType: boolean, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueCoding": { + name: "valueCoding", + dataType: r4:Coding, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "extension": { + name: "extension", + dataType: r4:Extension, + min: 0, + max: int:MAX_VALUE, + isArray: true, + description: "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension.", + path: "Parameters.parameter.extension" + }, + "valueIdentifier": { + name: "valueIdentifier", + dataType: r4:Identifier, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueExpression": { + name: "valueExpression", + dataType: r4:Expression, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueReference": { + name: "valueReference", + dataType: r4:Reference, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueRange": { + name: "valueRange", + dataType: r4:Range, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueUri": { + name: "valueUri", + dataType: r4:uri, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueDistance": { + name: "valueDistance", + dataType: r4:Distance, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueUrl": { + name: "valueUrl", + dataType: r4:urlType, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueContactDetail": { + name: "valueContactDetail", + dataType: r4:ContactDetail, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueMeta": { + name: "valueMeta", + dataType: r4:Meta, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueCodeableConcept": { + name: "valueCodeableConcept", + dataType: r4:CodeableConcept, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueMarkdown": { + name: "valueMarkdown", + dataType: r4:markdown, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueAttachment": { + name: "valueAttachment", + dataType: r4:Attachment, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueUsageContext": { + name: "valueUsageContext", + dataType: r4:UsageContext, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueDateTime": { + name: "valueDateTime", + dataType: r4:dateTime, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueHumanName": { + name: "valueHumanName", + dataType: r4:HumanName, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueRelatedArtifact": { + name: "valueRelatedArtifact", + dataType: r4:RelatedArtifact, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueDecimal": { + name: "valueDecimal", + dataType: decimal, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueDate": { + name: "valueDate", + dataType: r4:date, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueOid": { + name: "valueOid", + dataType: r4:oid, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueContributor": { + name: "valueContributor", + dataType: r4:Contributor, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueString": { + name: "valueString", + dataType: string, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valuePositiveInt": { + name: "valuePositiveInt", + dataType: r4:positiveInt, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueDuration": { + name: "valueDuration", + dataType: r4:Duration, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueDataRequirement": { + name: "valueDataRequirement", + dataType: r4:DataRequirement, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueAnnotation": { + name: "valueAnnotation", + dataType: r4:Annotation, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + } + }, + serializers: { + 'xml: r4:complexDataTypeXMLSerializer, + 'json: r4:complexDataTypeJsonSerializer + } +} +public type HRexMemberMatchRequestParametersParameterMemberPatient record {| + *HRexMemberMatchRequestParametersParameter; + + r4:time valueTime?; + r4:TriggerDefinition valueTriggerDefinition?; + r4:Money valueMoney?; + r4:Signature valueSignature?; + r4:Extension[] modifierExtension?; + r4:uuid valueUuid?; + r4:Ratio valueRatio?; + r4:ParameterDefinition valueParameterDefinition?; + string id?; + r4:integer valueInteger?; + r4:unsignedInt valueUnsignedInt?; + r4:Quantity valueQuantity?; + r4:canonical valueCanonical?; + r4:Count valueCount?; + r4:id valueId?; + r4:Resource 'resource; + r4:code valueCode?; + r4:Address valueAddress?; + r4:ContactPoint valueContactPoint?; + r4:Period valuePeriod?; + r4:SampledData valueSampledData?; + r4:Timing valueTiming?; + string name = "MemberPatient"; + r4:instant valueInstant?; + r4:Age valueAge?; + r4:Dosage valueDosage?; + r4:base64Binary valueBase64Binary?; + boolean valueBoolean?; + r4:Coding valueCoding?; + r4:Extension[] extension?; + r4:Identifier valueIdentifier?; + r4:Expression valueExpression?; + r4:Reference valueReference?; + r4:Range valueRange?; + r4:uri valueUri?; + r4:Distance valueDistance?; + r4:urlType valueUrl?; + r4:ContactDetail valueContactDetail?; + r4:Meta valueMeta?; + r4:CodeableConcept valueCodeableConcept?; + r4:markdown valueMarkdown?; + r4:Attachment valueAttachment?; + r4:UsageContext valueUsageContext?; + r4:dateTime valueDateTime?; + r4:HumanName valueHumanName?; + r4:RelatedArtifact valueRelatedArtifact?; + decimal valueDecimal?; + r4:date valueDate?; + r4:oid valueOid?; + r4:Contributor valueContributor?; + string valueString?; + r4:positiveInt valuePositiveInt?; + r4:Duration valueDuration?; + r4:DataRequirement valueDataRequirement?; + r4:Annotation valueAnnotation?; +|}; + diff --git a/davincihrex100/resource_hrex_member_match_response_parameters.bal b/davincihrex100/resource_hrex_member_match_response_parameters.bal new file mode 100644 index 00000000..a67105da --- /dev/null +++ b/davincihrex100/resource_hrex_member_match_response_parameters.bal @@ -0,0 +1,970 @@ +// Copyright (c) 2023, WSO2 LLC. (http://www.wso2.com). + +// WSO2 LLC. licenses this file to you under the Apache License, +// Version 2.0 (the "License"); you may not use this file except +// in compliance with the License. +// You may obtain a copy of the License at + +// http://www.apache.org/licenses/LICENSE-2.0 + +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. + +// AUTO-GENERATED FILE. +// This file is auto-generated by Ballerina. + +import ballerina/constraint; +import ballerinax/health.fhir.r4; + +public const string PROFILE_BASE_HREXMEMBERMATCHRESPONSEPARAMETERS = "http://hl7.org/fhir/us/davinci-hrex/StructureDefinition/hrex-parameters-member-match-out"; +public const RESOURCE_NAME_HREXMEMBERMATCHRESPONSEPARAMETERS = "Parameters"; + +# FHIR HRexMemberMatchResponseParameters resource record. +# +# + resourceType - The type of the resource describes +# + meta - The metadata about the resource. This is content that is maintained by the infrastructure. Changes to the content might not always be associated with version changes to the resource. +# + 'parameter - A parameter passed to or received from the operation. +# * parameter Slicings +# 1) HRexMemberMatchResponseParametersParameterMemberIdentifier: Operation Parameter +# - min = 1 +# - max = 1 +# +# + implicitRules - A reference to a set of rules that were followed when the resource was constructed, and which must be understood when processing the content. Often, this is a reference to an implementation guide that defines the special rules along with other profiles etc. +# + language - The base language in which the resource is written. +# + id - The logical id of the resource, as used in the URL for the resource. Once assigned, this value never changes. +@r4:ResourceDefinition { + resourceType: "Parameters", + baseType: r4:DomainResource, + profile: "http://hl7.org/fhir/us/davinci-hrex/StructureDefinition/hrex-parameters-member-match-out", + elements: { + "meta" : { + name: "meta", + dataType: r4:Meta, + min: 0, + max: 1, + isArray: false, + path: "Parameters.meta" + }, + "parameter" : { + name: "parameter", + dataType: HRexMemberMatchResponseParametersParameter, + min: 1, + max: 1, + isArray: false, + path: "Parameters.parameter" + }, + "implicitRules" : { + name: "implicitRules", + dataType: r4:uri, + min: 0, + max: 1, + isArray: false, + path: "Parameters.implicitRules" + }, + "language" : { + name: "language", + dataType: r4:code, + min: 0, + max: 1, + isArray: false, + path: "Parameters.language", + valueSet: "http://hl7.org/fhir/ValueSet/languages" + }, + "id" : { + name: "id", + dataType: string, + min: 0, + max: 1, + isArray: false, + path: "Parameters.id" + } + }, + serializers: { + 'xml: r4:fhirResourceXMLSerializer, + 'json: r4:fhirResourceJsonSerializer + } +} +public type HRexMemberMatchResponseParameters record {| + *r4:DomainResource; + + RESOURCE_NAME_HREXMEMBERMATCHRESPONSEPARAMETERS resourceType = RESOURCE_NAME_HREXMEMBERMATCHRESPONSEPARAMETERS; + + r4:Meta meta?; + HRexMemberMatchResponseParametersParameter 'parameter; + r4:uri implicitRules?; + r4:code language?; + string id?; + r4:Element ...; +|}; + +# FHIR HRexMemberMatchResponseParametersParameter datatype record. +# +# + valueTime - If the parameter is a data type. +# + valueTriggerDefinition - If the parameter is a data type. +# + valueMoney - If the parameter is a data type. +# + valueSignature - If the parameter is a data type. +# + modifierExtension - May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions. Modifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself). +# + valueUuid - If the parameter is a data type. +# + valueRatio - If the parameter is a data type. +# + valueParameterDefinition - If the parameter is a data type. +# + id - Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces. +# + valueInteger - If the parameter is a data type. +# + valueUnsignedInt - If the parameter is a data type. +# + valueQuantity - If the parameter is a data type. +# + valueCanonical - If the parameter is a data type. +# + valueCount - If the parameter is a data type. +# + valueId - If the parameter is a data type. +# + 'resource - If the parameter is a whole resource. +# + valueCode - If the parameter is a data type. +# + valueAddress - If the parameter is a data type. +# + valueContactPoint - If the parameter is a data type. +# + valuePeriod - If the parameter is a data type. +# + valueSampledData - If the parameter is a data type. +# + valueTiming - If the parameter is a data type. +# + name - The name of the parameter (reference to the operation definition). +# + valueInstant - If the parameter is a data type. +# + valueAge - If the parameter is a data type. +# + valueDosage - If the parameter is a data type. +# + valueBase64Binary - If the parameter is a data type. +# + valueBoolean - If the parameter is a data type. +# + valueCoding - If the parameter is a data type. +# + extension - May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. +# + valueIdentifier - If the parameter is a data type. +# + valueExpression - If the parameter is a data type. +# + valueReference - If the parameter is a data type. +# + valueRange - If the parameter is a data type. +# + valueUri - If the parameter is a data type. +# + valueDistance - If the parameter is a data type. +# + valueUrl - If the parameter is a data type. +# + valueContactDetail - If the parameter is a data type. +# + valueMeta - If the parameter is a data type. +# + valueCodeableConcept - If the parameter is a data type. +# + valueMarkdown - If the parameter is a data type. +# + valueAttachment - If the parameter is a data type. +# + valueUsageContext - If the parameter is a data type. +# + valueDateTime - If the parameter is a data type. +# + valueHumanName - If the parameter is a data type. +# + valueRelatedArtifact - If the parameter is a data type. +# + valueDecimal - If the parameter is a data type. +# + valueDate - If the parameter is a data type. +# + valueOid - If the parameter is a data type. +# + valueContributor - If the parameter is a data type. +# + valueString - If the parameter is a data type. +# + valuePositiveInt - If the parameter is a data type. +# + valueDuration - If the parameter is a data type. +# + valueDataRequirement - If the parameter is a data type. +# + valueAnnotation - If the parameter is a data type. +@r4:DataTypeDefinition { + name: "HRexMemberMatchResponseParametersParameter", + baseType: (), + elements: { + "valueTime": { + name: "valueTime", + dataType: r4:time, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueTriggerDefinition": { + name: "valueTriggerDefinition", + dataType: r4:TriggerDefinition, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueMoney": { + name: "valueMoney", + dataType: r4:Money, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueSignature": { + name: "valueSignature", + dataType: r4:Signature, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "modifierExtension": { + name: "modifierExtension", + dataType: r4:Extension, + min: 0, + max: int:MAX_VALUE, + isArray: true, + description: "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions. Modifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself).", + path: "Parameters.parameter.modifierExtension" + }, + "valueUuid": { + name: "valueUuid", + dataType: r4:uuid, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueRatio": { + name: "valueRatio", + dataType: r4:Ratio, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueParameterDefinition": { + name: "valueParameterDefinition", + dataType: r4:ParameterDefinition, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "id": { + name: "id", + dataType: string, + min: 0, + max: 1, + isArray: false, + description: "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces.", + path: "Parameters.parameter.id" + }, + "valueInteger": { + name: "valueInteger", + dataType: r4:integer, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueUnsignedInt": { + name: "valueUnsignedInt", + dataType: r4:unsignedInt, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueQuantity": { + name: "valueQuantity", + dataType: r4:Quantity, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueCanonical": { + name: "valueCanonical", + dataType: r4:canonical, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueCount": { + name: "valueCount", + dataType: r4:Count, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueId": { + name: "valueId", + dataType: r4:id, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "resource": { + name: "resource", + dataType: r4:Resource, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a whole resource.", + path: "Parameters.parameter.resource" + }, + "valueCode": { + name: "valueCode", + dataType: r4:code, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueAddress": { + name: "valueAddress", + dataType: r4:Address, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueContactPoint": { + name: "valueContactPoint", + dataType: r4:ContactPoint, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valuePeriod": { + name: "valuePeriod", + dataType: r4:Period, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueSampledData": { + name: "valueSampledData", + dataType: r4:SampledData, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueTiming": { + name: "valueTiming", + dataType: r4:Timing, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "name": { + name: "name", + dataType: string, + min: 1, + max: 1, + isArray: false, + description: "The name of the parameter (reference to the operation definition).", + path: "Parameters.parameter.name" + }, + "valueInstant": { + name: "valueInstant", + dataType: r4:instant, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueAge": { + name: "valueAge", + dataType: r4:Age, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueDosage": { + name: "valueDosage", + dataType: r4:Dosage, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueBase64Binary": { + name: "valueBase64Binary", + dataType: r4:base64Binary, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueBoolean": { + name: "valueBoolean", + dataType: boolean, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueCoding": { + name: "valueCoding", + dataType: r4:Coding, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "extension": { + name: "extension", + dataType: r4:Extension, + min: 0, + max: int:MAX_VALUE, + isArray: true, + description: "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension.", + path: "Parameters.parameter.extension" + }, + "valueIdentifier": { + name: "valueIdentifier", + dataType: r4:Identifier, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueExpression": { + name: "valueExpression", + dataType: r4:Expression, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueReference": { + name: "valueReference", + dataType: r4:Reference, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueRange": { + name: "valueRange", + dataType: r4:Range, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueUri": { + name: "valueUri", + dataType: r4:uri, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueDistance": { + name: "valueDistance", + dataType: r4:Distance, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueUrl": { + name: "valueUrl", + dataType: r4:urlType, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueContactDetail": { + name: "valueContactDetail", + dataType: r4:ContactDetail, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueMeta": { + name: "valueMeta", + dataType: r4:Meta, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueCodeableConcept": { + name: "valueCodeableConcept", + dataType: r4:CodeableConcept, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueMarkdown": { + name: "valueMarkdown", + dataType: r4:markdown, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueAttachment": { + name: "valueAttachment", + dataType: r4:Attachment, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueUsageContext": { + name: "valueUsageContext", + dataType: r4:UsageContext, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueDateTime": { + name: "valueDateTime", + dataType: r4:dateTime, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueHumanName": { + name: "valueHumanName", + dataType: r4:HumanName, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueRelatedArtifact": { + name: "valueRelatedArtifact", + dataType: r4:RelatedArtifact, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueDecimal": { + name: "valueDecimal", + dataType: decimal, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueDate": { + name: "valueDate", + dataType: r4:date, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueOid": { + name: "valueOid", + dataType: r4:oid, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueContributor": { + name: "valueContributor", + dataType: r4:Contributor, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueString": { + name: "valueString", + dataType: string, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valuePositiveInt": { + name: "valuePositiveInt", + dataType: r4:positiveInt, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueDuration": { + name: "valueDuration", + dataType: r4:Duration, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueDataRequirement": { + name: "valueDataRequirement", + dataType: r4:DataRequirement, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "valueAnnotation": { + name: "valueAnnotation", + dataType: r4:Annotation, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + } + }, + serializers: { + 'xml: r4:complexDataTypeXMLSerializer, + 'json: r4:complexDataTypeJsonSerializer + } +} +public type HRexMemberMatchResponseParametersParameter record {| + *r4:BackboneElement; + + r4:time valueTime?; + r4:TriggerDefinition valueTriggerDefinition?; + r4:Money valueMoney?; + r4:Signature valueSignature?; + r4:Extension[] modifierExtension?; + r4:uuid valueUuid?; + r4:Ratio valueRatio?; + r4:ParameterDefinition valueParameterDefinition?; + string id?; + r4:integer valueInteger?; + r4:unsignedInt valueUnsignedInt?; + r4:Quantity valueQuantity?; + r4:canonical valueCanonical?; + r4:Count valueCount?; + r4:id valueId?; + r4:Resource 'resource?; + r4:code valueCode?; + r4:Address valueAddress?; + r4:ContactPoint valueContactPoint?; + r4:Period valuePeriod?; + r4:SampledData valueSampledData?; + r4:Timing valueTiming?; + string name; + r4:instant valueInstant?; + r4:Age valueAge?; + r4:Dosage valueDosage?; + r4:base64Binary valueBase64Binary?; + boolean valueBoolean?; + r4:Coding valueCoding?; + r4:Extension[] extension?; + r4:Identifier valueIdentifier?; + r4:Expression valueExpression?; + r4:Reference valueReference?; + r4:Range valueRange?; + r4:uri valueUri?; + r4:Distance valueDistance?; + r4:urlType valueUrl?; + r4:ContactDetail valueContactDetail?; + r4:Meta valueMeta?; + r4:CodeableConcept valueCodeableConcept?; + r4:markdown valueMarkdown?; + r4:Attachment valueAttachment?; + r4:UsageContext valueUsageContext?; + r4:dateTime valueDateTime?; + r4:HumanName valueHumanName?; + r4:RelatedArtifact valueRelatedArtifact?; + decimal valueDecimal?; + r4:date valueDate?; + r4:oid valueOid?; + r4:Contributor valueContributor?; + string valueString?; + r4:positiveInt valuePositiveInt?; + r4:Duration valueDuration?; + r4:DataRequirement valueDataRequirement?; + r4:Annotation valueAnnotation?; +|}; + +# HRexMemberMatchResponseParametersParameterValueUse enum +public enum HRexMemberMatchResponseParametersParameterValueUse { + CODE_USE_SECONDARY = "secondary", + CODE_USE_TEMP = "temp", + CODE_USE_USUAL = "usual", + CODE_USE_OLD = "old", + CODE_USE_OFFICIAL = "official" +} + +# FHIR HRexMemberMatchResponseParametersParameterValueTypeCoding datatype record. +# +# + system - The identification of the code system that defines the meaning of the symbol in the code. +# + code - A symbol in syntax defined by the system. The symbol may be a predefined code or an expression in a syntax defined by the coding system (e.g. post-coordination). +@r4:DataTypeDefinition { + name: "HRexMemberMatchResponseParametersParameterValueTypeCoding", + baseType: (), + elements: { + "system": { + name: "system", + dataType: r4:uri, + min: 1, + max: 1, + isArray: false, + description: "The identification of the code system that defines the meaning of the symbol in the code.", + path: "Parameters.parameter.value[x].type.coding.system" + }, + "code": { + name: "code", + dataType: r4:code, + min: 1, + max: 1, + isArray: false, + description: "A symbol in syntax defined by the system. The symbol may be a predefined code or an expression in a syntax defined by the coding system (e.g. post-coordination).", + path: "Parameters.parameter.value[x].type.coding.code" + } + }, + serializers: { + 'xml: r4:complexDataTypeXMLSerializer, + 'json: r4:complexDataTypeJsonSerializer + } +} +public type HRexMemberMatchResponseParametersParameterValueTypeCoding record {| + *r4:Coding; + + r4:uri system = "http://terminology.hl7.org/CodeSystem/v2-0203"; + r4:code code = "MB"; +|}; + +# FHIR HRexMemberMatchResponseParametersParameterValue datatype record. +# +# + period - Time period during which identifier is/was valid for use. +# + system - Establishes the namespace for the value - that is, a URL that describes a set values that are unique. +# + use - The purpose of this identifier. +# + assigner - Organization that issued/manages the identifier. +# + 'type - A coded type for the identifier that can be used to determine which identifier to use for a specific purpose. +# + value - The portion of the identifier typically relevant to the user and which is unique within the context of the system. +@r4:DataTypeDefinition { + name: "HRexMemberMatchResponseParametersParameterValue", + baseType: (), + elements: { + "period": { + name: "period", + dataType: r4:Period, + min: 0, + max: 1, + isArray: false, + description: "Time period during which identifier is/was valid for use.", + path: "Parameters.parameter.value[x].period" + }, + "system": { + name: "system", + dataType: r4:uri, + min: 0, + max: 1, + isArray: false, + description: "Establishes the namespace for the value - that is, a URL that describes a set values that are unique.", + path: "Parameters.parameter.value[x].system" + }, + "use": { + name: "use", + dataType: HRexMemberMatchResponseParametersParameterValueUse, + min: 0, + max: 1, + isArray: false, + description: "The purpose of this identifier.", + path: "Parameters.parameter.value[x].use" + }, + "assigner": { + name: "assigner", + dataType: r4:Reference, + min: 0, + max: 1, + isArray: false, + description: "Organization that issued/manages the identifier.", + path: "Parameters.parameter.value[x].assigner" + }, + "type": { + name: "type", + dataType: HRexMemberMatchResponseParametersParameterValueType, + min: 1, + max: 1, + isArray: false, + description: "A coded type for the identifier that can be used to determine which identifier to use for a specific purpose.", + path: "Parameters.parameter.value[x].type" + }, + "value": { + name: "value", + dataType: string, + min: 1, + max: 1, + isArray: false, + description: "The portion of the identifier typically relevant to the user and which is unique within the context of the system.", + path: "Parameters.parameter.value[x].value" + } + }, + serializers: { + 'xml: r4:complexDataTypeXMLSerializer, + 'json: r4:complexDataTypeJsonSerializer + } +} +public type HRexMemberMatchResponseParametersParameterValue record {| + *r4:Identifier; + + r4:Period period?; + r4:uri system?; + HRexMemberMatchResponseParametersParameterValueUse use?; + r4:Reference assigner?; + HRexMemberMatchResponseParametersParameterValueType 'type; + string value; +|}; + +# FHIR HRexMemberMatchResponseParametersParameterValueType datatype record. +# +# + coding - A reference to a code defined by a terminology system. +@r4:DataTypeDefinition { + name: "HRexMemberMatchResponseParametersParameterValueType", + baseType: (), + elements: { + "coding": { + name: "coding", + dataType: HRexMemberMatchResponseParametersParameterValueTypeCoding, + min: 1, + max: int:MAX_VALUE, + isArray: true, + description: "A reference to a code defined by a terminology system.", + path: "Parameters.parameter.value[x].type.coding" + } + }, + serializers: { + 'xml: r4:complexDataTypeXMLSerializer, + 'json: r4:complexDataTypeJsonSerializer + } +} +public type HRexMemberMatchResponseParametersParameterValueType record {| + *r4:CodeableConcept; + + @constraint:Array { + minLength: 1 + } + HRexMemberMatchResponseParametersParameterValueTypeCoding[] coding; +|}; + +# FHIR HRexMemberMatchResponseParametersParameterMemberIdentifier datatype record. +# +# + extension - May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. +# + valueIdentifier - If the parameter is a data type. +# + 'resource - If the parameter is a whole resource. +# + modifierExtension - May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions. Modifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself). +# + name - The name of the parameter (reference to the operation definition). +# + id - Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces. +@r4:DataTypeDefinition { + name: "HRexMemberMatchResponseParametersParameterMemberIdentifier", + baseType: (), + elements: { + "extension": { + name: "extension", + dataType: r4:Extension, + min: 0, + max: int:MAX_VALUE, + isArray: true, + description: "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension.", + path: "Parameters.parameter.extension" + }, + "valueIdentifier": { + name: "valueIdentifier", + dataType: HRexMemberMatchResponseParametersParameterValue, + min: 1, + max: 1, + isArray: false, + description: "If the parameter is a data type.", + path: "Parameters.parameter.value[x]" + }, + "resource": { + name: "resource", + dataType: r4:Resource, + min: 0, + max: 1, + isArray: false, + description: "If the parameter is a whole resource.", + path: "Parameters.parameter.resource" + }, + "modifierExtension": { + name: "modifierExtension", + dataType: r4:Extension, + min: 0, + max: int:MAX_VALUE, + isArray: true, + description: "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions. Modifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself).", + path: "Parameters.parameter.modifierExtension" + }, + "name": { + name: "name", + dataType: string, + min: 1, + max: 1, + isArray: false, + description: "The name of the parameter (reference to the operation definition).", + path: "Parameters.parameter.name" + }, + "id": { + name: "id", + dataType: string, + min: 0, + max: 1, + isArray: false, + description: "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces.", + path: "Parameters.parameter.id" + } + }, + serializers: { + 'xml: r4:complexDataTypeXMLSerializer, + 'json: r4:complexDataTypeJsonSerializer + } +} +public type HRexMemberMatchResponseParametersParameterMemberIdentifier record {| + *HRexMemberMatchResponseParametersParameter; + + r4:Extension[] extension?; + HRexMemberMatchResponseParametersParameterValue valueIdentifier; + r4:Resource 'resource?; + r4:Extension[] modifierExtension?; + string name = "MemberIdentifier"; + string id?; +|}; + diff --git a/davincihrex100/resource_hrex_organization.bal b/davincihrex100/resource_hrex_organization.bal new file mode 100644 index 00000000..b4cd581d --- /dev/null +++ b/davincihrex100/resource_hrex_organization.bal @@ -0,0 +1,471 @@ +// Copyright (c) 2023, WSO2 LLC. (http://www.wso2.com). + +// WSO2 LLC. licenses this file to you under the Apache License, +// Version 2.0 (the "License"); you may not use this file except +// in compliance with the License. +// You may obtain a copy of the License at + +// http://www.apache.org/licenses/LICENSE-2.0 + +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. + +// AUTO-GENERATED FILE. +// This file is auto-generated by Ballerina. + +import ballerina/constraint; +import ballerinax/health.fhir.r4; + +public const string PROFILE_BASE_HREXORGANIZATION = "http://hl7.org/fhir/us/davinci-hrex/StructureDefinition/hrex-organization"; +public const RESOURCE_NAME_HREXORGANIZATION = "Organization"; + +# FHIR HRexOrganization resource record. +# +# + resourceType - The type of the resource describes +# + identifier - Identifier for the organization that is used to identify the organization across multiple disparate systems. +# * identifier Slicings +# 1) HRexOrganizationIdentifierNPI: National Provider Identifier (NPI) +# - min = 0 +# - max = 1 +# +# 2) HRexOrganizationIdentifierCcn: Identifies this organization across multiple systems +# - min = 0 +# - max = 1 +# +# 3) HRexOrganizationIdentifierTin: Identifies this organization across multiple systems +# - min = 0 +# - max = 1 +# +# 4) HRexOrganizationIdentifierCLIA: Clinical Laboratory Improvement Amendments (CLIA) Number for laboratories +# - min = 0 +# - max = 1 +# +# + partOf - The organization of which this organization forms a part. +# + extension - May be used to represent additional information that is not part of the basic definition of the resource. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. +# + address - An address for the organization. +# + modifierExtension - May be used to represent additional information that is not part of the basic definition of the resource and that modifies the understanding of the element that contains it and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer is allowed to define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions. Modifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself). +# + active - Whether the organization's record is still in active use. +# + language - The base language in which the resource is written. +# + 'type - The kind(s) of organization that this is. +# + contained - These resources do not have an independent existence apart from the resource that contains them - they cannot be identified independently, and nor can they have their own independent transaction scope. +# + endpoint - Technical endpoints providing access to services operated for the organization. +# + meta - The metadata about the resource. This is content that is maintained by the infrastructure. Changes to the content might not always be associated with version changes to the resource. +# + contact - Contact for the organization for a certain purpose. +# + name - A name associated with the organization. +# + alias - A list of alternate names that the organization is known as, or was known as in the past. +# + implicitRules - A reference to a set of rules that were followed when the resource was constructed, and which must be understood when processing the content. Often, this is a reference to an implementation guide that defines the special rules along with other profiles etc. +# + telecom - A contact detail for the organization. +# + id - The logical id of the resource, as used in the URL for the resource. Once assigned, this value never changes. +# + text - A human-readable narrative that contains a summary of the resource and can be used to represent the content of the resource to a human. The narrative need not encode all the structured data, but is required to contain sufficient detail to make it 'clinically safe' for a human to just read the narrative. Resource definitions may define what content should be represented in the narrative to ensure clinical safety. +@r4:ResourceDefinition { + resourceType: "Organization", + baseType: r4:DomainResource, + profile: "http://hl7.org/fhir/us/davinci-hrex/StructureDefinition/hrex-organization", + elements: { + "identifier" : { + name: "identifier", + dataType: r4:Identifier, + min: 1, + max: int:MAX_VALUE, + isArray: true, + path: "Organization.identifier" + }, + "partOf" : { + name: "partOf", + dataType: r4:Reference, + min: 0, + max: 1, + isArray: false, + path: "Organization.partOf" + }, + "extension" : { + name: "extension", + dataType: r4:Extension, + min: 0, + max: int:MAX_VALUE, + isArray: true, + path: "Organization.extension" + }, + "address" : { + name: "address", + dataType: r4:Address, + min: 0, + max: int:MAX_VALUE, + isArray: true, + path: "Organization.address" + }, + "modifierExtension" : { + name: "modifierExtension", + dataType: r4:Extension, + min: 0, + max: int:MAX_VALUE, + isArray: true, + path: "Organization.modifierExtension" + }, + "active" : { + name: "active", + dataType: boolean, + min: 1, + max: 1, + isArray: false, + path: "Organization.active" + }, + "language" : { + name: "language", + dataType: r4:code, + min: 0, + max: 1, + isArray: false, + path: "Organization.language", + valueSet: "http://hl7.org/fhir/ValueSet/languages" + }, + "type" : { + name: "type", + dataType: r4:CodeableConcept, + min: 0, + max: int:MAX_VALUE, + isArray: true, + path: "Organization.type", + valueSet: "http://hl7.org/fhir/ValueSet/organization-type" + }, + "contained" : { + name: "contained", + dataType: r4:Resource, + min: 0, + max: int:MAX_VALUE, + isArray: true, + path: "Organization.contained" + }, + "endpoint" : { + name: "endpoint", + dataType: r4:Reference, + min: 0, + max: int:MAX_VALUE, + isArray: true, + path: "Organization.endpoint" + }, + "meta" : { + name: "meta", + dataType: r4:Meta, + min: 0, + max: 1, + isArray: false, + path: "Organization.meta" + }, + "contact" : { + name: "contact", + dataType: HRexOrganizationContact, + min: 0, + max: int:MAX_VALUE, + isArray: true, + path: "Organization.contact" + }, + "name" : { + name: "name", + dataType: string, + min: 1, + max: 1, + isArray: false, + path: "Organization.name" + }, + "alias" : { + name: "alias", + dataType: string, + min: 0, + max: int:MAX_VALUE, + isArray: true, + path: "Organization.alias" + }, + "implicitRules" : { + name: "implicitRules", + dataType: r4:uri, + min: 0, + max: 1, + isArray: false, + path: "Organization.implicitRules" + }, + "telecom" : { + name: "telecom", + dataType: r4:ContactPoint, + min: 0, + max: int:MAX_VALUE, + isArray: true, + path: "Organization.telecom" + }, + "id" : { + name: "id", + dataType: string, + min: 0, + max: 1, + isArray: false, + path: "Organization.id" + }, + "text" : { + name: "text", + dataType: r4:Narrative, + min: 0, + max: 1, + isArray: false, + path: "Organization.text" + } + }, + serializers: { + 'xml: r4:fhirResourceXMLSerializer, + 'json: r4:fhirResourceJsonSerializer + } +} +public type HRexOrganization record {| + *r4:DomainResource; + + RESOURCE_NAME_HREXORGANIZATION resourceType = RESOURCE_NAME_HREXORGANIZATION; + + @constraint:Array { + minLength: 1 + } + r4:Identifier[] identifier; + r4:Reference partOf?; + r4:Extension[] extension?; + r4:Address[] address?; + r4:Extension[] modifierExtension?; + boolean active; + r4:code language?; + r4:CodeableConcept[] 'type?; + r4:Resource[] contained?; + r4:Reference[] endpoint?; + r4:Meta meta?; + HRexOrganizationContact[] contact?; + string name; + string[] alias?; + r4:uri implicitRules?; + r4:ContactPoint[] telecom?; + string id?; + r4:Narrative text?; + r4:Element ...; +|}; + +# FHIR HRexOrganizationIdentifierCcn datatype record. +# +# + system - Establishes the namespace for the value - that is, a URL that describes a set values that are unique. +@r4:DataTypeDefinition { + name: "HRexOrganizationIdentifierCcn", + baseType: (), + elements: { + "system": { + name: "system", + dataType: r4:uri, + min: 1, + max: 1, + isArray: false, + description: "Establishes the namespace for the value - that is, a URL that describes a set values that are unique.", + path: "Organization.identifier.system" + } + }, + serializers: { + 'xml: r4:complexDataTypeXMLSerializer, + 'json: r4:complexDataTypeJsonSerializer + } +} +public type HRexOrganizationIdentifierCcn record {| + *r4:Identifier; + + r4:uri system = "http://terminology.hl7.org/NamingSystem/CMSCertificationNumber"; +|}; + +# HRexOrganizationAddressType enum +public enum HRexOrganizationAddressType { + CODE_TYPE_POSTAL = "postal", + CODE_TYPE_PHYSICAL = "physical", + CODE_TYPE_BOTH = "both" +} + +# FHIR HRexOrganizationContact datatype record. +# +# + extension - May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. +# + address - Visiting or postal addresses for the contact. +# + purpose - Indicates a purpose for which the contact can be reached. +# + modifierExtension - May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions. Modifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself). +# + name - A name associated with the contact. +# + telecom - A contact detail (e.g. a telephone number or an email address) by which the party may be contacted. +# + id - Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces. +@r4:DataTypeDefinition { + name: "HRexOrganizationContact", + baseType: (), + elements: { + "extension": { + name: "extension", + dataType: r4:Extension, + min: 0, + max: int:MAX_VALUE, + isArray: true, + description: "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension.", + path: "Organization.contact.extension" + }, + "address": { + name: "address", + dataType: r4:Address, + min: 0, + max: 1, + isArray: false, + description: "Visiting or postal addresses for the contact.", + path: "Organization.contact.address" + }, + "purpose": { + name: "purpose", + dataType: r4:CodeableConcept, + min: 0, + max: 1, + isArray: false, + description: "Indicates a purpose for which the contact can be reached.", + path: "Organization.contact.purpose" + }, + "modifierExtension": { + name: "modifierExtension", + dataType: r4:Extension, + min: 0, + max: int:MAX_VALUE, + isArray: true, + description: "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions. Modifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself).", + path: "Organization.contact.modifierExtension" + }, + "name": { + name: "name", + dataType: r4:HumanName, + min: 0, + max: 1, + isArray: false, + description: "A name associated with the contact.", + path: "Organization.contact.name" + }, + "telecom": { + name: "telecom", + dataType: r4:ContactPoint, + min: 0, + max: int:MAX_VALUE, + isArray: true, + description: "A contact detail (e.g. a telephone number or an email address) by which the party may be contacted.", + path: "Organization.contact.telecom" + }, + "id": { + name: "id", + dataType: string, + min: 0, + max: 1, + isArray: false, + description: "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces.", + path: "Organization.contact.id" + } + }, + serializers: { + 'xml: r4:complexDataTypeXMLSerializer, + 'json: r4:complexDataTypeJsonSerializer + } +} +public type HRexOrganizationContact record {| + *r4:BackboneElement; + + r4:Extension[] extension?; + r4:Address address?; + r4:CodeableConcept purpose?; + r4:Extension[] modifierExtension?; + r4:HumanName name?; + r4:ContactPoint[] telecom?; + string id?; +|}; + +# FHIR HRexOrganizationIdentifierTin datatype record. +# +# + system - Establishes the namespace for the value - that is, a URL that describes a set values that are unique. +@r4:DataTypeDefinition { + name: "HRexOrganizationIdentifierTin", + baseType: (), + elements: { + "system": { + name: "system", + dataType: r4:uri, + min: 1, + max: 1, + isArray: false, + description: "Establishes the namespace for the value - that is, a URL that describes a set values that are unique.", + path: "Organization.identifier.system" + } + }, + serializers: { + 'xml: r4:complexDataTypeXMLSerializer, + 'json: r4:complexDataTypeJsonSerializer + } +} +public type HRexOrganizationIdentifierTin record {| + *r4:Identifier; + + r4:uri system = "urn:oid:2.16.840.1.113883.4.4"; +|}; + +# FHIR HRexOrganizationIdentifierCLIA datatype record. +# +# + system - Establishes the namespace for the value - that is, a URL that describes a set values that are unique. +@r4:DataTypeDefinition { + name: "HRexOrganizationIdentifierCLIA", + baseType: (), + elements: { + "system": { + name: "system", + dataType: r4:uri, + min: 1, + max: 1, + isArray: false, + description: "Establishes the namespace for the value - that is, a URL that describes a set values that are unique.", + path: "Organization.identifier.system" + } + }, + serializers: { + 'xml: r4:complexDataTypeXMLSerializer, + 'json: r4:complexDataTypeJsonSerializer + } +} +public type HRexOrganizationIdentifierCLIA record {| + *r4:Identifier; + + r4:uri system = "urn:oid:2.16.840.1.113883.4.7"; +|}; + +# FHIR HRexOrganizationIdentifierNPI datatype record. +# +# + system - Establishes the namespace for the value - that is, a URL that describes a set values that are unique. +@r4:DataTypeDefinition { + name: "HRexOrganizationIdentifierNPI", + baseType: (), + elements: { + "system": { + name: "system", + dataType: r4:uri, + min: 1, + max: 1, + isArray: false, + description: "Establishes the namespace for the value - that is, a URL that describes a set values that are unique.", + path: "Organization.identifier.system" + } + }, + serializers: { + 'xml: r4:complexDataTypeXMLSerializer, + 'json: r4:complexDataTypeJsonSerializer + } +} +public type HRexOrganizationIdentifierNPI record {| + *r4:Identifier; + + r4:uri system = "http://hl7.org/fhir/sid/us-npi"; +|}; + +# HRexOrganizationAddressUse enum +public enum HRexOrganizationAddressUse { + CODE_USE_TEMP = "temp", + CODE_USE_WORK = "work", + CODE_USE_OLD = "old", + CODE_USE_HOME = "home", + CODE_USE_BILLING = "billing" +} + diff --git a/davincihrex100/resource_hrex_patient_demographics.bal b/davincihrex100/resource_hrex_patient_demographics.bal new file mode 100644 index 00000000..a1470453 --- /dev/null +++ b/davincihrex100/resource_hrex_patient_demographics.bal @@ -0,0 +1,1011 @@ +// Copyright (c) 2023, WSO2 LLC. (http://www.wso2.com). + +// WSO2 LLC. licenses this file to you under the Apache License, +// Version 2.0 (the "License"); you may not use this file except +// in compliance with the License. +// You may obtain a copy of the License at + +// http://www.apache.org/licenses/LICENSE-2.0 + +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. + +// AUTO-GENERATED FILE. +// This file is auto-generated by Ballerina. + +import ballerina/constraint; +import ballerinax/health.fhir.r4; + +public const string PROFILE_BASE_HREXPATIENTDEMOGRAPHICS = "http://hl7.org/fhir/us/davinci-hrex/StructureDefinition/hrex-patient-demographics"; +public const RESOURCE_NAME_HREXPATIENTDEMOGRAPHICS = "Patient"; + +# FHIR HRexPatientDemographics resource record. +# +# + resourceType - The type of the resource describes +# + extension - An Extension +# * extension Slicings +# 1) Extension: Extension +# - min = 0 +# - max = 1 +# +# + gender - Administrative Gender - the gender that the patient is considered to have for administration and record keeping purposes. +# + modifierExtension - May be used to represent additional information that is not part of the basic definition of the resource and that modifies the understanding of the element that contains it and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer is allowed to define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions. Modifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself). +# + link - Link to another patient resource that concerns the same actual patient. +# + language - The base language in which the resource is written. +# + contact - A contact party (e.g. guardian, partner, friend) for the patient. +# + deceasedDateTime - Indicates if the individual is deceased or not. +# + generalPractitioner - Patient's nominated care provider. +# + telecom - A contact detail (e.g. a telephone number or an email address) by which the individual may be contacted. +# + id - The logical id of the resource, as used in the URL for the resource. Once assigned, this value never changes. +# + text - A human-readable narrative that contains a summary of the resource and can be used to represent the content of the resource to a human. The narrative need not encode all the structured data, but is required to contain sufficient detail to make it 'clinically safe' for a human to just read the narrative. Resource definitions may define what content should be represented in the narrative to ensure clinical safety. +# + communication - A language which may be used to communicate with the patient about his or her health. +# + identifier - An identifier for this patient. +# * identifier Slicings +# 1) HRexPatientDemographicsIdentifierUmb: Unique Member Identifier. This is required to be present for the 'new' coverage and be absent for the 'old' coverage. +# - min = 0 +# - max = 1 +# +# + address - An address for the individual. +# + multipleBirthBoolean - Indicates whether the patient is part of a multiple (boolean) or indicates the actual birth order (integer). +# + active - Whether this patient record is in active use. Many systems use this property to mark as non-current patients, such as those that have not been seen for a period of time based on an organization's business rules. It is often used to filter patient lists to exclude inactive patients Deceased patients may also be marked as inactive for the same reasons, but may be active for some time after death. +# + photo - Image of the patient. +# + birthDate - The date of birth for the individual. +# + contained - These resources do not have an independent existence apart from the resource that contains them - they cannot be identified independently, and nor can they have their own independent transaction scope. +# + deceasedBoolean - Indicates if the individual is deceased or not. +# + managingOrganization - Organization that is the custodian of the patient record. +# + meta - The metadata about the resource. This is content that is maintained by the infrastructure. Changes to the content might not always be associated with version changes to the resource. +# + multipleBirthInteger - Indicates whether the patient is part of a multiple (boolean) or indicates the actual birth order (integer). +# + name - A name associated with the individual. +# + implicitRules - A reference to a set of rules that were followed when the resource was constructed, and which must be understood when processing the content. Often, this is a reference to an implementation guide that defines the special rules along with other profiles etc. +# + maritalStatus - This field contains a patient's most recent marital (civil) status. +@r4:ResourceDefinition { + resourceType: "Patient", + baseType: r4:DomainResource, + profile: "http://hl7.org/fhir/us/davinci-hrex/StructureDefinition/hrex-patient-demographics", + elements: { + "extension" : { + name: "extension", + dataType: r4:Extension, + min: 0, + max: int:MAX_VALUE, + isArray: true, + path: "Patient.extension" + }, + "gender" : { + name: "gender", + dataType: HRexPatientDemographicsGender, + min: 0, + max: 1, + isArray: false, + path: "Patient.gender", + valueSet: "http://hl7.org/fhir/ValueSet/administrative-gender" + }, + "modifierExtension" : { + name: "modifierExtension", + dataType: r4:Extension, + min: 0, + max: int:MAX_VALUE, + isArray: true, + path: "Patient.modifierExtension" + }, + "link" : { + name: "link", + dataType: HRexPatientDemographicsLink, + min: 0, + max: int:MAX_VALUE, + isArray: true, + path: "Patient.link" + }, + "language" : { + name: "language", + dataType: r4:code, + min: 0, + max: 1, + isArray: false, + path: "Patient.language", + valueSet: "http://hl7.org/fhir/ValueSet/languages" + }, + "contact" : { + name: "contact", + dataType: HRexPatientDemographicsContact, + min: 0, + max: int:MAX_VALUE, + isArray: true, + path: "Patient.contact" + }, + "deceasedDateTime" : { + name: "deceasedDateTime", + dataType: r4:dateTime, + min: 0, + max: 1, + isArray: false, + path: "Patient.deceased[x]" + }, + "generalPractitioner" : { + name: "generalPractitioner", + dataType: r4:Reference, + min: 0, + max: int:MAX_VALUE, + isArray: true, + path: "Patient.generalPractitioner" + }, + "telecom" : { + name: "telecom", + dataType: r4:ContactPoint, + min: 0, + max: int:MAX_VALUE, + isArray: true, + path: "Patient.telecom" + }, + "id" : { + name: "id", + dataType: string, + min: 0, + max: 1, + isArray: false, + path: "Patient.id" + }, + "text" : { + name: "text", + dataType: r4:Narrative, + min: 0, + max: 1, + isArray: false, + path: "Patient.text" + }, + "communication" : { + name: "communication", + dataType: HRexPatientDemographicsCommunication, + min: 0, + max: int:MAX_VALUE, + isArray: true, + path: "Patient.communication" + }, + "identifier" : { + name: "identifier", + dataType: r4:Identifier, + min: 0, + max: int:MAX_VALUE, + isArray: true, + path: "Patient.identifier" + }, + "address" : { + name: "address", + dataType: HRexPatientDemographicsAddress, + min: 0, + max: int:MAX_VALUE, + isArray: true, + path: "Patient.address" + }, + "multipleBirthBoolean" : { + name: "multipleBirthBoolean", + dataType: boolean, + min: 0, + max: 1, + isArray: false, + path: "Patient.multipleBirth[x]" + }, + "active" : { + name: "active", + dataType: boolean, + min: 0, + max: 1, + isArray: false, + path: "Patient.active" + }, + "photo" : { + name: "photo", + dataType: r4:Attachment, + min: 0, + max: int:MAX_VALUE, + isArray: true, + path: "Patient.photo" + }, + "birthDate" : { + name: "birthDate", + dataType: r4:date, + min: 1, + max: 1, + isArray: false, + path: "Patient.birthDate" + }, + "contained" : { + name: "contained", + dataType: r4:Resource, + min: 0, + max: int:MAX_VALUE, + isArray: true, + path: "Patient.contained" + }, + "deceasedBoolean" : { + name: "deceasedBoolean", + dataType: boolean, + min: 0, + max: 1, + isArray: false, + path: "Patient.deceased[x]" + }, + "managingOrganization" : { + name: "managingOrganization", + dataType: r4:Reference, + min: 0, + max: 1, + isArray: false, + path: "Patient.managingOrganization" + }, + "meta" : { + name: "meta", + dataType: r4:Meta, + min: 0, + max: 1, + isArray: false, + path: "Patient.meta" + }, + "multipleBirthInteger" : { + name: "multipleBirthInteger", + dataType: r4:integer, + min: 0, + max: 1, + isArray: false, + path: "Patient.multipleBirth[x]" + }, + "name" : { + name: "name", + dataType: HRexPatientDemographicsName, + min: 1, + max: int:MAX_VALUE, + isArray: true, + path: "Patient.name" + }, + "implicitRules" : { + name: "implicitRules", + dataType: r4:uri, + min: 0, + max: 1, + isArray: false, + path: "Patient.implicitRules" + }, + "maritalStatus" : { + name: "maritalStatus", + dataType: r4:CodeableConcept, + min: 0, + max: 1, + isArray: false, + path: "Patient.maritalStatus", + valueSet: "http://hl7.org/fhir/ValueSet/marital-status" + } + }, + serializers: { + 'xml: r4:fhirResourceXMLSerializer, + 'json: r4:fhirResourceJsonSerializer + } +} +public type HRexPatientDemographics record {| + *r4:DomainResource; + + RESOURCE_NAME_HREXPATIENTDEMOGRAPHICS resourceType = RESOURCE_NAME_HREXPATIENTDEMOGRAPHICS; + + r4:Extension[] extension?; + HRexPatientDemographicsGender gender?; + r4:Extension[] modifierExtension?; + HRexPatientDemographicsLink[] link?; + r4:code language?; + HRexPatientDemographicsContact[] contact?; + r4:dateTime deceasedDateTime?; + r4:Reference[] generalPractitioner?; + r4:ContactPoint[] telecom?; + string id?; + r4:Narrative text?; + HRexPatientDemographicsCommunication[] communication?; + r4:Identifier[] identifier?; + HRexPatientDemographicsAddress[] address?; + boolean multipleBirthBoolean?; + boolean active?; + r4:Attachment[] photo?; + r4:date birthDate; + r4:Resource[] contained?; + boolean deceasedBoolean?; + r4:Reference managingOrganization?; + r4:Meta meta?; + r4:integer multipleBirthInteger?; + @constraint:Array { + minLength: 1 + } + HRexPatientDemographicsName[] name; + r4:uri implicitRules?; + r4:CodeableConcept maritalStatus?; + r4:Element ...; +|}; + +# HRexPatientDemographicsContactGender enum +public enum HRexPatientDemographicsContactGender { + CODE_GENDER_OTHER = "other", + CODE_GENDER_FEMALE = "female", + CODE_GENDER_MALE = "male", + CODE_GENDER_UNKNOWN = "unknown" +} + +# FHIR HRexPatientDemographicsName datatype record. +# +# + given - Given name. +# + extension - May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. +# + period - Indicates the period of time when this name was valid for the named person. +# + prefix - Part of the name that is acquired as a title due to academic, legal, employment or nobility status, etc. and that appears at the start of the name. +# + use - Identifies the purpose for this name. +# + id - Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces. +# + text - Specifies the entire name as it should be displayed e.g. on an application UI. This may be provided instead of or as well as the specific parts. +# + family - The part of a name that links to the genealogy. In some cultures (e.g. Eritrea) the family name of a son is the first name of his father. +# + suffix - Part of the name that is acquired as a title due to academic, legal, employment or nobility status, etc. and that appears at the end of the name. +@r4:DataTypeDefinition { + name: "HRexPatientDemographicsName", + baseType: (), + elements: { + "given": { + name: "given", + dataType: string, + min: 1, + max: int:MAX_VALUE, + isArray: true, + description: "Given name.", + path: "Patient.name.given" + }, + "extension": { + name: "extension", + dataType: r4:Extension, + min: 0, + max: int:MAX_VALUE, + isArray: true, + description: "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension.", + path: "Patient.name.extension" + }, + "period": { + name: "period", + dataType: r4:Period, + min: 0, + max: 1, + isArray: false, + description: "Indicates the period of time when this name was valid for the named person.", + path: "Patient.name.period" + }, + "prefix": { + name: "prefix", + dataType: string, + min: 0, + max: int:MAX_VALUE, + isArray: true, + description: "Part of the name that is acquired as a title due to academic, legal, employment or nobility status, etc. and that appears at the start of the name.", + path: "Patient.name.prefix" + }, + "use": { + name: "use", + dataType: HRexPatientDemographicsNameUse, + min: 0, + max: 1, + isArray: false, + description: "Identifies the purpose for this name.", + path: "Patient.name.use" + }, + "id": { + name: "id", + dataType: string, + min: 0, + max: 1, + isArray: false, + description: "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces.", + path: "Patient.name.id" + }, + "text": { + name: "text", + dataType: string, + min: 0, + max: 1, + isArray: false, + description: "Specifies the entire name as it should be displayed e.g. on an application UI. This may be provided instead of or as well as the specific parts.", + path: "Patient.name.text" + }, + "family": { + name: "family", + dataType: string, + min: 1, + max: 1, + isArray: false, + description: "The part of a name that links to the genealogy. In some cultures (e.g. Eritrea) the family name of a son is the first name of his father.", + path: "Patient.name.family" + }, + "suffix": { + name: "suffix", + dataType: string, + min: 0, + max: int:MAX_VALUE, + isArray: true, + description: "Part of the name that is acquired as a title due to academic, legal, employment or nobility status, etc. and that appears at the end of the name.", + path: "Patient.name.suffix" + } + }, + serializers: { + 'xml: r4:complexDataTypeXMLSerializer, + 'json: r4:complexDataTypeJsonSerializer + } +} +public type HRexPatientDemographicsName record {| + *r4:HumanName; + + @constraint:Array { + minLength: 1 + } + string[] given; + r4:Extension[] extension?; + r4:Period period?; + string[] prefix?; + HRexPatientDemographicsNameUse use?; + string id?; + string text?; + string family; + string[] suffix?; +|}; + +# HRexPatientDemographicsAddressUse enum +public enum HRexPatientDemographicsAddressUse { + CODE_USE_TEMP = "temp", + CODE_USE_WORK = "work", + CODE_USE_OLD = "old", + CODE_USE_HOME = "home", + CODE_USE_BILLING = "billing" +} + +# HRexPatientDemographicsNameUse enum +public enum HRexPatientDemographicsNameUse { + CODE_USE_MAIDEN = "maiden", + CODE_USE_TEMP = "temp", + CODE_USE_USUAL = "usual", + CODE_USE_OLD = "old", + CODE_USE_NICKNAME = "nickname", + CODE_USE_OFFICIAL = "official", + CODE_USE_ANONYMOUS = "anonymous" +} + +# FHIR HRexPatientDemographicsAddress datatype record. +# +# + country - Country - a nation as commonly understood or generally accepted. +# + extension - May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. +# + period - Time period when address was/is in use. +# + city - The name of the city, town, suburb, village or other community or delivery center. +# + line - This component contains the house number, apartment number, street name, street direction, P.O. Box number, delivery hints, and similar address information. +# + use - The purpose of this address. +# + district - The name of the administrative area (county). +# + postalCode - A postal code designating a region defined by the postal service. +# + id - Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces. +# + state - Sub-unit of a country with limited sovereignty in a federally organized country. A code may be used if codes are in common use (e.g. US 2 letter state codes). +# + text - Specifies the entire address as it should be displayed e.g. on a postal label. This may be provided instead of or as well as the specific parts. +# + 'type - Distinguishes between physical addresses (those you can visit) and mailing addresses (e.g. PO Boxes and care-of addresses). Most addresses are both. +@r4:DataTypeDefinition { + name: "HRexPatientDemographicsAddress", + baseType: (), + elements: { + "country": { + name: "country", + dataType: string, + min: 0, + max: 1, + isArray: false, + description: "Country - a nation as commonly understood or generally accepted.", + path: "Patient.address.country" + }, + "extension": { + name: "extension", + dataType: r4:Extension, + min: 0, + max: int:MAX_VALUE, + isArray: true, + description: "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension.", + path: "Patient.address.extension" + }, + "period": { + name: "period", + dataType: r4:Period, + min: 0, + max: 1, + isArray: false, + description: "Time period when address was/is in use.", + path: "Patient.address.period" + }, + "city": { + name: "city", + dataType: string, + min: 0, + max: 1, + isArray: false, + description: "The name of the city, town, suburb, village or other community or delivery center.", + path: "Patient.address.city" + }, + "line": { + name: "line", + dataType: string, + min: 0, + max: int:MAX_VALUE, + isArray: true, + description: "This component contains the house number, apartment number, street name, street direction, P.O. Box number, delivery hints, and similar address information.", + path: "Patient.address.line" + }, + "use": { + name: "use", + dataType: HRexPatientDemographicsAddressUse, + min: 0, + max: 1, + isArray: false, + description: "The purpose of this address.", + path: "Patient.address.use" + }, + "district": { + name: "district", + dataType: string, + min: 0, + max: 1, + isArray: false, + description: "The name of the administrative area (county).", + path: "Patient.address.district" + }, + "postalCode": { + name: "postalCode", + dataType: string, + min: 0, + max: 1, + isArray: false, + description: "A postal code designating a region defined by the postal service.", + path: "Patient.address.postalCode" + }, + "id": { + name: "id", + dataType: string, + min: 0, + max: 1, + isArray: false, + description: "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces.", + path: "Patient.address.id" + }, + "state": { + name: "state", + dataType: string, + min: 0, + max: 1, + isArray: false, + description: "Sub-unit of a country with limited sovereignty in a federally organized country. A code may be used if codes are in common use (e.g. US 2 letter state codes).", + path: "Patient.address.state" + }, + "text": { + name: "text", + dataType: string, + min: 0, + max: 1, + isArray: false, + description: "Specifies the entire address as it should be displayed e.g. on a postal label. This may be provided instead of or as well as the specific parts.", + path: "Patient.address.text" + }, + "type": { + name: "type", + dataType: HRexPatientDemographicsAddressType, + min: 0, + max: 1, + isArray: false, + description: "Distinguishes between physical addresses (those you can visit) and mailing addresses (e.g. PO Boxes and care-of addresses). Most addresses are both.", + path: "Patient.address.type" + } + }, + serializers: { + 'xml: r4:complexDataTypeXMLSerializer, + 'json: r4:complexDataTypeJsonSerializer + } +} +public type HRexPatientDemographicsAddress record {| + *r4:Address; + + string country?; + r4:Extension[] extension?; + r4:Period period?; + string city?; + string[] line?; + HRexPatientDemographicsAddressUse use?; + string district?; + string postalCode?; + string id?; + string state?; + string text?; + HRexPatientDemographicsAddressType 'type?; +|}; + +# FHIR HRexPatientDemographicsIdentifierUmb datatype record. +# +# + 'type - A coded type for the identifier that can be used to determine which identifier to use for a specific purpose. +@r4:DataTypeDefinition { + name: "HRexPatientDemographicsIdentifierUmb", + baseType: (), + elements: { + "type": { + name: "type", + dataType: HRexPatientDemographicsIdentifierType, + min: 1, + max: 1, + isArray: false, + description: "A coded type for the identifier that can be used to determine which identifier to use for a specific purpose.", + path: "Patient.identifier.type" + } + }, + serializers: { + 'xml: r4:complexDataTypeXMLSerializer, + 'json: r4:complexDataTypeJsonSerializer + } +} +public type HRexPatientDemographicsIdentifierUmb record {| + *r4:Identifier; + + HRexPatientDemographicsIdentifierType 'type; +|}; + +# HRexPatientDemographicsAddressType enum +public enum HRexPatientDemographicsAddressType { + CODE_TYPE_POSTAL = "postal", + CODE_TYPE_PHYSICAL = "physical", + CODE_TYPE_BOTH = "both" +} + +# FHIR HRexPatientDemographicsLink datatype record. +# +# + extension - May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. +# + other - The other patient resource that the link refers to. +# + modifierExtension - May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions. Modifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself). +# + id - Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces. +# + 'type - The type of link between this patient resource and another patient resource. +@r4:DataTypeDefinition { + name: "HRexPatientDemographicsLink", + baseType: (), + elements: { + "extension": { + name: "extension", + dataType: r4:Extension, + min: 0, + max: int:MAX_VALUE, + isArray: true, + description: "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension.", + path: "Patient.link.extension" + }, + "other": { + name: "other", + dataType: r4:Reference, + min: 1, + max: 1, + isArray: false, + description: "The other patient resource that the link refers to.", + path: "Patient.link.other" + }, + "modifierExtension": { + name: "modifierExtension", + dataType: r4:Extension, + min: 0, + max: int:MAX_VALUE, + isArray: true, + description: "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions. Modifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself).", + path: "Patient.link.modifierExtension" + }, + "id": { + name: "id", + dataType: string, + min: 0, + max: 1, + isArray: false, + description: "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces.", + path: "Patient.link.id" + }, + "type": { + name: "type", + dataType: HRexPatientDemographicsLinkType, + min: 1, + max: 1, + isArray: false, + description: "The type of link between this patient resource and another patient resource.", + path: "Patient.link.type" + } + }, + serializers: { + 'xml: r4:complexDataTypeXMLSerializer, + 'json: r4:complexDataTypeJsonSerializer + } +} +public type HRexPatientDemographicsLink record {| + *r4:BackboneElement; + + r4:Extension[] extension?; + r4:Reference other; + r4:Extension[] modifierExtension?; + string id?; + HRexPatientDemographicsLinkType 'type; +|}; + +# FHIR HRexPatientDemographicsCommunication datatype record. +# +# + extension - May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. +# + modifierExtension - May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions. Modifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself). +# + language - The ISO-639-1 alpha 2 code in lower case for the language, optionally followed by a hyphen and the ISO-3166-1 alpha 2 code for the region in upper case; e.g. 'en' for English, or 'en-US' for American English versus 'en-EN' for England English. +# + id - Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces. +# + preferred - Indicates whether or not the patient prefers this language (over other languages he masters up a certain level). +@r4:DataTypeDefinition { + name: "HRexPatientDemographicsCommunication", + baseType: (), + elements: { + "extension": { + name: "extension", + dataType: r4:Extension, + min: 0, + max: int:MAX_VALUE, + isArray: true, + description: "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension.", + path: "Patient.communication.extension" + }, + "modifierExtension": { + name: "modifierExtension", + dataType: r4:Extension, + min: 0, + max: int:MAX_VALUE, + isArray: true, + description: "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions. Modifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself).", + path: "Patient.communication.modifierExtension" + }, + "language": { + name: "language", + dataType: r4:CodeableConcept, + min: 1, + max: 1, + isArray: false, + description: "The ISO-639-1 alpha 2 code in lower case for the language, optionally followed by a hyphen and the ISO-3166-1 alpha 2 code for the region in upper case; e.g. 'en' for English, or 'en-US' for American English versus 'en-EN' for England English.", + path: "Patient.communication.language" + }, + "id": { + name: "id", + dataType: string, + min: 0, + max: 1, + isArray: false, + description: "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces.", + path: "Patient.communication.id" + }, + "preferred": { + name: "preferred", + dataType: boolean, + min: 0, + max: 1, + isArray: false, + description: "Indicates whether or not the patient prefers this language (over other languages he masters up a certain level).", + path: "Patient.communication.preferred" + } + }, + serializers: { + 'xml: r4:complexDataTypeXMLSerializer, + 'json: r4:complexDataTypeJsonSerializer + } +} +public type HRexPatientDemographicsCommunication record {| + *r4:BackboneElement; + + r4:Extension[] extension?; + r4:Extension[] modifierExtension?; + r4:CodeableConcept language; + string id?; + boolean preferred?; +|}; + +# FHIR HRexPatientDemographicsIdentifierType datatype record. +# +# + coding - A reference to a code defined by a terminology system. +@r4:DataTypeDefinition { + name: "HRexPatientDemographicsIdentifierType", + baseType: (), + elements: { + "coding": { + name: "coding", + dataType: HRexPatientDemographicsIdentifierTypeCoding, + min: 1, + max: int:MAX_VALUE, + isArray: true, + description: "A reference to a code defined by a terminology system.", + path: "Patient.identifier.type.coding" + } + }, + serializers: { + 'xml: r4:complexDataTypeXMLSerializer, + 'json: r4:complexDataTypeJsonSerializer + } +} +public type HRexPatientDemographicsIdentifierType record {| + *r4:CodeableConcept; + + @constraint:Array { + minLength: 1 + } + HRexPatientDemographicsIdentifierTypeCoding[] coding; +|}; + +# FHIR HRexPatientDemographicsContact datatype record. +# +# + extension - May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. +# + period - The period during which this contact person or organization is valid to be contacted relating to this patient. +# + address - Address for the contact person. +# + gender - Administrative Gender - the gender that the contact person is considered to have for administration and record keeping purposes. +# + modifierExtension - May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions. Modifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself). +# + organization - Organization on behalf of which the contact is acting or for which the contact is working. +# + name - A name associated with the contact person. +# + telecom - A contact detail for the person, e.g. a telephone number or an email address. +# + id - Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces. +# + relationship - The nature of the relationship between the patient and the contact person. +@r4:DataTypeDefinition { + name: "HRexPatientDemographicsContact", + baseType: (), + elements: { + "extension": { + name: "extension", + dataType: r4:Extension, + min: 0, + max: int:MAX_VALUE, + isArray: true, + description: "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension.", + path: "Patient.contact.extension" + }, + "period": { + name: "period", + dataType: r4:Period, + min: 0, + max: 1, + isArray: false, + description: "The period during which this contact person or organization is valid to be contacted relating to this patient.", + path: "Patient.contact.period" + }, + "address": { + name: "address", + dataType: r4:Address, + min: 0, + max: 1, + isArray: false, + description: "Address for the contact person.", + path: "Patient.contact.address" + }, + "gender": { + name: "gender", + dataType: HRexPatientDemographicsContactGender, + min: 0, + max: 1, + isArray: false, + description: "Administrative Gender - the gender that the contact person is considered to have for administration and record keeping purposes.", + path: "Patient.contact.gender" + }, + "modifierExtension": { + name: "modifierExtension", + dataType: r4:Extension, + min: 0, + max: int:MAX_VALUE, + isArray: true, + description: "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions. Modifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself).", + path: "Patient.contact.modifierExtension" + }, + "organization": { + name: "organization", + dataType: r4:Reference, + min: 0, + max: 1, + isArray: false, + description: "Organization on behalf of which the contact is acting or for which the contact is working.", + path: "Patient.contact.organization" + }, + "name": { + name: "name", + dataType: r4:HumanName, + min: 0, + max: 1, + isArray: false, + description: "A name associated with the contact person.", + path: "Patient.contact.name" + }, + "telecom": { + name: "telecom", + dataType: r4:ContactPoint, + min: 0, + max: int:MAX_VALUE, + isArray: true, + description: "A contact detail for the person, e.g. a telephone number or an email address.", + path: "Patient.contact.telecom" + }, + "id": { + name: "id", + dataType: string, + min: 0, + max: 1, + isArray: false, + description: "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces.", + path: "Patient.contact.id" + }, + "relationship": { + name: "relationship", + dataType: r4:CodeableConcept, + min: 0, + max: int:MAX_VALUE, + isArray: true, + description: "The nature of the relationship between the patient and the contact person.", + path: "Patient.contact.relationship" + } + }, + serializers: { + 'xml: r4:complexDataTypeXMLSerializer, + 'json: r4:complexDataTypeJsonSerializer + } +} +public type HRexPatientDemographicsContact record {| + *r4:BackboneElement; + + r4:Extension[] extension?; + r4:Period period?; + r4:Address address?; + HRexPatientDemographicsContactGender gender?; + r4:Extension[] modifierExtension?; + r4:Reference organization?; + r4:HumanName name?; + r4:ContactPoint[] telecom?; + string id?; + r4:CodeableConcept[] relationship?; +|}; + +# HRexPatientDemographicsGender enum +public enum HRexPatientDemographicsGender { + CODE_GENDER_OTHER = "other", + CODE_GENDER_FEMALE = "female", + CODE_GENDER_MALE = "male", + CODE_GENDER_UNKNOWN = "unknown" +} + +# HRexPatientDemographicsLinkType enum +public enum HRexPatientDemographicsLinkType { + CODE_TYPE_REFER = "refer", + CODE_TYPE_REPLACES = "replaces", + CODE_TYPE_SEEALSO = "seealso", + CODE_TYPE_REPLACED_BY = "replaced-by" +} + +# FHIR HRexPatientDemographicsIdentifierTypeCoding datatype record. +# +# + system - The identification of the code system that defines the meaning of the symbol in the code. +# + code - A symbol in syntax defined by the system. The symbol may be a predefined code or an expression in a syntax defined by the coding system (e.g. post-coordination). +@r4:DataTypeDefinition { + name: "HRexPatientDemographicsIdentifierTypeCoding", + baseType: (), + elements: { + "system": { + name: "system", + dataType: r4:uri, + min: 1, + max: 1, + isArray: false, + description: "The identification of the code system that defines the meaning of the symbol in the code.", + path: "Patient.identifier.type.coding.system" + }, + "code": { + name: "code", + dataType: r4:code, + min: 1, + max: 1, + isArray: false, + description: "A symbol in syntax defined by the system. The symbol may be a predefined code or an expression in a syntax defined by the coding system (e.g. post-coordination).", + path: "Patient.identifier.type.coding.code" + } + }, + serializers: { + 'xml: r4:complexDataTypeXMLSerializer, + 'json: r4:complexDataTypeJsonSerializer + } +} +public type HRexPatientDemographicsIdentifierTypeCoding record {| + *r4:Coding; + + r4:uri system = "http://hl7.org/fhir/us/davinci-hrex/CodeSystem/hrex-temp"; + r4:code code = "UMB"; +|}; + diff --git a/davincihrex100/resource_hrex_practitioner.bal b/davincihrex100/resource_hrex_practitioner.bal new file mode 100644 index 00000000..69e7243d --- /dev/null +++ b/davincihrex100/resource_hrex_practitioner.bal @@ -0,0 +1,642 @@ +// Copyright (c) 2023, WSO2 LLC. (http://www.wso2.com). + +// WSO2 LLC. licenses this file to you under the Apache License, +// Version 2.0 (the "License"); you may not use this file except +// in compliance with the License. +// You may obtain a copy of the License at + +// http://www.apache.org/licenses/LICENSE-2.0 + +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. + +// AUTO-GENERATED FILE. +// This file is auto-generated by Ballerina. + +import ballerina/constraint; +import ballerinax/health.fhir.r4; + +public const string PROFILE_BASE_HREXPRACTITIONER = "http://hl7.org/fhir/us/davinci-hrex/StructureDefinition/hrex-practitioner"; +public const RESOURCE_NAME_HREXPRACTITIONER = "Practitioner"; + +# FHIR HRexPractitioner resource record. +# +# + resourceType - The type of the resource describes +# + identifier - An identifier that applies to this person in this role. +# * identifier Slicings +# 1) HRexPractitionerIdentifierNPI: An identifier for the person as this agent +# - min = 0 +# - max = 1 +# +# 2) HRexPractitionerIdentifierCcn: An identifier for the person as this agent +# - min = 0 +# - max = 1 +# +# + extension - May be used to represent additional information that is not part of the basic definition of the resource. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. +# + address - Address(es) of the practitioner that are not role specific (typically home address). Work addresses are not typically entered in this property as they are usually role dependent. +# + gender - Administrative Gender - the gender that the person is considered to have for administration and record keeping purposes. +# + modifierExtension - May be used to represent additional information that is not part of the basic definition of the resource and that modifies the understanding of the element that contains it and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer is allowed to define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions. Modifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself). +# + active - Whether this practitioner's record is in active use. +# + photo - Image of the person. +# + language - The base language in which the resource is written. +# + birthDate - The date of birth for the practitioner. +# + qualification - The official certifications, training, and licenses that authorize or otherwise pertain to the provision of care by the practitioner. For example, a medical license issued by a medical board authorizing the practitioner to practice medicine within a certian locality. +# + contained - These resources do not have an independent existence apart from the resource that contains them - they cannot be identified independently, and nor can they have their own independent transaction scope. +# + meta - The metadata about the resource. This is content that is maintained by the infrastructure. Changes to the content might not always be associated with version changes to the resource. +# + name - The name(s) associated with the practitioner. +# + implicitRules - A reference to a set of rules that were followed when the resource was constructed, and which must be understood when processing the content. Often, this is a reference to an implementation guide that defines the special rules along with other profiles etc. +# + telecom - A contact detail for the practitioner, e.g. a telephone number or an email address. +# + id - The logical id of the resource, as used in the URL for the resource. Once assigned, this value never changes. +# + text - A human-readable narrative that contains a summary of the resource and can be used to represent the content of the resource to a human. The narrative need not encode all the structured data, but is required to contain sufficient detail to make it 'clinically safe' for a human to just read the narrative. Resource definitions may define what content should be represented in the narrative to ensure clinical safety. +# + communication - A language the practitioner can use in patient communication. +@r4:ResourceDefinition { + resourceType: "Practitioner", + baseType: r4:DomainResource, + profile: "http://hl7.org/fhir/us/davinci-hrex/StructureDefinition/hrex-practitioner", + elements: { + "identifier" : { + name: "identifier", + dataType: HRexPractitionerIdentifier, + min: 1, + max: int:MAX_VALUE, + isArray: true, + path: "Practitioner.identifier" + }, + "extension" : { + name: "extension", + dataType: r4:Extension, + min: 0, + max: int:MAX_VALUE, + isArray: true, + path: "Practitioner.extension" + }, + "address" : { + name: "address", + dataType: r4:Address, + min: 0, + max: int:MAX_VALUE, + isArray: true, + path: "Practitioner.address" + }, + "gender" : { + name: "gender", + dataType: HRexPractitionerGender, + min: 0, + max: 1, + isArray: false, + path: "Practitioner.gender", + valueSet: "http://hl7.org/fhir/ValueSet/administrative-gender|4.0.1" + }, + "modifierExtension" : { + name: "modifierExtension", + dataType: r4:Extension, + min: 0, + max: int:MAX_VALUE, + isArray: true, + path: "Practitioner.modifierExtension" + }, + "active" : { + name: "active", + dataType: boolean, + min: 0, + max: 1, + isArray: false, + path: "Practitioner.active" + }, + "photo" : { + name: "photo", + dataType: r4:Attachment, + min: 0, + max: int:MAX_VALUE, + isArray: true, + path: "Practitioner.photo" + }, + "language" : { + name: "language", + dataType: r4:code, + min: 0, + max: 1, + isArray: false, + path: "Practitioner.language", + valueSet: "http://hl7.org/fhir/ValueSet/languages" + }, + "birthDate" : { + name: "birthDate", + dataType: r4:date, + min: 0, + max: 1, + isArray: false, + path: "Practitioner.birthDate" + }, + "qualification" : { + name: "qualification", + dataType: HRexPractitionerQualification, + min: 0, + max: int:MAX_VALUE, + isArray: true, + path: "Practitioner.qualification" + }, + "contained" : { + name: "contained", + dataType: r4:Resource, + min: 0, + max: int:MAX_VALUE, + isArray: true, + path: "Practitioner.contained" + }, + "meta" : { + name: "meta", + dataType: r4:Meta, + min: 0, + max: 1, + isArray: false, + path: "Practitioner.meta" + }, + "name" : { + name: "name", + dataType: r4:HumanName, + min: 1, + max: int:MAX_VALUE, + isArray: true, + path: "Practitioner.name" + }, + "implicitRules" : { + name: "implicitRules", + dataType: r4:uri, + min: 0, + max: 1, + isArray: false, + path: "Practitioner.implicitRules" + }, + "telecom" : { + name: "telecom", + dataType: HRexPractitionerTelecom, + min: 0, + max: int:MAX_VALUE, + isArray: true, + path: "Practitioner.telecom" + }, + "id" : { + name: "id", + dataType: string, + min: 0, + max: 1, + isArray: false, + path: "Practitioner.id" + }, + "text" : { + name: "text", + dataType: r4:Narrative, + min: 0, + max: 1, + isArray: false, + path: "Practitioner.text" + }, + "communication" : { + name: "communication", + dataType: r4:CodeableConcept, + min: 0, + max: int:MAX_VALUE, + isArray: true, + path: "Practitioner.communication", + valueSet: "http://hl7.org/fhir/ValueSet/languages" + } + }, + serializers: { + 'xml: r4:fhirResourceXMLSerializer, + 'json: r4:fhirResourceJsonSerializer + } +} +public type HRexPractitioner record {| + *r4:DomainResource; + + RESOURCE_NAME_HREXPRACTITIONER resourceType = RESOURCE_NAME_HREXPRACTITIONER; + + @constraint:Array { + minLength: 1 + } + HRexPractitionerIdentifier[] identifier; + r4:Extension[] extension?; + r4:Address[] address?; + HRexPractitionerGender gender?; + r4:Extension[] modifierExtension?; + boolean active?; + r4:Attachment[] photo?; + r4:code language?; + r4:date birthDate?; + HRexPractitionerQualification[] qualification?; + r4:Resource[] contained?; + r4:Meta meta?; + @constraint:Array { + minLength: 1 + } + r4:HumanName[] name; + r4:uri implicitRules?; + HRexPractitionerTelecom[] telecom?; + string id?; + r4:Narrative text?; + r4:CodeableConcept[] communication?; + r4:Element ...; +|}; + +# FHIR HRexPractitionerIdentifier datatype record. +# +# + extension - May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. +# + period - Time period during which identifier is/was valid for use. +# + system - Establishes the namespace for the value - that is, a URL that describes a set values that are unique. +# + use - The purpose of this identifier. +# + assigner - Organization that issued/manages the identifier. +# + id - Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces. +# + 'type - A coded type for the identifier that can be used to determine which identifier to use for a specific purpose. +# + value - The portion of the identifier typically relevant to the user and which is unique within the context of the system. +@r4:DataTypeDefinition { + name: "HRexPractitionerIdentifier", + baseType: (), + elements: { + "extension": { + name: "extension", + dataType: r4:Extension, + min: 0, + max: int:MAX_VALUE, + isArray: true, + description: "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension.", + path: "Practitioner.identifier.extension" + }, + "period": { + name: "period", + dataType: r4:Period, + min: 0, + max: 1, + isArray: false, + description: "Time period during which identifier is/was valid for use.", + path: "Practitioner.identifier.period" + }, + "system": { + name: "system", + dataType: r4:uri, + min: 1, + max: 1, + isArray: false, + description: "Establishes the namespace for the value - that is, a URL that describes a set values that are unique.", + path: "Practitioner.identifier.system" + }, + "use": { + name: "use", + dataType: HRexPractitionerIdentifierUse, + min: 0, + max: 1, + isArray: false, + description: "The purpose of this identifier.", + path: "Practitioner.identifier.use" + }, + "assigner": { + name: "assigner", + dataType: r4:Reference, + min: 0, + max: 1, + isArray: false, + description: "Organization that issued/manages the identifier.", + path: "Practitioner.identifier.assigner" + }, + "id": { + name: "id", + dataType: string, + min: 0, + max: 1, + isArray: false, + description: "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces.", + path: "Practitioner.identifier.id" + }, + "type": { + name: "type", + dataType: r4:CodeableConcept, + min: 0, + max: 1, + isArray: false, + description: "A coded type for the identifier that can be used to determine which identifier to use for a specific purpose.", + path: "Practitioner.identifier.type" + }, + "value": { + name: "value", + dataType: string, + min: 1, + max: 1, + isArray: false, + description: "The portion of the identifier typically relevant to the user and which is unique within the context of the system.", + path: "Practitioner.identifier.value" + } + }, + serializers: { + 'xml: r4:complexDataTypeXMLSerializer, + 'json: r4:complexDataTypeJsonSerializer + } +} +public type HRexPractitionerIdentifier record {| + *r4:Identifier; + + r4:Extension[] extension?; + r4:Period period?; + r4:uri system; + HRexPractitionerIdentifierUse use?; + r4:Reference assigner?; + string id?; + r4:CodeableConcept 'type?; + string value; +|}; + +# FHIR HRexPractitionerIdentifierCcn datatype record. +# +# + system - Establishes the namespace for the value - that is, a URL that describes a set values that are unique. +@r4:DataTypeDefinition { + name: "HRexPractitionerIdentifierCcn", + baseType: (), + elements: { + "system": { + name: "system", + dataType: r4:uri, + min: 1, + max: 1, + isArray: false, + description: "Establishes the namespace for the value - that is, a URL that describes a set values that are unique.", + path: "Practitioner.identifier.system" + } + }, + serializers: { + 'xml: r4:complexDataTypeXMLSerializer, + 'json: r4:complexDataTypeJsonSerializer + } +} +public type HRexPractitionerIdentifierCcn record {| + *HRexPractitionerIdentifier; + + r4:uri system = "http://terminology.hl7.org/NamingSystem/CMSCertificationNumber"; +|}; + +# HRexPractitionerGender enum +public enum HRexPractitionerGender { + CODE_GENDER_OTHER = "other", + CODE_GENDER_FEMALE = "female", + CODE_GENDER_MALE = "male", + CODE_GENDER_UNKNOWN = "unknown" +} + +# HRexPractitionerTelecomUse enum +public enum HRexPractitionerTelecomUse { + CODE_USE_TEMP = "temp", + CODE_USE_WORK = "work", + CODE_USE_OLD = "old", + CODE_USE_MOBILE = "mobile", + CODE_USE_HOME = "home" +} + +# HRexPractitionerNameUse enum +public enum HRexPractitionerNameUse { + CODE_USE_MAIDEN = "maiden", + CODE_USE_TEMP = "temp", + CODE_USE_USUAL = "usual", + CODE_USE_OLD = "old", + CODE_USE_NICKNAME = "nickname", + CODE_USE_OFFICIAL = "official", + CODE_USE_ANONYMOUS = "anonymous" +} + +# HRexPractitionerIdentifierUse enum +public enum HRexPractitionerIdentifierUse { + CODE_USE_SECONDARY = "secondary", + CODE_USE_TEMP = "temp", + CODE_USE_USUAL = "usual", + CODE_USE_OLD = "old", + CODE_USE_OFFICIAL = "official" +} + +# FHIR HRexPractitionerQualification datatype record. +# +# + identifier - An identifier that applies to this person's qualification in this role. +# + extension - May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. +# + period - Period during which the qualification is valid. +# + code - Coded representation of the qualification. +# + modifierExtension - May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions. Modifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself). +# + id - Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces. +# + issuer - Organization that regulates and issues the qualification. +@r4:DataTypeDefinition { + name: "HRexPractitionerQualification", + baseType: (), + elements: { + "identifier": { + name: "identifier", + dataType: r4:Identifier, + min: 0, + max: int:MAX_VALUE, + isArray: true, + description: "An identifier that applies to this person's qualification in this role.", + path: "Practitioner.qualification.identifier" + }, + "extension": { + name: "extension", + dataType: r4:Extension, + min: 0, + max: int:MAX_VALUE, + isArray: true, + description: "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension.", + path: "Practitioner.qualification.extension" + }, + "period": { + name: "period", + dataType: r4:Period, + min: 0, + max: 1, + isArray: false, + description: "Period during which the qualification is valid.", + path: "Practitioner.qualification.period" + }, + "code": { + name: "code", + dataType: r4:CodeableConcept, + min: 1, + max: 1, + isArray: false, + description: "Coded representation of the qualification.", + path: "Practitioner.qualification.code" + }, + "modifierExtension": { + name: "modifierExtension", + dataType: r4:Extension, + min: 0, + max: int:MAX_VALUE, + isArray: true, + description: "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions. Modifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself).", + path: "Practitioner.qualification.modifierExtension" + }, + "id": { + name: "id", + dataType: string, + min: 0, + max: 1, + isArray: false, + description: "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces.", + path: "Practitioner.qualification.id" + }, + "issuer": { + name: "issuer", + dataType: r4:Reference, + min: 0, + max: 1, + isArray: false, + description: "Organization that regulates and issues the qualification.", + path: "Practitioner.qualification.issuer" + } + }, + serializers: { + 'xml: r4:complexDataTypeXMLSerializer, + 'json: r4:complexDataTypeJsonSerializer + } +} +public type HRexPractitionerQualification record {| + *r4:BackboneElement; + + r4:Identifier[] identifier?; + r4:Extension[] extension?; + r4:Period period?; + r4:CodeableConcept code; + r4:Extension[] modifierExtension?; + string id?; + r4:Reference issuer?; +|}; + +# FHIR HRexPractitionerIdentifierNPI datatype record. +# +# + system - Establishes the namespace for the value - that is, a URL that describes a set values that are unique. +@r4:DataTypeDefinition { + name: "HRexPractitionerIdentifierNPI", + baseType: (), + elements: { + "system": { + name: "system", + dataType: r4:uri, + min: 1, + max: 1, + isArray: false, + description: "Establishes the namespace for the value - that is, a URL that describes a set values that are unique.", + path: "Practitioner.identifier.system" + } + }, + serializers: { + 'xml: r4:complexDataTypeXMLSerializer, + 'json: r4:complexDataTypeJsonSerializer + } +} +public type HRexPractitionerIdentifierNPI record {| + *HRexPractitionerIdentifier; + + r4:uri system = "http://hl7.org/fhir/sid/us-npi"; +|}; + +# HRexPractitionerTelecomSystem enum +public enum HRexPractitionerTelecomSystem { + CODE_SYSTEM_OTHER = "other", + CODE_SYSTEM_PAGER = "pager", + CODE_SYSTEM_PHONE = "phone", + CODE_SYSTEM_SMS = "sms", + CODE_SYSTEM_FAX = "fax", + CODE_SYSTEM_EMAIL = "email", + CODE_SYSTEM_URL = "url" +} + +# FHIR HRexPractitionerTelecom datatype record. +# +# + extension - May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. +# + period - Time period when the contact point was/is in use. +# + system - Telecommunications form for contact point - what communications system is required to make use of the contact. +# + use - Identifies the purpose for the contact point. +# + rank - Specifies a preferred order in which to use a set of contacts. ContactPoints with lower rank values are more preferred than those with higher rank values. +# + id - Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces. +# + value - The actual contact point details, in a form that is meaningful to the designated communication system (i.e. phone number or email address). +@r4:DataTypeDefinition { + name: "HRexPractitionerTelecom", + baseType: (), + elements: { + "extension": { + name: "extension", + dataType: r4:Extension, + min: 0, + max: int:MAX_VALUE, + isArray: true, + description: "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension.", + path: "Practitioner.telecom.extension" + }, + "period": { + name: "period", + dataType: r4:Period, + min: 0, + max: 1, + isArray: false, + description: "Time period when the contact point was/is in use.", + path: "Practitioner.telecom.period" + }, + "system": { + name: "system", + dataType: HRexPractitionerTelecomSystem, + min: 0, + max: 1, + isArray: false, + description: "Telecommunications form for contact point - what communications system is required to make use of the contact.", + path: "Practitioner.telecom.system" + }, + "use": { + name: "use", + dataType: HRexPractitionerTelecomUse, + min: 0, + max: 1, + isArray: false, + description: "Identifies the purpose for the contact point.", + path: "Practitioner.telecom.use" + }, + "rank": { + name: "rank", + dataType: r4:positiveInt, + min: 0, + max: 1, + isArray: false, + description: "Specifies a preferred order in which to use a set of contacts. ContactPoints with lower rank values are more preferred than those with higher rank values.", + path: "Practitioner.telecom.rank" + }, + "id": { + name: "id", + dataType: string, + min: 0, + max: 1, + isArray: false, + description: "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces.", + path: "Practitioner.telecom.id" + }, + "value": { + name: "value", + dataType: string, + min: 0, + max: 1, + isArray: false, + description: "The actual contact point details, in a form that is meaningful to the designated communication system (i.e. phone number or email address).", + path: "Practitioner.telecom.value" + } + }, + serializers: { + 'xml: r4:complexDataTypeXMLSerializer, + 'json: r4:complexDataTypeJsonSerializer + } +} +public type HRexPractitionerTelecom record {| + *r4:ContactPoint; + + r4:Extension[] extension?; + r4:Period period?; + HRexPractitionerTelecomSystem system?; + HRexPractitionerTelecomUse use?; + r4:positiveInt rank?; + string id?; + string value?; +|}; + diff --git a/davincihrex100/resource_hrex_practitioner_role.bal b/davincihrex100/resource_hrex_practitioner_role.bal new file mode 100644 index 00000000..eb8f22c6 --- /dev/null +++ b/davincihrex100/resource_hrex_practitioner_role.bal @@ -0,0 +1,466 @@ +// Copyright (c) 2023, WSO2 LLC. (http://www.wso2.com). + +// WSO2 LLC. licenses this file to you under the Apache License, +// Version 2.0 (the "License"); you may not use this file except +// in compliance with the License. +// You may obtain a copy of the License at + +// http://www.apache.org/licenses/LICENSE-2.0 + +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. + +// AUTO-GENERATED FILE. +// This file is auto-generated by Ballerina. + +import ballerinax/health.fhir.r4; + +public const string PROFILE_BASE_HREXPRACTITIONERROLE = "http://hl7.org/fhir/us/davinci-hrex/StructureDefinition/hrex-practitionerrole"; +public const RESOURCE_NAME_HREXPRACTITIONERROLE = "PractitionerRole"; + +# FHIR HRexPractitionerRole resource record. +# +# + resourceType - The type of the resource describes +# + identifier - Business Identifiers that are specific to a role/location. +# + extension - May be used to represent additional information that is not part of the basic definition of the resource. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. +# + period - The period during which the person is authorized to act as a practitioner in these role(s) for the organization. +# + specialty - Specific specialty of the practitioner. +# + code - Roles which this practitioner is authorized to perform for the organization. +# + practitioner - Practitioner that is able to provide the defined services for the organization. +# + modifierExtension - May be used to represent additional information that is not part of the basic definition of the resource and that modifies the understanding of the element that contains it and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer is allowed to define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions. Modifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself). +# + active - Whether this practitioner role record is in active use. +# + language - The base language in which the resource is written. +# + notAvailable - The practitioner is not available or performing this role during this period of time due to the provided reason. +# + availableTime - A collection of times the practitioner is available or performing this role at the location and/or healthcareservice. +# + contained - These resources do not have an independent existence apart from the resource that contains them - they cannot be identified independently, and nor can they have their own independent transaction scope. +# + endpoint - Technical endpoints providing access to services operated for the practitioner with this role. +# + healthcareService - The list of healthcare services that this worker provides for this role's Organization/Location(s). +# + meta - The metadata about the resource. This is content that is maintained by the infrastructure. Changes to the content might not always be associated with version changes to the resource. +# + organization - The organization where the Practitioner performs the roles associated. +# + implicitRules - A reference to a set of rules that were followed when the resource was constructed, and which must be understood when processing the content. Often, this is a reference to an implementation guide that defines the special rules along with other profiles etc. +# + location - The location(s) at which this practitioner provides care. +# + telecom - Contact details that are specific to the role/location/service. +# + id - The logical id of the resource, as used in the URL for the resource. Once assigned, this value never changes. +# + text - A human-readable narrative that contains a summary of the resource and can be used to represent the content of the resource to a human. The narrative need not encode all the structured data, but is required to contain sufficient detail to make it 'clinically safe' for a human to just read the narrative. Resource definitions may define what content should be represented in the narrative to ensure clinical safety. +# + availabilityExceptions - A description of site availability exceptions, e.g. public holiday availability. Succinctly describing all possible exceptions to normal site availability as details in the available Times and not available Times. +@r4:ResourceDefinition { + resourceType: "PractitionerRole", + baseType: r4:DomainResource, + profile: "http://hl7.org/fhir/us/davinci-hrex/StructureDefinition/hrex-practitionerrole", + elements: { + "identifier" : { + name: "identifier", + dataType: r4:Identifier, + min: 0, + max: int:MAX_VALUE, + isArray: true, + path: "PractitionerRole.identifier" + }, + "extension" : { + name: "extension", + dataType: r4:Extension, + min: 0, + max: int:MAX_VALUE, + isArray: true, + path: "PractitionerRole.extension" + }, + "period" : { + name: "period", + dataType: r4:Period, + min: 0, + max: 1, + isArray: false, + path: "PractitionerRole.period" + }, + "specialty" : { + name: "specialty", + dataType: r4:CodeableConcept, + min: 0, + max: int:MAX_VALUE, + isArray: true, + path: "PractitionerRole.specialty", + valueSet: "http://hl7.org/fhir/us/core/ValueSet/us-core-provider-specialty" + }, + "code" : { + name: "code", + dataType: r4:CodeableConcept, + min: 0, + max: int:MAX_VALUE, + isArray: true, + path: "PractitionerRole.code", + valueSet: "http://hl7.org/fhir/us/core/ValueSet/us-core-provider-role" + }, + "practitioner" : { + name: "practitioner", + dataType: r4:Reference, + min: 1, + max: 1, + isArray: false, + path: "PractitionerRole.practitioner" + }, + "modifierExtension" : { + name: "modifierExtension", + dataType: r4:Extension, + min: 0, + max: int:MAX_VALUE, + isArray: true, + path: "PractitionerRole.modifierExtension" + }, + "active" : { + name: "active", + dataType: boolean, + min: 0, + max: 1, + isArray: false, + path: "PractitionerRole.active" + }, + "language" : { + name: "language", + dataType: r4:code, + min: 0, + max: 1, + isArray: false, + path: "PractitionerRole.language", + valueSet: "http://hl7.org/fhir/ValueSet/languages" + }, + "notAvailable" : { + name: "notAvailable", + dataType: HRexPractitionerRoleNotAvailable, + min: 0, + max: int:MAX_VALUE, + isArray: true, + path: "PractitionerRole.notAvailable" + }, + "availableTime" : { + name: "availableTime", + dataType: HRexPractitionerRoleAvailableTime, + min: 0, + max: int:MAX_VALUE, + isArray: true, + path: "PractitionerRole.availableTime" + }, + "contained" : { + name: "contained", + dataType: r4:Resource, + min: 0, + max: int:MAX_VALUE, + isArray: true, + path: "PractitionerRole.contained" + }, + "endpoint" : { + name: "endpoint", + dataType: r4:Reference, + min: 0, + max: int:MAX_VALUE, + isArray: true, + path: "PractitionerRole.endpoint" + }, + "healthcareService" : { + name: "healthcareService", + dataType: r4:Reference, + min: 0, + max: int:MAX_VALUE, + isArray: true, + path: "PractitionerRole.healthcareService" + }, + "meta" : { + name: "meta", + dataType: r4:Meta, + min: 0, + max: 1, + isArray: false, + path: "PractitionerRole.meta" + }, + "organization" : { + name: "organization", + dataType: r4:Reference, + min: 1, + max: 1, + isArray: false, + path: "PractitionerRole.organization" + }, + "implicitRules" : { + name: "implicitRules", + dataType: r4:uri, + min: 0, + max: 1, + isArray: false, + path: "PractitionerRole.implicitRules" + }, + "location" : { + name: "location", + dataType: r4:Reference, + min: 0, + max: int:MAX_VALUE, + isArray: true, + path: "PractitionerRole.location" + }, + "telecom" : { + name: "telecom", + dataType: r4:ContactPoint, + min: 0, + max: int:MAX_VALUE, + isArray: true, + path: "PractitionerRole.telecom" + }, + "id" : { + name: "id", + dataType: string, + min: 0, + max: 1, + isArray: false, + path: "PractitionerRole.id" + }, + "text" : { + name: "text", + dataType: r4:Narrative, + min: 0, + max: 1, + isArray: false, + path: "PractitionerRole.text" + }, + "availabilityExceptions" : { + name: "availabilityExceptions", + dataType: string, + min: 0, + max: 1, + isArray: false, + path: "PractitionerRole.availabilityExceptions" + } + }, + serializers: { + 'xml: r4:fhirResourceXMLSerializer, + 'json: r4:fhirResourceJsonSerializer + } +} +public type HRexPractitionerRole record {| + *r4:DomainResource; + + RESOURCE_NAME_HREXPRACTITIONERROLE resourceType = RESOURCE_NAME_HREXPRACTITIONERROLE; + + r4:Identifier[] identifier?; + r4:Extension[] extension?; + r4:Period period?; + r4:CodeableConcept[] specialty?; + r4:CodeableConcept[] code?; + r4:Reference practitioner; + r4:Extension[] modifierExtension?; + boolean active?; + r4:code language?; + HRexPractitionerRoleNotAvailable[] notAvailable?; + HRexPractitionerRoleAvailableTime[] availableTime?; + r4:Resource[] contained?; + r4:Reference[] endpoint?; + r4:Reference[] healthcareService?; + r4:Meta meta?; + r4:Reference organization; + r4:uri implicitRules?; + r4:Reference[] location?; + r4:ContactPoint[] telecom?; + string id?; + r4:Narrative text?; + string availabilityExceptions?; + r4:Element ...; +|}; + +# FHIR HRexPractitionerRoleNotAvailable datatype record. +# +# + extension - May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. +# + modifierExtension - May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions. Modifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself). +# + description - The reason that can be presented to the user as to why this time is not available. +# + during - Service is not available (seasonally or for a public holiday) from this date. +# + id - Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces. +@r4:DataTypeDefinition { + name: "HRexPractitionerRoleNotAvailable", + baseType: (), + elements: { + "extension": { + name: "extension", + dataType: r4:Extension, + min: 0, + max: int:MAX_VALUE, + isArray: true, + description: "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension.", + path: "PractitionerRole.notAvailable.extension" + }, + "modifierExtension": { + name: "modifierExtension", + dataType: r4:Extension, + min: 0, + max: int:MAX_VALUE, + isArray: true, + description: "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions. Modifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself).", + path: "PractitionerRole.notAvailable.modifierExtension" + }, + "description": { + name: "description", + dataType: string, + min: 1, + max: 1, + isArray: false, + description: "The reason that can be presented to the user as to why this time is not available.", + path: "PractitionerRole.notAvailable.description" + }, + "during": { + name: "during", + dataType: r4:Period, + min: 0, + max: 1, + isArray: false, + description: "Service is not available (seasonally or for a public holiday) from this date.", + path: "PractitionerRole.notAvailable.during" + }, + "id": { + name: "id", + dataType: string, + min: 0, + max: 1, + isArray: false, + description: "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces.", + path: "PractitionerRole.notAvailable.id" + } + }, + serializers: { + 'xml: r4:complexDataTypeXMLSerializer, + 'json: r4:complexDataTypeJsonSerializer + } +} +public type HRexPractitionerRoleNotAvailable record {| + *r4:BackboneElement; + + r4:Extension[] extension?; + r4:Extension[] modifierExtension?; + string description; + r4:Period during?; + string id?; +|}; + +# FHIR HRexPractitionerRoleAvailableTime datatype record. +# +# + allDay - Is this always available? (hence times are irrelevant) e.g. 24 hour service. +# + extension - May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. +# + modifierExtension - May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions. Modifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself). +# + availableEndTime - The closing time of day. Note: If the AllDay flag is set, then this time is ignored. +# + id - Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces. +# + daysOfWeek - Indicates which days of the week are available between the start and end Times. +# + availableStartTime - The opening time of day. Note: If the AllDay flag is set, then this time is ignored. +@r4:DataTypeDefinition { + name: "HRexPractitionerRoleAvailableTime", + baseType: (), + elements: { + "allDay": { + name: "allDay", + dataType: boolean, + min: 0, + max: 1, + isArray: false, + description: "Is this always available? (hence times are irrelevant) e.g. 24 hour service.", + path: "PractitionerRole.availableTime.allDay" + }, + "extension": { + name: "extension", + dataType: r4:Extension, + min: 0, + max: int:MAX_VALUE, + isArray: true, + description: "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension.", + path: "PractitionerRole.availableTime.extension" + }, + "modifierExtension": { + name: "modifierExtension", + dataType: r4:Extension, + min: 0, + max: int:MAX_VALUE, + isArray: true, + description: "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions. Modifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself).", + path: "PractitionerRole.availableTime.modifierExtension" + }, + "availableEndTime": { + name: "availableEndTime", + dataType: r4:time, + min: 0, + max: 1, + isArray: false, + description: "The closing time of day. Note: If the AllDay flag is set, then this time is ignored.", + path: "PractitionerRole.availableTime.availableEndTime" + }, + "id": { + name: "id", + dataType: string, + min: 0, + max: 1, + isArray: false, + description: "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces.", + path: "PractitionerRole.availableTime.id" + }, + "daysOfWeek": { + name: "daysOfWeek", + dataType: HRexPractitionerRoleAvailableTimeDaysOfWeek, + min: 0, + max: int:MAX_VALUE, + isArray: true, + description: "Indicates which days of the week are available between the start and end Times.", + path: "PractitionerRole.availableTime.daysOfWeek" + }, + "availableStartTime": { + name: "availableStartTime", + dataType: r4:time, + min: 0, + max: 1, + isArray: false, + description: "The opening time of day. Note: If the AllDay flag is set, then this time is ignored.", + path: "PractitionerRole.availableTime.availableStartTime" + } + }, + serializers: { + 'xml: r4:complexDataTypeXMLSerializer, + 'json: r4:complexDataTypeJsonSerializer + } +} +public type HRexPractitionerRoleAvailableTime record {| + *r4:BackboneElement; + + boolean allDay?; + r4:Extension[] extension?; + r4:Extension[] modifierExtension?; + r4:time availableEndTime?; + string id?; + HRexPractitionerRoleAvailableTimeDaysOfWeek[] daysOfWeek?; + r4:time availableStartTime?; +|}; + +# HRexPractitionerRoleAvailableTimeDaysOfWeek enum +public enum HRexPractitionerRoleAvailableTimeDaysOfWeek { + CODE_DAYSOFWEEK_THU = "thu", + CODE_DAYSOFWEEK_TUE = "tue", + CODE_DAYSOFWEEK_WED = "wed", + CODE_DAYSOFWEEK_SAT = "sat", + CODE_DAYSOFWEEK_FRI = "fri", + CODE_DAYSOFWEEK_MON = "mon", + CODE_DAYSOFWEEK_SUN = "sun" +} + +# HRexPractitionerRoleTelecomSystem enum +public enum HRexPractitionerRoleTelecomSystem { + CODE_SYSTEM_OTHER = "other", + CODE_SYSTEM_PAGER = "pager", + CODE_SYSTEM_PHONE = "phone", + CODE_SYSTEM_SMS = "sms", + CODE_SYSTEM_FAX = "fax", + CODE_SYSTEM_EMAIL = "email", + CODE_SYSTEM_URL = "url" +} + +# HRexPractitionerRoleTelecomUse enum +public enum HRexPractitionerRoleTelecomUse { + CODE_USE_TEMP = "temp", + CODE_USE_WORK = "work", + CODE_USE_OLD = "old", + CODE_USE_MOBILE = "mobile", + CODE_USE_HOME = "home" +} + diff --git a/davincihrex100/resource_hrex_provenance.bal b/davincihrex100/resource_hrex_provenance.bal new file mode 100644 index 00000000..337436f1 --- /dev/null +++ b/davincihrex100/resource_hrex_provenance.bal @@ -0,0 +1,841 @@ +// Copyright (c) 2023, WSO2 LLC. (http://www.wso2.com). + +// WSO2 LLC. licenses this file to you under the Apache License, +// Version 2.0 (the "License"); you may not use this file except +// in compliance with the License. +// You may obtain a copy of the License at + +// http://www.apache.org/licenses/LICENSE-2.0 + +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. + +// AUTO-GENERATED FILE. +// This file is auto-generated by Ballerina. + +import ballerina/constraint; +import ballerinax/health.fhir.r4; + +public const string PROFILE_BASE_HREXPROVENANCE = "http://hl7.org/fhir/us/davinci-hrex/StructureDefinition/hrex-provenance"; +public const RESOURCE_NAME_HREXPROVENANCE = "Provenance"; + +# FHIR HRexProvenance resource record. +# +# + resourceType - The type of the resource describes +# + reason - The reason that the activity was taking place. +# + agent - An actor taking a role in an activity for which it can be assigned some degree of responsibility for the activity taking place. +# * agent Slicings +# 1) HRexProvenanceAgentProvenanceAuthor: Actor involved +# - min = 0 +# - max = * +# +# 2) HRexProvenanceAgentProvenanceTransmitter: Actor involved +# - min = 0 +# - max = 1 +# +# + extension - May be used to represent additional information that is not part of the basic definition of the resource. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. +# + activity - An activity is something that occurs over a period of time and acts upon or with entities; it may include consuming, processing, transforming, modifying, relocating, using, or generating entities. +# + signature - A digital signature on the target Reference(s). The signer should match a Provenance.agent. The purpose of the signature is indicated. +# + modifierExtension - May be used to represent additional information that is not part of the basic definition of the resource and that modifies the understanding of the element that contains it and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer is allowed to define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions. Modifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself). +# + language - The base language in which the resource is written. +# + occurredPeriod - The period during which the activity occurred. +# + recorded - The instant of time at which the activity was recorded. +# + target - The Reference(s) that were generated or updated by the activity described in this resource. A provenance can point to more than one target if multiple resources were created/updated by the same activity. +# + contained - These resources do not have an independent existence apart from the resource that contains them - they cannot be identified independently, and nor can they have their own independent transaction scope. +# + meta - The metadata about the resource. This is content that is maintained by the infrastructure. Changes to the content might not always be associated with version changes to the resource. +# + implicitRules - A reference to a set of rules that were followed when the resource was constructed, and which must be understood when processing the content. Often, this is a reference to an implementation guide that defines the special rules along with other profiles etc. +# + location - Where the activity occurred, if relevant. +# + id - The logical id of the resource, as used in the URL for the resource. Once assigned, this value never changes. +# + text - A human-readable narrative that contains a summary of the resource and can be used to represent the content of the resource to a human. The narrative need not encode all the structured data, but is required to contain sufficient detail to make it 'clinically safe' for a human to just read the narrative. Resource definitions may define what content should be represented in the narrative to ensure clinical safety. +# + entity - An entity used in this activity. +# + occurredDateTime - The period during which the activity occurred. +# + policy - Policy or plan the activity was defined by. Typically, a single activity may have multiple applicable policy documents, such as patient consent, guarantor funding, etc. +@r4:ResourceDefinition { + resourceType: "Provenance", + baseType: r4:DomainResource, + profile: "http://hl7.org/fhir/us/davinci-hrex/StructureDefinition/hrex-provenance", + elements: { + "reason" : { + name: "reason", + dataType: r4:CodeableConcept, + min: 0, + max: int:MAX_VALUE, + isArray: true, + path: "Provenance.reason", + valueSet: "http://terminology.hl7.org/ValueSet/v3-PurposeOfUse" + }, + "agent" : { + name: "agent", + dataType: HRexProvenanceAgent, + min: 1, + max: int:MAX_VALUE, + isArray: true, + path: "Provenance.agent" + }, + "extension" : { + name: "extension", + dataType: r4:Extension, + min: 0, + max: int:MAX_VALUE, + isArray: true, + path: "Provenance.extension" + }, + "activity" : { + name: "activity", + dataType: r4:CodeableConcept, + min: 0, + max: 1, + isArray: false, + path: "Provenance.activity", + valueSet: "http://hl7.org/fhir/ValueSet/provenance-activity-type" + }, + "signature" : { + name: "signature", + dataType: r4:Signature, + min: 0, + max: int:MAX_VALUE, + isArray: true, + path: "Provenance.signature" + }, + "modifierExtension" : { + name: "modifierExtension", + dataType: r4:Extension, + min: 0, + max: int:MAX_VALUE, + isArray: true, + path: "Provenance.modifierExtension" + }, + "language" : { + name: "language", + dataType: r4:code, + min: 0, + max: 1, + isArray: false, + path: "Provenance.language", + valueSet: "http://hl7.org/fhir/ValueSet/languages" + }, + "occurredPeriod" : { + name: "occurredPeriod", + dataType: r4:Period, + min: 0, + max: 1, + isArray: false, + path: "Provenance.occurred[x]" + }, + "recorded" : { + name: "recorded", + dataType: r4:instant, + min: 1, + max: 1, + isArray: false, + path: "Provenance.recorded" + }, + "target" : { + name: "target", + dataType: HRexProvenanceTarget, + min: 1, + max: int:MAX_VALUE, + isArray: true, + path: "Provenance.target" + }, + "contained" : { + name: "contained", + dataType: r4:Resource, + min: 0, + max: int:MAX_VALUE, + isArray: true, + path: "Provenance.contained" + }, + "meta" : { + name: "meta", + dataType: r4:Meta, + min: 0, + max: 1, + isArray: false, + path: "Provenance.meta" + }, + "implicitRules" : { + name: "implicitRules", + dataType: r4:uri, + min: 0, + max: 1, + isArray: false, + path: "Provenance.implicitRules" + }, + "location" : { + name: "location", + dataType: r4:Reference, + min: 0, + max: 1, + isArray: false, + path: "Provenance.location" + }, + "id" : { + name: "id", + dataType: string, + min: 0, + max: 1, + isArray: false, + path: "Provenance.id" + }, + "text" : { + name: "text", + dataType: r4:Narrative, + min: 0, + max: 1, + isArray: false, + path: "Provenance.text" + }, + "entity" : { + name: "entity", + dataType: HRexProvenanceEntity, + min: 0, + max: int:MAX_VALUE, + isArray: true, + path: "Provenance.entity" + }, + "occurredDateTime" : { + name: "occurredDateTime", + dataType: r4:dateTime, + min: 0, + max: 1, + isArray: false, + path: "Provenance.occurred[x]" + }, + "policy" : { + name: "policy", + dataType: r4:uri, + min: 0, + max: int:MAX_VALUE, + isArray: true, + path: "Provenance.policy" + } + }, + serializers: { + 'xml: r4:fhirResourceXMLSerializer, + 'json: r4:fhirResourceJsonSerializer + } +} +public type HRexProvenance record {| + *r4:DomainResource; + + RESOURCE_NAME_HREXPROVENANCE resourceType = RESOURCE_NAME_HREXPROVENANCE; + + r4:CodeableConcept[] reason?; + @constraint:Array { + minLength: 1 + } + HRexProvenanceAgent[] agent; + r4:Extension[] extension?; + r4:CodeableConcept activity?; + r4:Signature[] signature?; + r4:Extension[] modifierExtension?; + r4:code language?; + r4:Period occurredPeriod?; + r4:instant recorded; + @constraint:Array { + minLength: 1 + } + HRexProvenanceTarget[] target; + r4:Resource[] contained?; + r4:Meta meta?; + r4:uri implicitRules?; + r4:Reference location?; + string id?; + r4:Narrative text?; + HRexProvenanceEntity[] entity?; + r4:dateTime occurredDateTime?; + r4:uri[] policy?; + r4:Element ...; +|}; + +# FHIR HRexProvenanceEntity datatype record. +# +# + extension - May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. +# + role - How the entity was used during the activity. +# + what - Identity of the Entity used. May be a logical or physical uri and maybe absolute or relative. +# + modifierExtension - May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions. Modifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself). +# + id - Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces. +@r4:DataTypeDefinition { + name: "HRexProvenanceEntity", + baseType: (), + elements: { + "extension": { + name: "extension", + dataType: r4:Extension, + min: 0, + max: int:MAX_VALUE, + isArray: true, + description: "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension.", + path: "Provenance.entity.extension" + }, + "role": { + name: "role", + dataType: HRexProvenanceEntityRole, + min: 1, + max: 1, + isArray: false, + description: "How the entity was used during the activity.", + path: "Provenance.entity.role" + }, + "what": { + name: "what", + dataType: r4:Reference, + min: 1, + max: 1, + isArray: false, + description: "Identity of the Entity used. May be a logical or physical uri and maybe absolute or relative.", + path: "Provenance.entity.what" + }, + "modifierExtension": { + name: "modifierExtension", + dataType: r4:Extension, + min: 0, + max: int:MAX_VALUE, + isArray: true, + description: "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions. Modifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself).", + path: "Provenance.entity.modifierExtension" + }, + "id": { + name: "id", + dataType: string, + min: 0, + max: 1, + isArray: false, + description: "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces.", + path: "Provenance.entity.id" + } + }, + serializers: { + 'xml: r4:complexDataTypeXMLSerializer, + 'json: r4:complexDataTypeJsonSerializer + } +} +public type HRexProvenanceEntity record {| + *r4:BackboneElement; + + r4:Extension[] extension?; + HRexProvenanceEntityRole role; + r4:Reference what; + r4:Extension[] modifierExtension?; + string id?; +|}; + +# FHIR HRexProvenanceAgentTypeCoding datatype record. +# +# + system - The identification of the code system that defines the meaning of the symbol in the code. +# + code - A symbol in syntax defined by the system. The symbol may be a predefined code or an expression in a syntax defined by the coding system (e.g. post-coordination). +@r4:DataTypeDefinition { + name: "HRexProvenanceAgentTypeCoding", + baseType: (), + elements: { + "system": { + name: "system", + dataType: r4:uri, + min: 1, + max: 1, + isArray: false, + description: "The identification of the code system that defines the meaning of the symbol in the code.", + path: "Provenance.agent.type.coding.system" + }, + "code": { + name: "code", + dataType: r4:code, + min: 1, + max: 1, + isArray: false, + description: "A symbol in syntax defined by the system. The symbol may be a predefined code or an expression in a syntax defined by the coding system (e.g. post-coordination).", + path: "Provenance.agent.type.coding.code" + } + }, + serializers: { + 'xml: r4:complexDataTypeXMLSerializer, + 'json: r4:complexDataTypeJsonSerializer + } +} +public type HRexProvenanceAgentTypeCoding record {| + *r4:Coding; + + r4:uri system = "http://terminology.hl7.org/CodeSystem/provenance-participant-type"; + r4:code code = "author"; +|}; + +# FHIR HRexProvenanceAgentTypeCodingOne datatype record. +# +# + system - The identification of the code system that defines the meaning of the symbol in the code. +# + code - A symbol in syntax defined by the system. The symbol may be a predefined code or an expression in a syntax defined by the coding system (e.g. post-coordination). +@r4:DataTypeDefinition { + name: "HRexProvenanceAgentTypeCodingOne", + baseType: (), + elements: { + "system": { + name: "system", + dataType: r4:uri, + min: 1, + max: 1, + isArray: false, + description: "The identification of the code system that defines the meaning of the symbol in the code.", + path: "Provenance.agent.type.coding.system" + }, + "code": { + name: "code", + dataType: r4:code, + min: 1, + max: 1, + isArray: false, + description: "A symbol in syntax defined by the system. The symbol may be a predefined code or an expression in a syntax defined by the coding system (e.g. post-coordination).", + path: "Provenance.agent.type.coding.code" + } + }, + serializers: { + 'xml: r4:complexDataTypeXMLSerializer, + 'json: r4:complexDataTypeJsonSerializer + } +} +public type HRexProvenanceAgentTypeCodingOne record {| + *r4:Coding; + + r4:uri system = "http://hl7.org/fhir/us/core/CodeSystem/us-core-provenance-participant-type"; + r4:code code = "transmitter"; +|}; + +# FHIR HRexProvenanceAgentProvenanceTransmitter datatype record. +# +# + extension - May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. +# + role - The function of the agent with respect to the activity. The security role enabling the agent with respect to the activity. +# + modifierExtension - May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions. Modifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself). +# + onBehalfOf - The individual, device, or organization for whom the change was made. +# + id - Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces. +# + 'type - The participation the agent had with respect to the activity. +# + who - The individual, device or organization that participated in the event. +@r4:DataTypeDefinition { + name: "HRexProvenanceAgentProvenanceTransmitter", + baseType: (), + elements: { + "extension": { + name: "extension", + dataType: r4:Extension, + min: 0, + max: int:MAX_VALUE, + isArray: true, + description: "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension.", + path: "Provenance.agent.extension" + }, + "role": { + name: "role", + dataType: r4:CodeableConcept, + min: 0, + max: int:MAX_VALUE, + isArray: true, + description: "The function of the agent with respect to the activity. The security role enabling the agent with respect to the activity.", + path: "Provenance.agent.role" + }, + "modifierExtension": { + name: "modifierExtension", + dataType: r4:Extension, + min: 0, + max: int:MAX_VALUE, + isArray: true, + description: "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions. Modifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself).", + path: "Provenance.agent.modifierExtension" + }, + "onBehalfOf": { + name: "onBehalfOf", + dataType: r4:Reference, + min: 0, + max: 1, + isArray: false, + description: "The individual, device, or organization for whom the change was made.", + path: "Provenance.agent.onBehalfOf" + }, + "id": { + name: "id", + dataType: string, + min: 0, + max: 1, + isArray: false, + description: "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces.", + path: "Provenance.agent.id" + }, + "type": { + name: "type", + dataType: HRexProvenanceAgentTypeOne, + min: 1, + max: 1, + isArray: false, + description: "The participation the agent had with respect to the activity.", + path: "Provenance.agent.type" + }, + "who": { + name: "who", + dataType: r4:Reference, + min: 1, + max: 1, + isArray: false, + description: "The individual, device or organization that participated in the event.", + path: "Provenance.agent.who" + } + }, + serializers: { + 'xml: r4:complexDataTypeXMLSerializer, + 'json: r4:complexDataTypeJsonSerializer + } +} +public type HRexProvenanceAgentProvenanceTransmitter record {| + *HRexProvenanceAgent; + + r4:Extension[] extension?; + r4:CodeableConcept[] role?; + r4:Extension[] modifierExtension?; + r4:Reference onBehalfOf?; + string id?; + HRexProvenanceAgentTypeOne 'type; + r4:Reference who; +|}; + +# FHIR HRexProvenanceAgentProvenanceAuthor datatype record. +# +# + extension - May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. +# + role - The function of the agent with respect to the activity. The security role enabling the agent with respect to the activity. +# + modifierExtension - May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions. Modifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself). +# + onBehalfOf - The individual, device, or organization for whom the change was made. +# + id - Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces. +# + 'type - The participation the agent had with respect to the activity. +# + who - The individual, device or organization that participated in the event. +@r4:DataTypeDefinition { + name: "HRexProvenanceAgentProvenanceAuthor", + baseType: (), + elements: { + "extension": { + name: "extension", + dataType: r4:Extension, + min: 0, + max: int:MAX_VALUE, + isArray: true, + description: "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension.", + path: "Provenance.agent.extension" + }, + "role": { + name: "role", + dataType: r4:CodeableConcept, + min: 0, + max: int:MAX_VALUE, + isArray: true, + description: "The function of the agent with respect to the activity. The security role enabling the agent with respect to the activity.", + path: "Provenance.agent.role" + }, + "modifierExtension": { + name: "modifierExtension", + dataType: r4:Extension, + min: 0, + max: int:MAX_VALUE, + isArray: true, + description: "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions. Modifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself).", + path: "Provenance.agent.modifierExtension" + }, + "onBehalfOf": { + name: "onBehalfOf", + dataType: r4:Reference, + min: 0, + max: 1, + isArray: false, + description: "The individual, device, or organization for whom the change was made.", + path: "Provenance.agent.onBehalfOf" + }, + "id": { + name: "id", + dataType: string, + min: 0, + max: 1, + isArray: false, + description: "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces.", + path: "Provenance.agent.id" + }, + "type": { + name: "type", + dataType: HRexProvenanceAgentType, + min: 1, + max: 1, + isArray: false, + description: "The participation the agent had with respect to the activity.", + path: "Provenance.agent.type" + }, + "who": { + name: "who", + dataType: r4:Reference, + min: 1, + max: 1, + isArray: false, + description: "The individual, device or organization that participated in the event.", + path: "Provenance.agent.who" + } + }, + serializers: { + 'xml: r4:complexDataTypeXMLSerializer, + 'json: r4:complexDataTypeJsonSerializer + } +} +public type HRexProvenanceAgentProvenanceAuthor record {| + *HRexProvenanceAgent; + + r4:Extension[] extension?; + r4:CodeableConcept[] role?; + r4:Extension[] modifierExtension?; + r4:Reference onBehalfOf?; + string id?; + HRexProvenanceAgentType 'type; + r4:Reference who; +|}; + +# FHIR HRexProvenanceAgent datatype record. +# +# + extension - May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. +# + role - The function of the agent with respect to the activity. The security role enabling the agent with respect to the activity. +# + modifierExtension - May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions. Modifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself). +# + onBehalfOf - The individual, device, or organization for whom the change was made. +# + id - Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces. +# + 'type - The participation the agent had with respect to the activity. +# + who - The individual, device or organization that participated in the event. +@r4:DataTypeDefinition { + name: "HRexProvenanceAgent", + baseType: (), + elements: { + "extension": { + name: "extension", + dataType: r4:Extension, + min: 0, + max: int:MAX_VALUE, + isArray: true, + description: "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension.", + path: "Provenance.agent.extension" + }, + "role": { + name: "role", + dataType: r4:CodeableConcept, + min: 0, + max: int:MAX_VALUE, + isArray: true, + description: "The function of the agent with respect to the activity. The security role enabling the agent with respect to the activity.", + path: "Provenance.agent.role" + }, + "modifierExtension": { + name: "modifierExtension", + dataType: r4:Extension, + min: 0, + max: int:MAX_VALUE, + isArray: true, + description: "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions. Modifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself).", + path: "Provenance.agent.modifierExtension" + }, + "onBehalfOf": { + name: "onBehalfOf", + dataType: r4:Reference, + min: 0, + max: 1, + isArray: false, + description: "The individual, device, or organization for whom the change was made.", + path: "Provenance.agent.onBehalfOf" + }, + "id": { + name: "id", + dataType: string, + min: 0, + max: 1, + isArray: false, + description: "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces.", + path: "Provenance.agent.id" + }, + "type": { + name: "type", + dataType: r4:CodeableConcept, + min: 0, + max: 1, + isArray: false, + description: "The participation the agent had with respect to the activity.", + path: "Provenance.agent.type" + }, + "who": { + name: "who", + dataType: r4:Reference, + min: 1, + max: 1, + isArray: false, + description: "The individual, device or organization that participated in the event.", + path: "Provenance.agent.who" + } + }, + serializers: { + 'xml: r4:complexDataTypeXMLSerializer, + 'json: r4:complexDataTypeJsonSerializer + } +} +public type HRexProvenanceAgent record {| + *r4:BackboneElement; + + r4:Extension[] extension?; + r4:CodeableConcept[] role?; + r4:Extension[] modifierExtension?; + r4:Reference onBehalfOf?; + string id?; + r4:CodeableConcept 'type?; + r4:Reference who; +|}; + +# FHIR HRexProvenanceAgentType datatype record. +# +# + coding - A reference to a code defined by a terminology system. +@r4:DataTypeDefinition { + name: "HRexProvenanceAgentType", + baseType: (), + elements: { + "coding": { + name: "coding", + dataType: HRexProvenanceAgentTypeCoding, + min: 1, + max: int:MAX_VALUE, + isArray: true, + description: "A reference to a code defined by a terminology system.", + path: "Provenance.agent.type.coding" + } + }, + serializers: { + 'xml: r4:complexDataTypeXMLSerializer, + 'json: r4:complexDataTypeJsonSerializer + } +} +public type HRexProvenanceAgentType record {| + *r4:CodeableConcept; + + @constraint:Array { + minLength: 1 + } + HRexProvenanceAgentTypeCoding[] coding; +|}; + +# HRexProvenanceEntityRole enum +public enum HRexProvenanceEntityRole { + CODE_ROLE_REMOVAL = "removal", + CODE_ROLE_DERIVATION = "derivation", + CODE_ROLE_SOURCE = "source", + CODE_ROLE_QUOTATION = "quotation", + CODE_ROLE_REVISION = "revision" +} + +# FHIR HRexProvenanceTarget datatype record. +# +# + reference - A reference to a location at which the other resource is found. The reference may be a relative reference, in which case it is relative to the service base URL, or an absolute URL that resolves to the location where the resource is found. The reference may be version specific or not. If the reference is not to a FHIR RESTful server, then it should be assumed to be version specific. Internal fragment references (start with '#') refer to contained resources. +# + identifier - An identifier for the target resource. This is used when there is no way to reference the other resource directly, either because the entity it represents is not available through a FHIR server, or because there is no way for the author of the resource to convert a known identifier to an actual location. There is no requirement that a Reference.identifier point to something that is actually exposed as a FHIR instance, but it SHALL point to a business concept that would be expected to be exposed as a FHIR instance, and that instance would need to be of a FHIR resource type allowed by the reference. +# + extension - May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. +# + display - Plain text narrative that identifies the resource in addition to the resource reference. +# + id - Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces. +# + 'type - The expected type of the target of the reference. If both Reference.type and Reference.reference are populated and Reference.reference is a FHIR URL, both SHALL be consistent. The type is the Canonical URL of Resource Definition that is the type this reference refers to. References are URLs that are relative to http://hl7.org/fhir/StructureDefinition/ e.g. 'Patient' is a reference to http://hl7.org/fhir/StructureDefinition/Patient. Absolute URLs are only allowed for logical models (and can only be used in references in logical models, not resources). +@r4:DataTypeDefinition { + name: "HRexProvenanceTarget", + baseType: (), + elements: { + "reference": { + name: "reference", + dataType: string, + min: 1, + max: 1, + isArray: false, + description: "A reference to a location at which the other resource is found. The reference may be a relative reference, in which case it is relative to the service base URL, or an absolute URL that resolves to the location where the resource is found. The reference may be version specific or not. If the reference is not to a FHIR RESTful server, then it should be assumed to be version specific. Internal fragment references (start with '#') refer to contained resources.", + path: "Provenance.target.reference" + }, + "identifier": { + name: "identifier", + dataType: r4:Identifier, + min: 0, + max: 1, + isArray: false, + description: "An identifier for the target resource. This is used when there is no way to reference the other resource directly, either because the entity it represents is not available through a FHIR server, or because there is no way for the author of the resource to convert a known identifier to an actual location. There is no requirement that a Reference.identifier point to something that is actually exposed as a FHIR instance, but it SHALL point to a business concept that would be expected to be exposed as a FHIR instance, and that instance would need to be of a FHIR resource type allowed by the reference.", + path: "Provenance.target.identifier" + }, + "extension": { + name: "extension", + dataType: r4:Extension, + min: 0, + max: int:MAX_VALUE, + isArray: true, + description: "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension.", + path: "Provenance.target.extension" + }, + "display": { + name: "display", + dataType: string, + min: 0, + max: 1, + isArray: false, + description: "Plain text narrative that identifies the resource in addition to the resource reference.", + path: "Provenance.target.display" + }, + "id": { + name: "id", + dataType: string, + min: 0, + max: 1, + isArray: false, + description: "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces.", + path: "Provenance.target.id" + }, + "type": { + name: "type", + dataType: r4:uri, + min: 0, + max: 1, + isArray: false, + description: "The expected type of the target of the reference. If both Reference.type and Reference.reference are populated and Reference.reference is a FHIR URL, both SHALL be consistent. The type is the Canonical URL of Resource Definition that is the type this reference refers to. References are URLs that are relative to http://hl7.org/fhir/StructureDefinition/ e.g. 'Patient' is a reference to http://hl7.org/fhir/StructureDefinition/Patient. Absolute URLs are only allowed for logical models (and can only be used in references in logical models, not resources).", + path: "Provenance.target.type" + } + }, + serializers: { + 'xml: r4:complexDataTypeXMLSerializer, + 'json: r4:complexDataTypeJsonSerializer + } +} +public type HRexProvenanceTarget record {| + *r4:Reference; + + string reference; + r4:Identifier identifier?; + r4:Extension[] extension?; + string display?; + string id?; + r4:uri 'type?; +|}; + +# FHIR HRexProvenanceAgentTypeOne datatype record. +# +# + coding - A reference to a code defined by a terminology system. +@r4:DataTypeDefinition { + name: "HRexProvenanceAgentTypeOne", + baseType: (), + elements: { + "coding": { + name: "coding", + dataType: HRexProvenanceAgentTypeCodingOne, + min: 1, + max: int:MAX_VALUE, + isArray: true, + description: "A reference to a code defined by a terminology system.", + path: "Provenance.agent.type.coding" + } + }, + serializers: { + 'xml: r4:complexDataTypeXMLSerializer, + 'json: r4:complexDataTypeJsonSerializer + } +} +public type HRexProvenanceAgentTypeOne record {| + *r4:CodeableConcept; + + @constraint:Array { + minLength: 1 + } + HRexProvenanceAgentTypeCodingOne[] coding; +|}; + diff --git a/davincihrex100/resource_hrex_task_data_request.bal b/davincihrex100/resource_hrex_task_data_request.bal new file mode 100644 index 00000000..e5b45319 --- /dev/null +++ b/davincihrex100/resource_hrex_task_data_request.bal @@ -0,0 +1,2392 @@ +// Copyright (c) 2023, WSO2 LLC. (http://www.wso2.com). + +// WSO2 LLC. licenses this file to you under the Apache License, +// Version 2.0 (the "License"); you may not use this file except +// in compliance with the License. +// You may obtain a copy of the License at + +// http://www.apache.org/licenses/LICENSE-2.0 + +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. + +// AUTO-GENERATED FILE. +// This file is auto-generated by Ballerina. + +import ballerina/constraint; +import ballerinax/health.fhir.r4; + +public const string PROFILE_BASE_HREXTASKDATAREQUEST = "http://hl7.org/fhir/us/davinci-hrex/StructureDefinition/hrex-task-data-request"; +public const RESOURCE_NAME_HREXTASKDATAREQUEST = "Task"; + +# FHIR HRexTaskDataRequest resource record. +# +# + resourceType - The type of the resource describes +# + insurance - Insurance plans, coverage extensions, pre-authorizations and/or pre-determinations that may be relevant to the Task. +# + note - Free-text information captured about the task as it progresses. +# + partOf - Task that this particular task is part of. +# + extension - May be used to represent additional information that is not part of the basic definition of the resource. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. +# + modifierExtension - May be used to represent additional information that is not part of the basic definition of the resource and that modifies the understanding of the element that contains it and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer is allowed to define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions. Modifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself). +# + for - The entity who benefits from the performance of the service specified in the task (e.g., the patient). +# + description - A free-text description of what is to be performed. +# + focus - The request being actioned or the resource being manipulated by this task. +# + reasonReference - A resource reference indicating why this task needs to be performed. +# + language - The base language in which the resource is written. +# + instantiatesUri - The URL pointing to an *externally* maintained protocol, guideline, orderset or other definition that is adhered to in whole or in part by this Task. +# + relevantHistory - Links to Provenance records for past versions of this Task that identify key state transitions or updates that are likely to be relevant to a user looking at the current version of the task. +# + output - Outputs produced by the Task. +# * output Slicings +# 1) HRexTaskDataRequestOutputData: Requested data +# - min = 0 +# - max = * +# +# + statusReason - An explanation as to why this task is held, failed, was refused, etc. +# + executionPeriod - Identifies the time action was first taken against the task (start) and/or the time final action was taken against the task prior to marking it as completed (end). +# + id - The logical id of the resource, as used in the URL for the resource. Once assigned, this value never changes. +# + reasonCode - A description or code indicating why this task needs to be performed. +# + text - A human-readable narrative that contains a summary of the resource and can be used to represent the content of the resource to a human. The narrative need not encode all the structured data, but is required to contain sufficient detail to make it 'clinically safe' for a human to just read the narrative. Resource definitions may define what content should be represented in the narrative to ensure clinical safety. +# + basedOn - BasedOn refers to a higher-level authorization that triggered the creation of the task. It references a 'request' resource such as a ServiceRequest, MedicationRequest, ServiceRequest, CarePlan, etc. which is distinct from the 'request' resource the task is seeking to fulfill. This latter resource is referenced by FocusOn. For example, based on a ServiceRequest (= BasedOn), a task is created to fulfill a procedureRequest ( = FocusOn ) to collect a specimen from a patient. +# + owner - Individual organization or Device currently responsible for task execution. +# + requester - The creator of the task. +# + identifier - The business identifier for this task. +# + authoredOn - The date and time this task was created. +# + businessStatus - Contains business-specific nuances of the business state. +# + encounter - The healthcare event (e.g. a patient and healthcare provider interaction) during which this task was created. +# + instantiatesCanonical - The URL pointing to a *FHIR*-defined protocol, guideline, orderset or other definition that is adhered to in whole or in part by this Task. +# + priority - Indicates how quickly the Task should be addressed with respect to other requests. +# + intent - Indicates the 'level' of actionability associated with the Task, i.e. i+R[9]Cs this a proposed task, a planned task, an actionable task, etc. +# + performerType - The kind of participant that should perform the task. +# + input - Additional information that may be needed in the execution of the task. +# * input Slicings +# 1) HRexTaskDataRequestInputCode: Requested data code +# - min = 0 +# - max = 1 +# +# 2) HRexTaskDataRequestInputQuery: Requested query +# - min = 0 +# - max = 1 +# +# + contained - These resources do not have an independent existence apart from the resource that contains them - they cannot be identified independently, and nor can they have their own independent transaction scope. +# + meta - The metadata about the resource. This is content that is maintained by the infrastructure. Changes to the content might not always be associated with version changes to the resource. +# + restriction - If the Task.focus is a request resource and the task is seeking fulfillment (i.e. is asking for the request to be actioned), this element identifies any limitations on what parts of the referenced request should be actioned. +# + implicitRules - A reference to a set of rules that were followed when the resource was constructed, and which must be understood when processing the content. Often, this is a reference to an implementation guide that defines the special rules along with other profiles etc. +# + location - Principal physical location where the this task is performed. +# + lastModified - The date and time of last modification to this task. +# + groupIdentifier - An identifier that links together multiple tasks and other requests that were created in the same context. +# + status - The current status of the task. +@r4:ResourceDefinition { + resourceType: "Task", + baseType: r4:DomainResource, + profile: "http://hl7.org/fhir/us/davinci-hrex/StructureDefinition/hrex-task-data-request", + elements: { + "insurance" : { + name: "insurance", + dataType: r4:Reference, + min: 0, + max: int:MAX_VALUE, + isArray: true, + path: "Task.insurance" + }, + "note" : { + name: "note", + dataType: r4:Annotation, + min: 0, + max: int:MAX_VALUE, + isArray: true, + path: "Task.note" + }, + "partOf" : { + name: "partOf", + dataType: r4:Reference, + min: 0, + max: int:MAX_VALUE, + isArray: true, + path: "Task.partOf" + }, + "extension" : { + name: "extension", + dataType: r4:Extension, + min: 0, + max: int:MAX_VALUE, + isArray: true, + path: "Task.extension" + }, + "modifierExtension" : { + name: "modifierExtension", + dataType: r4:Extension, + min: 0, + max: int:MAX_VALUE, + isArray: true, + path: "Task.modifierExtension" + }, + "for" : { + name: "for", + dataType: r4:Reference, + min: 1, + max: 1, + isArray: false, + path: "Task.for" + }, + "description" : { + name: "description", + dataType: string, + min: 0, + max: 1, + isArray: false, + path: "Task.description" + }, + "focus" : { + name: "focus", + dataType: r4:Reference, + min: 0, + max: 0, + isArray: false, + path: "Task.focus" + }, + "reasonReference" : { + name: "reasonReference", + dataType: r4:Reference, + min: 0, + max: 1, + isArray: false, + path: "Task.reasonReference" + }, + "language" : { + name: "language", + dataType: r4:code, + min: 0, + max: 1, + isArray: false, + path: "Task.language", + valueSet: "http://hl7.org/fhir/ValueSet/languages" + }, + "instantiatesUri" : { + name: "instantiatesUri", + dataType: r4:uri, + min: 0, + max: 1, + isArray: false, + path: "Task.instantiatesUri" + }, + "relevantHistory" : { + name: "relevantHistory", + dataType: r4:Reference, + min: 0, + max: int:MAX_VALUE, + isArray: true, + path: "Task.relevantHistory" + }, + "output" : { + name: "output", + dataType: HRexTaskDataRequestOutput, + min: 0, + max: int:MAX_VALUE, + isArray: true, + path: "Task.output" + }, + "statusReason" : { + name: "statusReason", + dataType: HRexTaskDataRequestStatusReason, + min: 0, + max: 1, + isArray: false, + path: "Task.statusReason" + }, + "executionPeriod" : { + name: "executionPeriod", + dataType: r4:Period, + min: 0, + max: 1, + isArray: false, + path: "Task.executionPeriod" + }, + "id" : { + name: "id", + dataType: string, + min: 0, + max: 1, + isArray: false, + path: "Task.id" + }, + "reasonCode" : { + name: "reasonCode", + dataType: HRexTaskDataRequestReasonCode, + min: 0, + max: 1, + isArray: false, + path: "Task.reasonCode" + }, + "text" : { + name: "text", + dataType: r4:Narrative, + min: 0, + max: 1, + isArray: false, + path: "Task.text" + }, + "basedOn" : { + name: "basedOn", + dataType: r4:Reference, + min: 0, + max: int:MAX_VALUE, + isArray: true, + path: "Task.basedOn" + }, + "owner" : { + name: "owner", + dataType: r4:Reference, + min: 1, + max: 1, + isArray: false, + path: "Task.owner" + }, + "requester" : { + name: "requester", + dataType: r4:Reference, + min: 1, + max: 1, + isArray: false, + path: "Task.requester" + }, + "identifier" : { + name: "identifier", + dataType: r4:Identifier, + min: 0, + max: int:MAX_VALUE, + isArray: true, + path: "Task.identifier" + }, + "authoredOn" : { + name: "authoredOn", + dataType: r4:dateTime, + min: 1, + max: 1, + isArray: false, + path: "Task.authoredOn" + }, + "businessStatus" : { + name: "businessStatus", + dataType: HRexTaskDataRequestBusinessStatus, + min: 0, + max: 1, + isArray: false, + path: "Task.businessStatus" + }, + "encounter" : { + name: "encounter", + dataType: r4:Reference, + min: 0, + max: 1, + isArray: false, + path: "Task.encounter" + }, + "instantiatesCanonical" : { + name: "instantiatesCanonical", + dataType: r4:canonical, + min: 0, + max: 1, + isArray: false, + path: "Task.instantiatesCanonical" + }, + "priority" : { + name: "priority", + dataType: HRexTaskDataRequestPriority, + min: 0, + max: 1, + isArray: false, + path: "Task.priority", + valueSet: "http://hl7.org/fhir/ValueSet/request-priority|4.0.1" + }, + "intent" : { + name: "intent", + dataType: HRexTaskDataRequestIntent, + min: 1, + max: 1, + isArray: false, + path: "Task.intent", + valueSet: "http://hl7.org/fhir/ValueSet/task-intent|4.0.1" + }, + "performerType" : { + name: "performerType", + dataType: r4:CodeableConcept, + min: 0, + max: int:MAX_VALUE, + isArray: true, + path: "Task.performerType", + valueSet: "http://hl7.org/fhir/ValueSet/performer-role" + }, + "input" : { + name: "input", + dataType: HRexTaskDataRequestInput, + min: 1, + max: int:MAX_VALUE, + isArray: true, + path: "Task.input" + }, + "contained" : { + name: "contained", + dataType: r4:Resource, + min: 0, + max: int:MAX_VALUE, + isArray: true, + path: "Task.contained" + }, + "meta" : { + name: "meta", + dataType: r4:Meta, + min: 0, + max: 1, + isArray: false, + path: "Task.meta" + }, + "restriction" : { + name: "restriction", + dataType: HRexTaskDataRequestRestriction, + min: 0, + max: 1, + isArray: false, + path: "Task.restriction" + }, + "implicitRules" : { + name: "implicitRules", + dataType: r4:uri, + min: 0, + max: 1, + isArray: false, + path: "Task.implicitRules" + }, + "location" : { + name: "location", + dataType: r4:Reference, + min: 0, + max: 1, + isArray: false, + path: "Task.location" + }, + "lastModified" : { + name: "lastModified", + dataType: r4:dateTime, + min: 0, + max: 1, + isArray: false, + path: "Task.lastModified" + }, + "groupIdentifier" : { + name: "groupIdentifier", + dataType: r4:Identifier, + min: 0, + max: 1, + isArray: false, + path: "Task.groupIdentifier" + }, + "status" : { + name: "status", + dataType: HRexTaskDataRequestStatus, + min: 1, + max: 1, + isArray: false, + path: "Task.status", + valueSet: "http://hl7.org/fhir/us/davinci-hrex/ValueSet/hrex-task-status" + } + }, + serializers: { + 'xml: r4:fhirResourceXMLSerializer, + 'json: r4:fhirResourceJsonSerializer + } +} +public type HRexTaskDataRequest record {| + *r4:DomainResource; + + RESOURCE_NAME_HREXTASKDATAREQUEST resourceType = RESOURCE_NAME_HREXTASKDATAREQUEST; + + r4:Reference[] insurance?; + r4:Annotation[] note?; + r4:Reference[] partOf?; + r4:Extension[] extension?; + r4:Extension[] modifierExtension?; + r4:Reference for; + string description?; + r4:Reference focus?; + r4:Reference reasonReference?; + r4:code language?; + r4:uri instantiatesUri?; + r4:Reference[] relevantHistory?; + HRexTaskDataRequestOutput[] output?; + HRexTaskDataRequestStatusReason statusReason?; + r4:Period executionPeriod?; + string id?; + HRexTaskDataRequestReasonCode reasonCode?; + r4:Narrative text?; + r4:Reference[] basedOn?; + r4:Reference owner; + r4:Reference requester; + r4:Identifier[] identifier?; + r4:dateTime authoredOn; + HRexTaskDataRequestBusinessStatus businessStatus?; + r4:Reference encounter?; + r4:canonical instantiatesCanonical?; + HRexTaskDataRequestPriority priority?; + HRexTaskDataRequestIntent intent; + r4:CodeableConcept[] performerType?; + @constraint:Array { + minLength: 1 + } + HRexTaskDataRequestInput[] input; + r4:Resource[] contained?; + r4:Meta meta?; + HRexTaskDataRequestRestriction restriction?; + r4:uri implicitRules?; + r4:Reference location?; + r4:dateTime lastModified?; + r4:Identifier groupIdentifier?; + HRexTaskDataRequestStatus status; + r4:Element ...; +|}; + +# FHIR HRexTaskDataRequestBusinessStatus datatype record. +# +# + coding - A reference to a code defined by a terminology system. +# + extension - May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. +# + id - Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces. +# + text - A human language representation of the concept as seen/selected/uttered by the user who entered the data and/or which represents the intended meaning of the user. +@r4:DataTypeDefinition { + name: "HRexTaskDataRequestBusinessStatus", + baseType: (), + elements: { + "coding": { + name: "coding", + dataType: r4:Coding, + min: 0, + max: int:MAX_VALUE, + isArray: true, + description: "A reference to a code defined by a terminology system.", + path: "Task.businessStatus.coding" + }, + "extension": { + name: "extension", + dataType: r4:Extension, + min: 0, + max: int:MAX_VALUE, + isArray: true, + description: "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension.", + path: "Task.businessStatus.extension" + }, + "id": { + name: "id", + dataType: string, + min: 0, + max: 1, + isArray: false, + description: "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces.", + path: "Task.businessStatus.id" + }, + "text": { + name: "text", + dataType: string, + min: 1, + max: 1, + isArray: false, + description: "A human language representation of the concept as seen/selected/uttered by the user who entered the data and/or which represents the intended meaning of the user.", + path: "Task.businessStatus.text" + } + }, + serializers: { + 'xml: r4:complexDataTypeXMLSerializer, + 'json: r4:complexDataTypeJsonSerializer + } +} +public type HRexTaskDataRequestBusinessStatus record {| + *r4:CodeableConcept; + + r4:Coding[] coding?; + r4:Extension[] extension?; + string id?; + string text; +|}; + +# HRexTaskDataRequestStatus enum +public enum HRexTaskDataRequestStatus { + CODE_STATUS_REQUESTED = "requested", + CODE_STATUS_DRAFT = "draft", + CODE_STATUS_ACCEPTED = "accepted", + CODE_STATUS_RECEIVED = "received" +} + +# FHIR HRexTaskDataRequestRestriction datatype record. +# +# + extension - May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. +# + period - Over what time-period is fulfillment sought. +# + modifierExtension - May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions. Modifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself). +# + recipient - For requests that are targeted to more than on potential recipient/target, for whom is fulfillment sought? +# + id - Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces. +# + repetitions - Indicates the number of times the requested action should occur. +@r4:DataTypeDefinition { + name: "HRexTaskDataRequestRestriction", + baseType: (), + elements: { + "extension": { + name: "extension", + dataType: r4:Extension, + min: 0, + max: int:MAX_VALUE, + isArray: true, + description: "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension.", + path: "Task.restriction.extension" + }, + "period": { + name: "period", + dataType: r4:Period, + min: 0, + max: 1, + isArray: false, + description: "Over what time-period is fulfillment sought.", + path: "Task.restriction.period" + }, + "modifierExtension": { + name: "modifierExtension", + dataType: r4:Extension, + min: 0, + max: int:MAX_VALUE, + isArray: true, + description: "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions. Modifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself).", + path: "Task.restriction.modifierExtension" + }, + "recipient": { + name: "recipient", + dataType: r4:Reference, + min: 0, + max: int:MAX_VALUE, + isArray: true, + description: "For requests that are targeted to more than on potential recipient/target, for whom is fulfillment sought?", + path: "Task.restriction.recipient" + }, + "id": { + name: "id", + dataType: string, + min: 0, + max: 1, + isArray: false, + description: "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces.", + path: "Task.restriction.id" + }, + "repetitions": { + name: "repetitions", + dataType: r4:positiveInt, + min: 0, + max: 1, + isArray: false, + description: "Indicates the number of times the requested action should occur.", + path: "Task.restriction.repetitions" + } + }, + serializers: { + 'xml: r4:complexDataTypeXMLSerializer, + 'json: r4:complexDataTypeJsonSerializer + } +} +public type HRexTaskDataRequestRestriction record {| + *r4:BackboneElement; + + r4:Extension[] extension?; + r4:Period period?; + r4:Extension[] modifierExtension?; + r4:Reference[] recipient?; + string id?; + r4:positiveInt repetitions?; +|}; + +# FHIR HRexTaskDataRequestInput datatype record. +# +# + valueTime - The value of the input parameter as a basic type. +# + valueTriggerDefinition - The value of the input parameter as a basic type. +# + valueMoney - The value of the input parameter as a basic type. +# + valueSignature - The value of the input parameter as a basic type. +# + modifierExtension - May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions. Modifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself). +# + 'type - A code or description indicating how the input is intended to be used as part of the task execution. +# + valueUuid - The value of the input parameter as a basic type. +# + valueRatio - The value of the input parameter as a basic type. +# + valueParameterDefinition - The value of the input parameter as a basic type. +# + id - Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces. +# + valueInteger - The value of the input parameter as a basic type. +# + valueUnsignedInt - The value of the input parameter as a basic type. +# + valueQuantity - The value of the input parameter as a basic type. +# + valueCanonical - The value of the input parameter as a basic type. +# + valueCount - The value of the input parameter as a basic type. +# + valueId - The value of the input parameter as a basic type. +# + valueCode - The value of the input parameter as a basic type. +# + valueAddress - The value of the input parameter as a basic type. +# + valueContactPoint - The value of the input parameter as a basic type. +# + valuePeriod - The value of the input parameter as a basic type. +# + valueSampledData - The value of the input parameter as a basic type. +# + valueTiming - The value of the input parameter as a basic type. +# + valueInstant - The value of the input parameter as a basic type. +# + valueAge - The value of the input parameter as a basic type. +# + valueDosage - The value of the input parameter as a basic type. +# + valueBase64Binary - The value of the input parameter as a basic type. +# + valueBoolean - The value of the input parameter as a basic type. +# + valueCoding - The value of the input parameter as a basic type. +# + extension - May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. +# + valueIdentifier - The value of the input parameter as a basic type. +# + valueExpression - The value of the input parameter as a basic type. +# + valueReference - The value of the input parameter as a basic type. +# + valueRange - The value of the input parameter as a basic type. +# + valueUri - The value of the input parameter as a basic type. +# + valueDistance - The value of the input parameter as a basic type. +# + valueUrl - The value of the input parameter as a basic type. +# + valueContactDetail - The value of the input parameter as a basic type. +# + valueMeta - The value of the input parameter as a basic type. +# + valueCodeableConcept - The value of the input parameter as a basic type. +# + valueMarkdown - The value of the input parameter as a basic type. +# + valueAttachment - The value of the input parameter as a basic type. +# + valueUsageContext - The value of the input parameter as a basic type. +# + valueDateTime - The value of the input parameter as a basic type. +# + valueHumanName - The value of the input parameter as a basic type. +# + valueRelatedArtifact - The value of the input parameter as a basic type. +# + valueDecimal - The value of the input parameter as a basic type. +# + valueDate - The value of the input parameter as a basic type. +# + valueOid - The value of the input parameter as a basic type. +# + valueContributor - The value of the input parameter as a basic type. +# + valueString - The value of the input parameter as a basic type. +# + valuePositiveInt - The value of the input parameter as a basic type. +# + valueDuration - The value of the input parameter as a basic type. +# + valueDataRequirement - The value of the input parameter as a basic type. +# + valueAnnotation - The value of the input parameter as a basic type. +@r4:DataTypeDefinition { + name: "HRexTaskDataRequestInput", + baseType: (), + elements: { + "valueTime": { + name: "valueTime", + dataType: r4:time, + min: 1, + max: 1, + isArray: false, + description: "The value of the input parameter as a basic type.", + path: "Task.input.value[x]" + }, + "valueTriggerDefinition": { + name: "valueTriggerDefinition", + dataType: r4:TriggerDefinition, + min: 1, + max: 1, + isArray: false, + description: "The value of the input parameter as a basic type.", + path: "Task.input.value[x]" + }, + "valueMoney": { + name: "valueMoney", + dataType: r4:Money, + min: 1, + max: 1, + isArray: false, + description: "The value of the input parameter as a basic type.", + path: "Task.input.value[x]" + }, + "valueSignature": { + name: "valueSignature", + dataType: r4:Signature, + min: 1, + max: 1, + isArray: false, + description: "The value of the input parameter as a basic type.", + path: "Task.input.value[x]" + }, + "modifierExtension": { + name: "modifierExtension", + dataType: r4:Extension, + min: 0, + max: int:MAX_VALUE, + isArray: true, + description: "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions. Modifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself).", + path: "Task.input.modifierExtension" + }, + "type": { + name: "type", + dataType: r4:CodeableConcept, + min: 1, + max: 1, + isArray: false, + description: "A code or description indicating how the input is intended to be used as part of the task execution.", + path: "Task.input.type" + }, + "valueUuid": { + name: "valueUuid", + dataType: r4:uuid, + min: 1, + max: 1, + isArray: false, + description: "The value of the input parameter as a basic type.", + path: "Task.input.value[x]" + }, + "valueRatio": { + name: "valueRatio", + dataType: r4:Ratio, + min: 1, + max: 1, + isArray: false, + description: "The value of the input parameter as a basic type.", + path: "Task.input.value[x]" + }, + "valueParameterDefinition": { + name: "valueParameterDefinition", + dataType: r4:ParameterDefinition, + min: 1, + max: 1, + isArray: false, + description: "The value of the input parameter as a basic type.", + path: "Task.input.value[x]" + }, + "id": { + name: "id", + dataType: string, + min: 0, + max: 1, + isArray: false, + description: "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces.", + path: "Task.input.id" + }, + "valueInteger": { + name: "valueInteger", + dataType: r4:integer, + min: 1, + max: 1, + isArray: false, + description: "The value of the input parameter as a basic type.", + path: "Task.input.value[x]" + }, + "valueUnsignedInt": { + name: "valueUnsignedInt", + dataType: r4:unsignedInt, + min: 1, + max: 1, + isArray: false, + description: "The value of the input parameter as a basic type.", + path: "Task.input.value[x]" + }, + "valueQuantity": { + name: "valueQuantity", + dataType: r4:Quantity, + min: 1, + max: 1, + isArray: false, + description: "The value of the input parameter as a basic type.", + path: "Task.input.value[x]" + }, + "valueCanonical": { + name: "valueCanonical", + dataType: r4:canonical, + min: 1, + max: 1, + isArray: false, + description: "The value of the input parameter as a basic type.", + path: "Task.input.value[x]" + }, + "valueCount": { + name: "valueCount", + dataType: r4:Count, + min: 1, + max: 1, + isArray: false, + description: "The value of the input parameter as a basic type.", + path: "Task.input.value[x]" + }, + "valueId": { + name: "valueId", + dataType: r4:id, + min: 1, + max: 1, + isArray: false, + description: "The value of the input parameter as a basic type.", + path: "Task.input.value[x]" + }, + "valueCode": { + name: "valueCode", + dataType: r4:code, + min: 1, + max: 1, + isArray: false, + description: "The value of the input parameter as a basic type.", + path: "Task.input.value[x]" + }, + "valueAddress": { + name: "valueAddress", + dataType: r4:Address, + min: 1, + max: 1, + isArray: false, + description: "The value of the input parameter as a basic type.", + path: "Task.input.value[x]" + }, + "valueContactPoint": { + name: "valueContactPoint", + dataType: r4:ContactPoint, + min: 1, + max: 1, + isArray: false, + description: "The value of the input parameter as a basic type.", + path: "Task.input.value[x]" + }, + "valuePeriod": { + name: "valuePeriod", + dataType: r4:Period, + min: 1, + max: 1, + isArray: false, + description: "The value of the input parameter as a basic type.", + path: "Task.input.value[x]" + }, + "valueSampledData": { + name: "valueSampledData", + dataType: r4:SampledData, + min: 1, + max: 1, + isArray: false, + description: "The value of the input parameter as a basic type.", + path: "Task.input.value[x]" + }, + "valueTiming": { + name: "valueTiming", + dataType: r4:Timing, + min: 1, + max: 1, + isArray: false, + description: "The value of the input parameter as a basic type.", + path: "Task.input.value[x]" + }, + "valueInstant": { + name: "valueInstant", + dataType: r4:instant, + min: 1, + max: 1, + isArray: false, + description: "The value of the input parameter as a basic type.", + path: "Task.input.value[x]" + }, + "valueAge": { + name: "valueAge", + dataType: r4:Age, + min: 1, + max: 1, + isArray: false, + description: "The value of the input parameter as a basic type.", + path: "Task.input.value[x]" + }, + "valueDosage": { + name: "valueDosage", + dataType: r4:Dosage, + min: 1, + max: 1, + isArray: false, + description: "The value of the input parameter as a basic type.", + path: "Task.input.value[x]" + }, + "valueBase64Binary": { + name: "valueBase64Binary", + dataType: r4:base64Binary, + min: 1, + max: 1, + isArray: false, + description: "The value of the input parameter as a basic type.", + path: "Task.input.value[x]" + }, + "valueBoolean": { + name: "valueBoolean", + dataType: boolean, + min: 1, + max: 1, + isArray: false, + description: "The value of the input parameter as a basic type.", + path: "Task.input.value[x]" + }, + "valueCoding": { + name: "valueCoding", + dataType: r4:Coding, + min: 1, + max: 1, + isArray: false, + description: "The value of the input parameter as a basic type.", + path: "Task.input.value[x]" + }, + "extension": { + name: "extension", + dataType: r4:Extension, + min: 0, + max: int:MAX_VALUE, + isArray: true, + description: "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension.", + path: "Task.input.extension" + }, + "valueIdentifier": { + name: "valueIdentifier", + dataType: r4:Identifier, + min: 1, + max: 1, + isArray: false, + description: "The value of the input parameter as a basic type.", + path: "Task.input.value[x]" + }, + "valueExpression": { + name: "valueExpression", + dataType: r4:Expression, + min: 1, + max: 1, + isArray: false, + description: "The value of the input parameter as a basic type.", + path: "Task.input.value[x]" + }, + "valueReference": { + name: "valueReference", + dataType: r4:Reference, + min: 1, + max: 1, + isArray: false, + description: "The value of the input parameter as a basic type.", + path: "Task.input.value[x]" + }, + "valueRange": { + name: "valueRange", + dataType: r4:Range, + min: 1, + max: 1, + isArray: false, + description: "The value of the input parameter as a basic type.", + path: "Task.input.value[x]" + }, + "valueUri": { + name: "valueUri", + dataType: r4:uri, + min: 1, + max: 1, + isArray: false, + description: "The value of the input parameter as a basic type.", + path: "Task.input.value[x]" + }, + "valueDistance": { + name: "valueDistance", + dataType: r4:Distance, + min: 1, + max: 1, + isArray: false, + description: "The value of the input parameter as a basic type.", + path: "Task.input.value[x]" + }, + "valueUrl": { + name: "valueUrl", + dataType: r4:urlType, + min: 1, + max: 1, + isArray: false, + description: "The value of the input parameter as a basic type.", + path: "Task.input.value[x]" + }, + "valueContactDetail": { + name: "valueContactDetail", + dataType: r4:ContactDetail, + min: 1, + max: 1, + isArray: false, + description: "The value of the input parameter as a basic type.", + path: "Task.input.value[x]" + }, + "valueMeta": { + name: "valueMeta", + dataType: r4:Meta, + min: 1, + max: 1, + isArray: false, + description: "The value of the input parameter as a basic type.", + path: "Task.input.value[x]" + }, + "valueCodeableConcept": { + name: "valueCodeableConcept", + dataType: r4:CodeableConcept, + min: 1, + max: 1, + isArray: false, + description: "The value of the input parameter as a basic type.", + path: "Task.input.value[x]" + }, + "valueMarkdown": { + name: "valueMarkdown", + dataType: r4:markdown, + min: 1, + max: 1, + isArray: false, + description: "The value of the input parameter as a basic type.", + path: "Task.input.value[x]" + }, + "valueAttachment": { + name: "valueAttachment", + dataType: r4:Attachment, + min: 1, + max: 1, + isArray: false, + description: "The value of the input parameter as a basic type.", + path: "Task.input.value[x]" + }, + "valueUsageContext": { + name: "valueUsageContext", + dataType: r4:UsageContext, + min: 1, + max: 1, + isArray: false, + description: "The value of the input parameter as a basic type.", + path: "Task.input.value[x]" + }, + "valueDateTime": { + name: "valueDateTime", + dataType: r4:dateTime, + min: 1, + max: 1, + isArray: false, + description: "The value of the input parameter as a basic type.", + path: "Task.input.value[x]" + }, + "valueHumanName": { + name: "valueHumanName", + dataType: r4:HumanName, + min: 1, + max: 1, + isArray: false, + description: "The value of the input parameter as a basic type.", + path: "Task.input.value[x]" + }, + "valueRelatedArtifact": { + name: "valueRelatedArtifact", + dataType: r4:RelatedArtifact, + min: 1, + max: 1, + isArray: false, + description: "The value of the input parameter as a basic type.", + path: "Task.input.value[x]" + }, + "valueDecimal": { + name: "valueDecimal", + dataType: decimal, + min: 1, + max: 1, + isArray: false, + description: "The value of the input parameter as a basic type.", + path: "Task.input.value[x]" + }, + "valueDate": { + name: "valueDate", + dataType: r4:date, + min: 1, + max: 1, + isArray: false, + description: "The value of the input parameter as a basic type.", + path: "Task.input.value[x]" + }, + "valueOid": { + name: "valueOid", + dataType: r4:oid, + min: 1, + max: 1, + isArray: false, + description: "The value of the input parameter as a basic type.", + path: "Task.input.value[x]" + }, + "valueContributor": { + name: "valueContributor", + dataType: r4:Contributor, + min: 1, + max: 1, + isArray: false, + description: "The value of the input parameter as a basic type.", + path: "Task.input.value[x]" + }, + "valueString": { + name: "valueString", + dataType: string, + min: 1, + max: 1, + isArray: false, + description: "The value of the input parameter as a basic type.", + path: "Task.input.value[x]" + }, + "valuePositiveInt": { + name: "valuePositiveInt", + dataType: r4:positiveInt, + min: 1, + max: 1, + isArray: false, + description: "The value of the input parameter as a basic type.", + path: "Task.input.value[x]" + }, + "valueDuration": { + name: "valueDuration", + dataType: r4:Duration, + min: 1, + max: 1, + isArray: false, + description: "The value of the input parameter as a basic type.", + path: "Task.input.value[x]" + }, + "valueDataRequirement": { + name: "valueDataRequirement", + dataType: r4:DataRequirement, + min: 1, + max: 1, + isArray: false, + description: "The value of the input parameter as a basic type.", + path: "Task.input.value[x]" + }, + "valueAnnotation": { + name: "valueAnnotation", + dataType: r4:Annotation, + min: 1, + max: 1, + isArray: false, + description: "The value of the input parameter as a basic type.", + path: "Task.input.value[x]" + } + }, + serializers: { + 'xml: r4:complexDataTypeXMLSerializer, + 'json: r4:complexDataTypeJsonSerializer + } +} +public type HRexTaskDataRequestInput record {| + *r4:BackboneElement; + + r4:time valueTime; + r4:TriggerDefinition valueTriggerDefinition; + r4:Money valueMoney; + r4:Signature valueSignature; + r4:Extension[] modifierExtension?; + r4:CodeableConcept 'type; + r4:uuid valueUuid; + r4:Ratio valueRatio; + r4:ParameterDefinition valueParameterDefinition; + string id?; + r4:integer valueInteger; + r4:unsignedInt valueUnsignedInt; + r4:Quantity valueQuantity; + r4:canonical valueCanonical; + r4:Count valueCount; + r4:id valueId; + r4:code valueCode; + r4:Address valueAddress; + r4:ContactPoint valueContactPoint; + r4:Period valuePeriod; + r4:SampledData valueSampledData; + r4:Timing valueTiming; + r4:instant valueInstant; + r4:Age valueAge; + r4:Dosage valueDosage; + r4:base64Binary valueBase64Binary; + boolean valueBoolean; + r4:Coding valueCoding; + r4:Extension[] extension?; + r4:Identifier valueIdentifier; + r4:Expression valueExpression; + r4:Reference valueReference; + r4:Range valueRange; + r4:uri valueUri; + r4:Distance valueDistance; + r4:urlType valueUrl; + r4:ContactDetail valueContactDetail; + r4:Meta valueMeta; + r4:CodeableConcept valueCodeableConcept; + r4:markdown valueMarkdown; + r4:Attachment valueAttachment; + r4:UsageContext valueUsageContext; + r4:dateTime valueDateTime; + r4:HumanName valueHumanName; + r4:RelatedArtifact valueRelatedArtifact; + decimal valueDecimal; + r4:date valueDate; + r4:oid valueOid; + r4:Contributor valueContributor; + string valueString; + r4:positiveInt valuePositiveInt; + r4:Duration valueDuration; + r4:DataRequirement valueDataRequirement; + r4:Annotation valueAnnotation; +|}; + +# FHIR HRexTaskDataRequestInputTypeCoding datatype record. +# +# + system - The identification of the code system that defines the meaning of the symbol in the code. +# + code - A symbol in syntax defined by the system. The symbol may be a predefined code or an expression in a syntax defined by the coding system (e.g. post-coordination). +@r4:DataTypeDefinition { + name: "HRexTaskDataRequestInputTypeCoding", + baseType: (), + elements: { + "system": { + name: "system", + dataType: r4:uri, + min: 1, + max: 1, + isArray: false, + description: "The identification of the code system that defines the meaning of the symbol in the code.", + path: "Task.input.type.coding.system" + }, + "code": { + name: "code", + dataType: r4:code, + min: 1, + max: 1, + isArray: false, + description: "A symbol in syntax defined by the system. The symbol may be a predefined code or an expression in a syntax defined by the coding system (e.g. post-coordination).", + path: "Task.input.type.coding.code" + } + }, + serializers: { + 'xml: r4:complexDataTypeXMLSerializer, + 'json: r4:complexDataTypeJsonSerializer + } +} +public type HRexTaskDataRequestInputTypeCoding record {| + *r4:Coding; + + r4:uri system = "http://hl7.org/fhir/us/davinci-hrex/CodeSystem/hrex-temp"; + r4:code code = "data-code"; +|}; + +# HRexTaskDataRequestIntent enum +public enum HRexTaskDataRequestIntent { + CODE_INTENT_PROPOSAL = "proposal", + CODE_INTENT_INSTANCE_ORDER = "instance-order", + CODE_INTENT_FILLER_ORDER = "filler-order", + CODE_INTENT_ORIGINAL_ORDER = "original-order", + CODE_INTENT_REFLEX_ORDER = "reflex-order", + CODE_INTENT_PLAN = "plan", + CODE_INTENT_UNKNOWN = "unknown", + CODE_INTENT_ORDER = "order", + CODE_INTENT_OPTION = "option" +} + +# FHIR HRexTaskDataRequestInputTypeOne datatype record. +# +# + coding - A reference to a code defined by a terminology system. +@r4:DataTypeDefinition { + name: "HRexTaskDataRequestInputTypeOne", + baseType: (), + elements: { + "coding": { + name: "coding", + dataType: HRexTaskDataRequestInputTypeCodingOne, + min: 1, + max: int:MAX_VALUE, + isArray: true, + description: "A reference to a code defined by a terminology system.", + path: "Task.input.type.coding" + } + }, + serializers: { + 'xml: r4:complexDataTypeXMLSerializer, + 'json: r4:complexDataTypeJsonSerializer + } +} +public type HRexTaskDataRequestInputTypeOne record {| + *r4:CodeableConcept; + + @constraint:Array { + minLength: 1 + } + HRexTaskDataRequestInputTypeCodingOne[] coding; +|}; + +# FHIR HRexTaskDataRequestReasonCode datatype record. +# +# + coding - A reference to a code defined by a terminology system. +# + extension - May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. +# + id - Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces. +# + text - A human language representation of the concept as seen/selected/uttered by the user who entered the data and/or which represents the intended meaning of the user. +@r4:DataTypeDefinition { + name: "HRexTaskDataRequestReasonCode", + baseType: (), + elements: { + "coding": { + name: "coding", + dataType: r4:Coding, + min: 0, + max: int:MAX_VALUE, + isArray: true, + description: "A reference to a code defined by a terminology system.", + path: "Task.reasonCode.coding" + }, + "extension": { + name: "extension", + dataType: r4:Extension, + min: 0, + max: int:MAX_VALUE, + isArray: true, + description: "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension.", + path: "Task.reasonCode.extension" + }, + "id": { + name: "id", + dataType: string, + min: 0, + max: 1, + isArray: false, + description: "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces.", + path: "Task.reasonCode.id" + }, + "text": { + name: "text", + dataType: string, + min: 1, + max: 1, + isArray: false, + description: "A human language representation of the concept as seen/selected/uttered by the user who entered the data and/or which represents the intended meaning of the user.", + path: "Task.reasonCode.text" + } + }, + serializers: { + 'xml: r4:complexDataTypeXMLSerializer, + 'json: r4:complexDataTypeJsonSerializer + } +} +public type HRexTaskDataRequestReasonCode record {| + *r4:CodeableConcept; + + r4:Coding[] coding?; + r4:Extension[] extension?; + string id?; + string text; +|}; + +# FHIR HRexTaskDataRequestStatusReason datatype record. +# +# + coding - A reference to a code defined by a terminology system. +# + extension - May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. +# + id - Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces. +# + text - A human language representation of the concept as seen/selected/uttered by the user who entered the data and/or which represents the intended meaning of the user. +@r4:DataTypeDefinition { + name: "HRexTaskDataRequestStatusReason", + baseType: (), + elements: { + "coding": { + name: "coding", + dataType: r4:Coding, + min: 0, + max: int:MAX_VALUE, + isArray: true, + description: "A reference to a code defined by a terminology system.", + path: "Task.statusReason.coding" + }, + "extension": { + name: "extension", + dataType: r4:Extension, + min: 0, + max: int:MAX_VALUE, + isArray: true, + description: "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension.", + path: "Task.statusReason.extension" + }, + "id": { + name: "id", + dataType: string, + min: 0, + max: 1, + isArray: false, + description: "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces.", + path: "Task.statusReason.id" + }, + "text": { + name: "text", + dataType: string, + min: 1, + max: 1, + isArray: false, + description: "A human language representation of the concept as seen/selected/uttered by the user who entered the data and/or which represents the intended meaning of the user.", + path: "Task.statusReason.text" + } + }, + serializers: { + 'xml: r4:complexDataTypeXMLSerializer, + 'json: r4:complexDataTypeJsonSerializer + } +} +public type HRexTaskDataRequestStatusReason record {| + *r4:CodeableConcept; + + r4:Coding[] coding?; + r4:Extension[] extension?; + string id?; + string text; +|}; + +# FHIR HRexTaskDataRequestInputTypeCodingOne datatype record. +# +# + system - The identification of the code system that defines the meaning of the symbol in the code. +# + code - A symbol in syntax defined by the system. The symbol may be a predefined code or an expression in a syntax defined by the coding system (e.g. post-coordination). +@r4:DataTypeDefinition { + name: "HRexTaskDataRequestInputTypeCodingOne", + baseType: (), + elements: { + "system": { + name: "system", + dataType: r4:uri, + min: 1, + max: 1, + isArray: false, + description: "The identification of the code system that defines the meaning of the symbol in the code.", + path: "Task.input.type.coding.system" + }, + "code": { + name: "code", + dataType: r4:code, + min: 1, + max: 1, + isArray: false, + description: "A symbol in syntax defined by the system. The symbol may be a predefined code or an expression in a syntax defined by the coding system (e.g. post-coordination).", + path: "Task.input.type.coding.code" + } + }, + serializers: { + 'xml: r4:complexDataTypeXMLSerializer, + 'json: r4:complexDataTypeJsonSerializer + } +} +public type HRexTaskDataRequestInputTypeCodingOne record {| + *r4:Coding; + + r4:uri system = "http://hl7.org/fhir/us/davinci-hrex/CodeSystem/hrex-temp"; + r4:code code = "data-query"; +|}; + +# FHIR HRexTaskDataRequestInputQuery datatype record. +# +# + extension - May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. +# + valueString - The value of the input parameter as a basic type. +# + modifierExtension - May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions. Modifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself). +# + id - Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces. +# + 'type - A code or description indicating how the input is intended to be used as part of the task execution. +@r4:DataTypeDefinition { + name: "HRexTaskDataRequestInputQuery", + baseType: (), + elements: { + "extension": { + name: "extension", + dataType: r4:Extension, + min: 0, + max: int:MAX_VALUE, + isArray: true, + description: "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension.", + path: "Task.input.extension" + }, + "valueString": { + name: "valueString", + dataType: string, + min: 1, + max: 1, + isArray: false, + description: "The value of the input parameter as a basic type.", + path: "Task.input.value[x]" + }, + "modifierExtension": { + name: "modifierExtension", + dataType: r4:Extension, + min: 0, + max: int:MAX_VALUE, + isArray: true, + description: "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions. Modifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself).", + path: "Task.input.modifierExtension" + }, + "id": { + name: "id", + dataType: string, + min: 0, + max: 1, + isArray: false, + description: "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces.", + path: "Task.input.id" + }, + "type": { + name: "type", + dataType: HRexTaskDataRequestInputTypeOne, + min: 1, + max: 1, + isArray: false, + description: "A code or description indicating how the input is intended to be used as part of the task execution.", + path: "Task.input.type" + } + }, + serializers: { + 'xml: r4:complexDataTypeXMLSerializer, + 'json: r4:complexDataTypeJsonSerializer + } +} +public type HRexTaskDataRequestInputQuery record {| + *HRexTaskDataRequestInput; + + r4:Extension[] extension?; + string valueString; + r4:Extension[] modifierExtension?; + string id?; + HRexTaskDataRequestInputTypeOne 'type; +|}; + +# FHIR HRexTaskDataRequestOutputData datatype record. +# +# + extension - May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. +# + valueReference - The value of the Output parameter as a basic type. +# + modifierExtension - May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions. Modifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself). +# + id - Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces. +# + 'type - The name of the Output parameter. +@r4:DataTypeDefinition { + name: "HRexTaskDataRequestOutputData", + baseType: (), + elements: { + "extension": { + name: "extension", + dataType: r4:Extension, + min: 0, + max: int:MAX_VALUE, + isArray: true, + description: "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension.", + path: "Task.output.extension" + }, + "valueReference": { + name: "valueReference", + dataType: r4:Reference, + min: 1, + max: 1, + isArray: false, + description: "The value of the Output parameter as a basic type.", + path: "Task.output.value[x]" + }, + "modifierExtension": { + name: "modifierExtension", + dataType: r4:Extension, + min: 0, + max: int:MAX_VALUE, + isArray: true, + description: "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions. Modifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself).", + path: "Task.output.modifierExtension" + }, + "id": { + name: "id", + dataType: string, + min: 0, + max: 1, + isArray: false, + description: "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces.", + path: "Task.output.id" + }, + "type": { + name: "type", + dataType: HRexTaskDataRequestOutputType, + min: 1, + max: 1, + isArray: false, + description: "The name of the Output parameter.", + path: "Task.output.type" + } + }, + serializers: { + 'xml: r4:complexDataTypeXMLSerializer, + 'json: r4:complexDataTypeJsonSerializer + } +} +public type HRexTaskDataRequestOutputData record {| + *HRexTaskDataRequestOutput; + + r4:Extension[] extension?; + r4:Reference valueReference; + r4:Extension[] modifierExtension?; + string id?; + HRexTaskDataRequestOutputType 'type; +|}; + +# FHIR HRexTaskDataRequestOutput datatype record. +# +# + valueTime - The value of the Output parameter as a basic type. +# + valueTriggerDefinition - The value of the Output parameter as a basic type. +# + valueMoney - The value of the Output parameter as a basic type. +# + valueSignature - The value of the Output parameter as a basic type. +# + modifierExtension - May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions. Modifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself). +# + 'type - The name of the Output parameter. +# + valueUuid - The value of the Output parameter as a basic type. +# + valueRatio - The value of the Output parameter as a basic type. +# + valueParameterDefinition - The value of the Output parameter as a basic type. +# + id - Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces. +# + valueInteger - The value of the Output parameter as a basic type. +# + valueUnsignedInt - The value of the Output parameter as a basic type. +# + valueQuantity - The value of the Output parameter as a basic type. +# + valueCanonical - The value of the Output parameter as a basic type. +# + valueCount - The value of the Output parameter as a basic type. +# + valueId - The value of the Output parameter as a basic type. +# + valueCode - The value of the Output parameter as a basic type. +# + valueAddress - The value of the Output parameter as a basic type. +# + valueContactPoint - The value of the Output parameter as a basic type. +# + valuePeriod - The value of the Output parameter as a basic type. +# + valueSampledData - The value of the Output parameter as a basic type. +# + valueTiming - The value of the Output parameter as a basic type. +# + valueInstant - The value of the Output parameter as a basic type. +# + valueAge - The value of the Output parameter as a basic type. +# + valueDosage - The value of the Output parameter as a basic type. +# + valueBase64Binary - The value of the Output parameter as a basic type. +# + valueBoolean - The value of the Output parameter as a basic type. +# + valueCoding - The value of the Output parameter as a basic type. +# + extension - May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. +# + valueIdentifier - The value of the Output parameter as a basic type. +# + valueExpression - The value of the Output parameter as a basic type. +# + valueReference - The value of the Output parameter as a basic type. +# + valueRange - The value of the Output parameter as a basic type. +# + valueUri - The value of the Output parameter as a basic type. +# + valueDistance - The value of the Output parameter as a basic type. +# + valueUrl - The value of the Output parameter as a basic type. +# + valueContactDetail - The value of the Output parameter as a basic type. +# + valueMeta - The value of the Output parameter as a basic type. +# + valueCodeableConcept - The value of the Output parameter as a basic type. +# + valueMarkdown - The value of the Output parameter as a basic type. +# + valueAttachment - The value of the Output parameter as a basic type. +# + valueUsageContext - The value of the Output parameter as a basic type. +# + valueDateTime - The value of the Output parameter as a basic type. +# + valueHumanName - The value of the Output parameter as a basic type. +# + valueRelatedArtifact - The value of the Output parameter as a basic type. +# + valueDecimal - The value of the Output parameter as a basic type. +# + valueDate - The value of the Output parameter as a basic type. +# + valueOid - The value of the Output parameter as a basic type. +# + valueContributor - The value of the Output parameter as a basic type. +# + valueString - The value of the Output parameter as a basic type. +# + valuePositiveInt - The value of the Output parameter as a basic type. +# + valueDuration - The value of the Output parameter as a basic type. +# + valueDataRequirement - The value of the Output parameter as a basic type. +# + valueAnnotation - The value of the Output parameter as a basic type. +@r4:DataTypeDefinition { + name: "HRexTaskDataRequestOutput", + baseType: (), + elements: { + "valueTime": { + name: "valueTime", + dataType: r4:time, + min: 1, + max: 1, + isArray: false, + description: "The value of the Output parameter as a basic type.", + path: "Task.output.value[x]" + }, + "valueTriggerDefinition": { + name: "valueTriggerDefinition", + dataType: r4:TriggerDefinition, + min: 1, + max: 1, + isArray: false, + description: "The value of the Output parameter as a basic type.", + path: "Task.output.value[x]" + }, + "valueMoney": { + name: "valueMoney", + dataType: r4:Money, + min: 1, + max: 1, + isArray: false, + description: "The value of the Output parameter as a basic type.", + path: "Task.output.value[x]" + }, + "valueSignature": { + name: "valueSignature", + dataType: r4:Signature, + min: 1, + max: 1, + isArray: false, + description: "The value of the Output parameter as a basic type.", + path: "Task.output.value[x]" + }, + "modifierExtension": { + name: "modifierExtension", + dataType: r4:Extension, + min: 0, + max: int:MAX_VALUE, + isArray: true, + description: "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions. Modifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself).", + path: "Task.output.modifierExtension" + }, + "type": { + name: "type", + dataType: r4:CodeableConcept, + min: 1, + max: 1, + isArray: false, + description: "The name of the Output parameter.", + path: "Task.output.type" + }, + "valueUuid": { + name: "valueUuid", + dataType: r4:uuid, + min: 1, + max: 1, + isArray: false, + description: "The value of the Output parameter as a basic type.", + path: "Task.output.value[x]" + }, + "valueRatio": { + name: "valueRatio", + dataType: r4:Ratio, + min: 1, + max: 1, + isArray: false, + description: "The value of the Output parameter as a basic type.", + path: "Task.output.value[x]" + }, + "valueParameterDefinition": { + name: "valueParameterDefinition", + dataType: r4:ParameterDefinition, + min: 1, + max: 1, + isArray: false, + description: "The value of the Output parameter as a basic type.", + path: "Task.output.value[x]" + }, + "id": { + name: "id", + dataType: string, + min: 0, + max: 1, + isArray: false, + description: "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces.", + path: "Task.output.id" + }, + "valueInteger": { + name: "valueInteger", + dataType: r4:integer, + min: 1, + max: 1, + isArray: false, + description: "The value of the Output parameter as a basic type.", + path: "Task.output.value[x]" + }, + "valueUnsignedInt": { + name: "valueUnsignedInt", + dataType: r4:unsignedInt, + min: 1, + max: 1, + isArray: false, + description: "The value of the Output parameter as a basic type.", + path: "Task.output.value[x]" + }, + "valueQuantity": { + name: "valueQuantity", + dataType: r4:Quantity, + min: 1, + max: 1, + isArray: false, + description: "The value of the Output parameter as a basic type.", + path: "Task.output.value[x]" + }, + "valueCanonical": { + name: "valueCanonical", + dataType: r4:canonical, + min: 1, + max: 1, + isArray: false, + description: "The value of the Output parameter as a basic type.", + path: "Task.output.value[x]" + }, + "valueCount": { + name: "valueCount", + dataType: r4:Count, + min: 1, + max: 1, + isArray: false, + description: "The value of the Output parameter as a basic type.", + path: "Task.output.value[x]" + }, + "valueId": { + name: "valueId", + dataType: r4:id, + min: 1, + max: 1, + isArray: false, + description: "The value of the Output parameter as a basic type.", + path: "Task.output.value[x]" + }, + "valueCode": { + name: "valueCode", + dataType: r4:code, + min: 1, + max: 1, + isArray: false, + description: "The value of the Output parameter as a basic type.", + path: "Task.output.value[x]" + }, + "valueAddress": { + name: "valueAddress", + dataType: r4:Address, + min: 1, + max: 1, + isArray: false, + description: "The value of the Output parameter as a basic type.", + path: "Task.output.value[x]" + }, + "valueContactPoint": { + name: "valueContactPoint", + dataType: r4:ContactPoint, + min: 1, + max: 1, + isArray: false, + description: "The value of the Output parameter as a basic type.", + path: "Task.output.value[x]" + }, + "valuePeriod": { + name: "valuePeriod", + dataType: r4:Period, + min: 1, + max: 1, + isArray: false, + description: "The value of the Output parameter as a basic type.", + path: "Task.output.value[x]" + }, + "valueSampledData": { + name: "valueSampledData", + dataType: r4:SampledData, + min: 1, + max: 1, + isArray: false, + description: "The value of the Output parameter as a basic type.", + path: "Task.output.value[x]" + }, + "valueTiming": { + name: "valueTiming", + dataType: r4:Timing, + min: 1, + max: 1, + isArray: false, + description: "The value of the Output parameter as a basic type.", + path: "Task.output.value[x]" + }, + "valueInstant": { + name: "valueInstant", + dataType: r4:instant, + min: 1, + max: 1, + isArray: false, + description: "The value of the Output parameter as a basic type.", + path: "Task.output.value[x]" + }, + "valueAge": { + name: "valueAge", + dataType: r4:Age, + min: 1, + max: 1, + isArray: false, + description: "The value of the Output parameter as a basic type.", + path: "Task.output.value[x]" + }, + "valueDosage": { + name: "valueDosage", + dataType: r4:Dosage, + min: 1, + max: 1, + isArray: false, + description: "The value of the Output parameter as a basic type.", + path: "Task.output.value[x]" + }, + "valueBase64Binary": { + name: "valueBase64Binary", + dataType: r4:base64Binary, + min: 1, + max: 1, + isArray: false, + description: "The value of the Output parameter as a basic type.", + path: "Task.output.value[x]" + }, + "valueBoolean": { + name: "valueBoolean", + dataType: boolean, + min: 1, + max: 1, + isArray: false, + description: "The value of the Output parameter as a basic type.", + path: "Task.output.value[x]" + }, + "valueCoding": { + name: "valueCoding", + dataType: r4:Coding, + min: 1, + max: 1, + isArray: false, + description: "The value of the Output parameter as a basic type.", + path: "Task.output.value[x]" + }, + "extension": { + name: "extension", + dataType: r4:Extension, + min: 0, + max: int:MAX_VALUE, + isArray: true, + description: "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension.", + path: "Task.output.extension" + }, + "valueIdentifier": { + name: "valueIdentifier", + dataType: r4:Identifier, + min: 1, + max: 1, + isArray: false, + description: "The value of the Output parameter as a basic type.", + path: "Task.output.value[x]" + }, + "valueExpression": { + name: "valueExpression", + dataType: r4:Expression, + min: 1, + max: 1, + isArray: false, + description: "The value of the Output parameter as a basic type.", + path: "Task.output.value[x]" + }, + "valueReference": { + name: "valueReference", + dataType: r4:Reference, + min: 1, + max: 1, + isArray: false, + description: "The value of the Output parameter as a basic type.", + path: "Task.output.value[x]" + }, + "valueRange": { + name: "valueRange", + dataType: r4:Range, + min: 1, + max: 1, + isArray: false, + description: "The value of the Output parameter as a basic type.", + path: "Task.output.value[x]" + }, + "valueUri": { + name: "valueUri", + dataType: r4:uri, + min: 1, + max: 1, + isArray: false, + description: "The value of the Output parameter as a basic type.", + path: "Task.output.value[x]" + }, + "valueDistance": { + name: "valueDistance", + dataType: r4:Distance, + min: 1, + max: 1, + isArray: false, + description: "The value of the Output parameter as a basic type.", + path: "Task.output.value[x]" + }, + "valueUrl": { + name: "valueUrl", + dataType: r4:urlType, + min: 1, + max: 1, + isArray: false, + description: "The value of the Output parameter as a basic type.", + path: "Task.output.value[x]" + }, + "valueContactDetail": { + name: "valueContactDetail", + dataType: r4:ContactDetail, + min: 1, + max: 1, + isArray: false, + description: "The value of the Output parameter as a basic type.", + path: "Task.output.value[x]" + }, + "valueMeta": { + name: "valueMeta", + dataType: r4:Meta, + min: 1, + max: 1, + isArray: false, + description: "The value of the Output parameter as a basic type.", + path: "Task.output.value[x]" + }, + "valueCodeableConcept": { + name: "valueCodeableConcept", + dataType: r4:CodeableConcept, + min: 1, + max: 1, + isArray: false, + description: "The value of the Output parameter as a basic type.", + path: "Task.output.value[x]" + }, + "valueMarkdown": { + name: "valueMarkdown", + dataType: r4:markdown, + min: 1, + max: 1, + isArray: false, + description: "The value of the Output parameter as a basic type.", + path: "Task.output.value[x]" + }, + "valueAttachment": { + name: "valueAttachment", + dataType: r4:Attachment, + min: 1, + max: 1, + isArray: false, + description: "The value of the Output parameter as a basic type.", + path: "Task.output.value[x]" + }, + "valueUsageContext": { + name: "valueUsageContext", + dataType: r4:UsageContext, + min: 1, + max: 1, + isArray: false, + description: "The value of the Output parameter as a basic type.", + path: "Task.output.value[x]" + }, + "valueDateTime": { + name: "valueDateTime", + dataType: r4:dateTime, + min: 1, + max: 1, + isArray: false, + description: "The value of the Output parameter as a basic type.", + path: "Task.output.value[x]" + }, + "valueHumanName": { + name: "valueHumanName", + dataType: r4:HumanName, + min: 1, + max: 1, + isArray: false, + description: "The value of the Output parameter as a basic type.", + path: "Task.output.value[x]" + }, + "valueRelatedArtifact": { + name: "valueRelatedArtifact", + dataType: r4:RelatedArtifact, + min: 1, + max: 1, + isArray: false, + description: "The value of the Output parameter as a basic type.", + path: "Task.output.value[x]" + }, + "valueDecimal": { + name: "valueDecimal", + dataType: decimal, + min: 1, + max: 1, + isArray: false, + description: "The value of the Output parameter as a basic type.", + path: "Task.output.value[x]" + }, + "valueDate": { + name: "valueDate", + dataType: r4:date, + min: 1, + max: 1, + isArray: false, + description: "The value of the Output parameter as a basic type.", + path: "Task.output.value[x]" + }, + "valueOid": { + name: "valueOid", + dataType: r4:oid, + min: 1, + max: 1, + isArray: false, + description: "The value of the Output parameter as a basic type.", + path: "Task.output.value[x]" + }, + "valueContributor": { + name: "valueContributor", + dataType: r4:Contributor, + min: 1, + max: 1, + isArray: false, + description: "The value of the Output parameter as a basic type.", + path: "Task.output.value[x]" + }, + "valueString": { + name: "valueString", + dataType: string, + min: 1, + max: 1, + isArray: false, + description: "The value of the Output parameter as a basic type.", + path: "Task.output.value[x]" + }, + "valuePositiveInt": { + name: "valuePositiveInt", + dataType: r4:positiveInt, + min: 1, + max: 1, + isArray: false, + description: "The value of the Output parameter as a basic type.", + path: "Task.output.value[x]" + }, + "valueDuration": { + name: "valueDuration", + dataType: r4:Duration, + min: 1, + max: 1, + isArray: false, + description: "The value of the Output parameter as a basic type.", + path: "Task.output.value[x]" + }, + "valueDataRequirement": { + name: "valueDataRequirement", + dataType: r4:DataRequirement, + min: 1, + max: 1, + isArray: false, + description: "The value of the Output parameter as a basic type.", + path: "Task.output.value[x]" + }, + "valueAnnotation": { + name: "valueAnnotation", + dataType: r4:Annotation, + min: 1, + max: 1, + isArray: false, + description: "The value of the Output parameter as a basic type.", + path: "Task.output.value[x]" + } + }, + serializers: { + 'xml: r4:complexDataTypeXMLSerializer, + 'json: r4:complexDataTypeJsonSerializer + } +} +public type HRexTaskDataRequestOutput record {| + *r4:BackboneElement; + + r4:time valueTime; + r4:TriggerDefinition valueTriggerDefinition; + r4:Money valueMoney; + r4:Signature valueSignature; + r4:Extension[] modifierExtension?; + r4:CodeableConcept 'type; + r4:uuid valueUuid; + r4:Ratio valueRatio; + r4:ParameterDefinition valueParameterDefinition; + string id?; + r4:integer valueInteger; + r4:unsignedInt valueUnsignedInt; + r4:Quantity valueQuantity; + r4:canonical valueCanonical; + r4:Count valueCount; + r4:id valueId; + r4:code valueCode; + r4:Address valueAddress; + r4:ContactPoint valueContactPoint; + r4:Period valuePeriod; + r4:SampledData valueSampledData; + r4:Timing valueTiming; + r4:instant valueInstant; + r4:Age valueAge; + r4:Dosage valueDosage; + r4:base64Binary valueBase64Binary; + boolean valueBoolean; + r4:Coding valueCoding; + r4:Extension[] extension?; + r4:Identifier valueIdentifier; + r4:Expression valueExpression; + r4:Reference valueReference; + r4:Range valueRange; + r4:uri valueUri; + r4:Distance valueDistance; + r4:urlType valueUrl; + r4:ContactDetail valueContactDetail; + r4:Meta valueMeta; + r4:CodeableConcept valueCodeableConcept; + r4:markdown valueMarkdown; + r4:Attachment valueAttachment; + r4:UsageContext valueUsageContext; + r4:dateTime valueDateTime; + r4:HumanName valueHumanName; + r4:RelatedArtifact valueRelatedArtifact; + decimal valueDecimal; + r4:date valueDate; + r4:oid valueOid; + r4:Contributor valueContributor; + string valueString; + r4:positiveInt valuePositiveInt; + r4:Duration valueDuration; + r4:DataRequirement valueDataRequirement; + r4:Annotation valueAnnotation; +|}; + +# FHIR HRexTaskDataRequestInputType datatype record. +# +# + coding - A reference to a code defined by a terminology system. +@r4:DataTypeDefinition { + name: "HRexTaskDataRequestInputType", + baseType: (), + elements: { + "coding": { + name: "coding", + dataType: HRexTaskDataRequestInputTypeCoding, + min: 1, + max: int:MAX_VALUE, + isArray: true, + description: "A reference to a code defined by a terminology system.", + path: "Task.input.type.coding" + } + }, + serializers: { + 'xml: r4:complexDataTypeXMLSerializer, + 'json: r4:complexDataTypeJsonSerializer + } +} +public type HRexTaskDataRequestInputType record {| + *r4:CodeableConcept; + + @constraint:Array { + minLength: 1 + } + HRexTaskDataRequestInputTypeCoding[] coding; +|}; + +# HRexTaskDataRequestPriority enum +public enum HRexTaskDataRequestPriority { + CODE_PRIORITY_STAT = "stat", + CODE_PRIORITY_ROUTINE = "routine", + CODE_PRIORITY_URGENT = "urgent", + CODE_PRIORITY_ASAP = "asap" +} + +# FHIR HRexTaskDataRequestOutputTypeCoding datatype record. +# +# + system - The identification of the code system that defines the meaning of the symbol in the code. +# + code - A symbol in syntax defined by the system. The symbol may be a predefined code or an expression in a syntax defined by the coding system (e.g. post-coordination). +@r4:DataTypeDefinition { + name: "HRexTaskDataRequestOutputTypeCoding", + baseType: (), + elements: { + "system": { + name: "system", + dataType: r4:uri, + min: 1, + max: 1, + isArray: false, + description: "The identification of the code system that defines the meaning of the symbol in the code.", + path: "Task.output.type.coding.system" + }, + "code": { + name: "code", + dataType: r4:code, + min: 1, + max: 1, + isArray: false, + description: "A symbol in syntax defined by the system. The symbol may be a predefined code or an expression in a syntax defined by the coding system (e.g. post-coordination).", + path: "Task.output.type.coding.code" + } + }, + serializers: { + 'xml: r4:complexDataTypeXMLSerializer, + 'json: r4:complexDataTypeJsonSerializer + } +} +public type HRexTaskDataRequestOutputTypeCoding record {| + *r4:Coding; + + r4:uri system = "http://hl7.org/fhir/us/davinci-hrex/CodeSystem/hrex-temp"; + r4:code code = "data-value"; +|}; + +# FHIR HRexTaskDataRequestOutputType datatype record. +# +# + coding - A reference to a code defined by a terminology system. +@r4:DataTypeDefinition { + name: "HRexTaskDataRequestOutputType", + baseType: (), + elements: { + "coding": { + name: "coding", + dataType: HRexTaskDataRequestOutputTypeCoding, + min: 1, + max: int:MAX_VALUE, + isArray: true, + description: "A reference to a code defined by a terminology system.", + path: "Task.output.type.coding" + } + }, + serializers: { + 'xml: r4:complexDataTypeXMLSerializer, + 'json: r4:complexDataTypeJsonSerializer + } +} +public type HRexTaskDataRequestOutputType record {| + *r4:CodeableConcept; + + @constraint:Array { + minLength: 1 + } + HRexTaskDataRequestOutputTypeCoding[] coding; +|}; + +# FHIR HRexTaskDataRequestInputCode datatype record. +# +# + valueCodeableConcept - The value of the input parameter as a basic type. +# + extension - May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. +# + modifierExtension - May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions. Modifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself). +# + id - Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces. +# + 'type - A code or description indicating how the input is intended to be used as part of the task execution. +@r4:DataTypeDefinition { + name: "HRexTaskDataRequestInputCode", + baseType: (), + elements: { + "valueCodeableConcept": { + name: "valueCodeableConcept", + dataType: r4:CodeableConcept, + min: 1, + max: 1, + isArray: false, + description: "The value of the input parameter as a basic type.", + path: "Task.input.value[x]" + }, + "extension": { + name: "extension", + dataType: r4:Extension, + min: 0, + max: int:MAX_VALUE, + isArray: true, + description: "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension.", + path: "Task.input.extension" + }, + "modifierExtension": { + name: "modifierExtension", + dataType: r4:Extension, + min: 0, + max: int:MAX_VALUE, + isArray: true, + description: "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions. Modifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself).", + path: "Task.input.modifierExtension" + }, + "id": { + name: "id", + dataType: string, + min: 0, + max: 1, + isArray: false, + description: "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces.", + path: "Task.input.id" + }, + "type": { + name: "type", + dataType: HRexTaskDataRequestInputType, + min: 1, + max: 1, + isArray: false, + description: "A code or description indicating how the input is intended to be used as part of the task execution.", + path: "Task.input.type" + } + }, + serializers: { + 'xml: r4:complexDataTypeXMLSerializer, + 'json: r4:complexDataTypeJsonSerializer + } +} +public type HRexTaskDataRequestInputCode record {| + *HRexTaskDataRequestInput; + + r4:CodeableConcept valueCodeableConcept; + r4:Extension[] extension?; + r4:Extension[] modifierExtension?; + string id?; + HRexTaskDataRequestInputType 'type; +|}; + diff --git a/davincihrex100/variables.bal b/davincihrex100/variables.bal new file mode 100644 index 00000000..1903094b --- /dev/null +++ b/davincihrex100/variables.bal @@ -0,0 +1,129 @@ +// Copyright (c) 2023, WSO2 LLC. (http://www.wso2.com). +// WSO2 LLC. licenses this file to you under the Apache License, +// Version 2.0 (the "License"); you may not use this file except +// in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// AUTO-GENERATED FILE. +// This file is auto-generated by Ballerina. +import ballerinax/health.fhir.r4; + +# Terminology processor instance +public final r4:TerminologyProcessor terminologyProcessor = r4:terminologyProcessor; + +# FHIR registry instance +public final r4:FHIRRegistry fhirRegistry = r4:fhirRegistry; + +//Number of search params in DAVINCIHEALTHRECORDEXCHANGEHREX_IG_SEARCH_PARAMS_1 = 6 +final readonly & map DAVINCIHEALTHRECORDEXCHANGEHREX_IG_SEARCH_PARAMS_1 = { + "HRexCoverageIdentifier": [ + { + name: "HRexCoverageIdentifier", + 'type: r4:TOKEN, + base: ["Coverage"], + expression: "Coverage.identifier" + } + ], + "HRexCoveragePatient": [ + { + name: "HRexCoveragePatient", + 'type: r4:REFERENCE, + base: ["Coverage"], + expression: "Coverage.beneficiary" + } + ], + "HRexCoverageSubscriberId": [ + { + name: "HRexCoverageSubscriberId", + 'type: r4:TOKEN, + base: ["Coverage"], + expression: "Coverage.subscriberId" + } + ], + "HRexProvenanceTarget": [ + { + name: "HRexProvenanceTarget", + 'type: r4:REFERENCE, + base: ["Provenance"], + expression: "Provenance.target" + } + ], + "HRexCoverageSubscriber": [ + { + name: "HRexCoverageSubscriber", + 'type: r4:REFERENCE, + base: ["Coverage"], + expression: "Coverage.subscriber" + } + ], + "HRexCoveragePayor": [ + { + name: "HRexCoveragePayor", + 'type: r4:REFERENCE, + base: ["Coverage"], + expression: "Coverage.payor" + } + ] +}; + +// Operations in Da Vinci HREX IG (key = operation name) +final readonly & map DAVINCIHEALTHRECORDEXCHANGEHREX_IG_OPERATIONS = { + "member-match": [ + { + name: "member-match", + instanceLevel: false, + typeLevel: true, + systemLevel: false, + affectsState: true, + 'resource: [ + "Patient" + ], + 'parameter: [ + { + name: "MemberPatient", + use: r4:INPUT, + min: 1, + max: "1", + 'type: "Resource" + }, + { + name: "Consent", + use: r4:INPUT, + min: 1, + max: "1", + 'type: "Resource" + }, + { + name: "CoverageToMatch", + use: r4:INPUT, + min: 1, + max: "1", + 'type: "Resource" + }, + { + name: "CoverageToLink", + use: r4:INPUT, + min: 0, + max: "1", + 'type: "Resource" + }, + { + name: "MemberIdentifier", + use: r4:OUTPUT, + min: 1, + max: "1", + 'type: "Identifier" + } + ] + } + ] +}; + +public json[] FHIR_VALUE_SETS = []; +public json[] FHIR_CODE_SYSTEMS = []; From b37c4a31c85b25bd1f4e31780226d376b40cbc27 Mon Sep 17 00:00:00 2001 From: Chamath Jayasena Date: Mon, 24 Jun 2024 10:34:41 +0530 Subject: [PATCH 2/2] Add FHIR member matcher implementation Related issue: https://github.com/wso2-enterprise/open-healthcare/issues/1553 --- davincihrex100/Dependencies.toml | 51 ++- davincihrex100/fhir_member_matcher.bal | 432 +++++++++++++++++++ davincihrex100/member_matcher.bal | 79 ++++ davincihrex100/resource_hrex_consent.bal | 114 ++--- davincihrex100/resource_hrex_coverage.bal | 20 +- davincihrex100/search_param_constructors.bal | 177 ++++++++ 6 files changed, 811 insertions(+), 62 deletions(-) create mode 100644 davincihrex100/fhir_member_matcher.bal create mode 100644 davincihrex100/member_matcher.bal create mode 100644 davincihrex100/search_param_constructors.bal diff --git a/davincihrex100/Dependencies.toml b/davincihrex100/Dependencies.toml index b6f54344..f1a4bf9c 100644 --- a/davincihrex100/Dependencies.toml +++ b/davincihrex100/Dependencies.toml @@ -44,7 +44,7 @@ modules = [ [[package]] org = "ballerina" name = "crypto" -version = "2.6.2" +version = "2.6.3" dependencies = [ {org = "ballerina", name = "jballerina.java"}, {org = "ballerina", name = "time"} @@ -64,7 +64,7 @@ dependencies = [ [[package]] org = "ballerina" name = "http" -version = "2.10.13" +version = "2.10.14" dependencies = [ {org = "ballerina", name = "auth"}, {org = "ballerina", name = "cache"}, @@ -88,6 +88,10 @@ dependencies = [ {org = "ballerina", name = "time"}, {org = "ballerina", name = "url"} ] +modules = [ + {org = "ballerina", packageName = "http", moduleName = "http"}, + {org = "ballerina", packageName = "http", moduleName = "http.httpscerr"} +] [[package]] org = "ballerina" @@ -281,6 +285,15 @@ dependencies = [ {org = "ballerina", name = "time"} ] +[[package]] +org = "ballerinai" +name = "observe" +version = "0.0.0" +dependencies = [ + {org = "ballerina", name = "jballerina.java"}, + {org = "ballerina", name = "observe"} +] + [[package]] org = "ballerinax" name = "health.base" @@ -295,6 +308,22 @@ dependencies = [ {org = "ballerina", name = "uuid"} ] +[[package]] +org = "ballerinax" +name = "health.clients.fhir" +version = "2.0.1" +dependencies = [ + {org = "ballerina", name = "http"}, + {org = "ballerina", name = "io"}, + {org = "ballerina", name = "log"}, + {org = "ballerina", name = "url"}, + {org = "ballerinai", name = "observe"}, + {org = "ballerinax", name = "health.base"} +] +modules = [ + {org = "ballerinax", packageName = "health.clients.fhir", moduleName = "health.clients.fhir"} +] + [[package]] org = "ballerinax" name = "health.fhir.r4" @@ -322,10 +351,26 @@ name = "health.fhir.r4.davincihrex100" version = "1.0.0" dependencies = [ {org = "ballerina", name = "constraint"}, + {org = "ballerina", name = "http"}, {org = "ballerina", name = "log"}, - {org = "ballerinax", name = "health.fhir.r4"} + {org = "ballerinax", name = "health.clients.fhir"}, + {org = "ballerinax", name = "health.fhir.r4"}, + {org = "ballerinax", name = "health.fhir.r4.uscore501"} ] modules = [ {org = "ballerinax", packageName = "health.fhir.r4.davincihrex100", moduleName = "health.fhir.r4.davincihrex100"} ] +[[package]] +org = "ballerinax" +name = "health.fhir.r4.uscore501" +version = "1.3.2" +dependencies = [ + {org = "ballerina", name = "constraint"}, + {org = "ballerina", name = "log"}, + {org = "ballerinax", name = "health.fhir.r4"} +] +modules = [ + {org = "ballerinax", packageName = "health.fhir.r4.uscore501", moduleName = "health.fhir.r4.uscore501"} +] + diff --git a/davincihrex100/fhir_member_matcher.bal b/davincihrex100/fhir_member_matcher.bal new file mode 100644 index 00000000..b0e4bd97 --- /dev/null +++ b/davincihrex100/fhir_member_matcher.bal @@ -0,0 +1,432 @@ +// Copyright (c) 2024, WSO2 LLC. (http://www.wso2.com). + +// WSO2 LLC. licenses this file to you under the Apache License, +// Version 2.0 (the "License"); you may not use this file except +// in compliance with the License. +// You may obtain a copy of the License at + +// http://www.apache.org/licenses/LICENSE-2.0 + +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. + +import ballerina/http; +import ballerina/log; +import ballerinax/health.clients.fhir; +import ballerinax/health.fhir.r4; +import ballerinax/health.fhir.r4.uscore501; + +// FHIR errors for member match operation +// Error indicating no match was found +final r4:FHIRError & readonly NO_MATCH_ERROR = r4:createFHIRError("No match found", r4:ERROR, + r4:PROCESSING_NOT_FOUND, httpStatusCode = http:STATUS_UNPROCESSABLE_ENTITY); + +// Error indicating multiple matches were found +final r4:FHIRError & readonly MULTIPLE_MATCHES_ERROR = r4:createFHIRError("Multiple matches found", r4:ERROR, + r4:PROCESSING_MULTIPLE_MATCHES, httpStatusCode = http:STATUS_UNPROCESSABLE_ENTITY); + +// Error indicating a failure in processing the consent +final r4:FHIRError & readonly CONSENT_PROCESSING_ERROR = r4:createFHIRError("Consent processing failed", + r4:ERROR, r4:PROCESSING, httpStatusCode = http:STATUS_UNPROCESSABLE_ENTITY); + +// Error indicating an internal server error occurred during the member matching process +final r4:FHIRError & readonly INTERNAL_ERROR = r4:createFHIRError("Internal server error", r4:ERROR, + r4:PROCESSING, httpStatusCode = http:STATUS_INTERNAL_SERVER_ERROR); + +# Default FHIR member matcher implementation. +public isolated class FhirMemberMatcher { + *MemberMatcher; + + // Custom member matcher + private final MemberMatcher? customMemberMatcher; + + // FHIR repository client + private final fhir:FHIRConnector fhirClient; + + // Consent service client and headers + private final map? & readonly consentServiceClientHeaders; + private final http:Client consentServiceClient; + + // Coverage service client and headers + private final map? & readonly coverageServiceClientHeaders; + private final http:Client? coverageServiceClient; + + // TODO: Make the init() isolated once the FHIR connector's init() is made isolated + // FHIR client issue: https://github.com/wso2-enterprise/open-healthcare/issues/1589 + public function init(MatcherConfig matcherConfig, MemberMatcher? customMemberMatcher) returns error? { + // Initialize FHIR client + self.fhirClient = check new (matcherConfig.fhirClientConfig); + + // Initialize consent service client and headers + ExternalServiceConfig consentServiceConfig = matcherConfig.consentServiceConfig; + self.consentServiceClient = check initHttpClient(consentServiceConfig.url, consentServiceConfig.clientConfig); + self.consentServiceClientHeaders = consentServiceConfig?.requestHeaders.cloneReadOnly() ?: (); + + // Initialize coverage service client and headers + ExternalServiceConfig? coverageServiceConfig = matcherConfig.coverageServiceConfig; + if coverageServiceConfig != () && coverageServiceConfig.url != "" { + self.coverageServiceClient = check initHttpClient(coverageServiceConfig.url, + coverageServiceConfig.clientConfig); + } else { + self.coverageServiceClient = (); + } + self.coverageServiceClientHeaders = coverageServiceConfig?.requestHeaders.cloneReadOnly() ?: (); + + // Initialize custom matcher + self.customMemberMatcher = customMemberMatcher; + } + + # Matches a member using provided demographics and coverage information. + # + # This function attempts to match a member. If a custom `MemberMatcher` is configured, it utilizes that for the + # matching process. Otherwise, it defaults to the following default matching logic, + # + # 1. Match the patient. If no matching patients are found, return a 422 error. + # 2. If one or more matching patients are found, match coverage for each patient. + # 3. After matching, if only one patient is found with matching coverage(s), proceed; if not, return 422. + # 4. Process consent. If valid consent is present, continue; else, return 422. + # 5. Link new coverage if present. + # 6. Return the member identifier of the matched patient. + # + # + memberMatchResources - The resources of the member match request + # + return - A `MemberIdentifier` on successful match or `r4:FHIRError` on failure + public isolated function matchMember(anydata memberMatchResources) + returns MemberIdentifier|r4:FHIRError { + // If a custom member matcher is available, use it to match the member + MemberMatcher? customMemberMatcher = self.customMemberMatcher; + if customMemberMatcher != () { + return customMemberMatcher.matchMember(memberMatchResources); + } + + if memberMatchResources !is MemberMatchResources { + log:printError("Invalid type for \"memberMatchResources\". Expected type: MemberMatchResources."); + return INTERNAL_ERROR; + } + + // Member match resources + uscore501:USCorePatientProfile memberPatient = memberMatchResources.memberPatient; + HRexConsent consent = memberMatchResources.consent; + HRexCoverage coverageToMatch = memberMatchResources.coverageToMatch; + HRexCoverage? coverageToLink = memberMatchResources.coverageToLink; + + // The spec doesn't define a member matching logic. Therefore, this implementation uses the following: + + // Match patient + map patientSearchParams = constructPatientSearchParams(memberPatient); + log:printDebug(string `Patient matching search params: ${patientSearchParams.toString()}`); + uscore501:USCorePatientProfile[] matchedPatients = check searchPatients(patientSearchParams, self.fhirClient); + + r4:Reference patientReference = {}; + uscore501:USCorePatientProfile[] matchedPatientsWithMatchingCoverage = []; + + foreach uscore501:USCorePatientProfile matchedPatient in matchedPatients { + // Update patient reference + string? patientId = matchedPatient.id; + if patientId == () { + log:printError(string `Missing resource ID in patient resource: ${matchedPatient.toString()}`); + continue; + } + patientReference = {reference: "Patient/" + patientId}; + + // Match coverage + map coverageSearchParams = constructCoverageSearchParams(coverageToMatch, + patientReference); + log:printDebug(string `Coverage matching search params: ${coverageSearchParams.toString()}`); + if check isCoverageMatchFound(coverageSearchParams, self.fhirClient) { + matchedPatientsWithMatchingCoverage.push(matchedPatient); + } + } + + if matchedPatientsWithMatchingCoverage.length() == 0 { + return NO_MATCH_ERROR; + } else if matchedPatientsWithMatchingCoverage.length() > 1 { + return MULTIPLE_MATCHES_ERROR; + } + + // Process consent using consent service + updateConsentPatientAndPerformer(consent, patientReference); + check processConsent(consent, self.consentServiceClient, + self.consentServiceClientHeaders); + + // Link new coverage using coverage service + if coverageToLink != () { + http:Client? coverageServiceClient = self.coverageServiceClient; + if coverageServiceClient != () { + updateCoverageBeneficiary(coverageToLink, patientReference); + _ = start linkCoverage(coverageToLink.clone(), coverageServiceClient, + self.coverageServiceClientHeaders); + } else { + log:printDebug("Coverage service client is nil. Coverage linking is not supported"); + } + } + + // Get member identifier of the matched patient + MemberIdentifier? memberIdentifier = getPatientMemberIdentifier(matchedPatientsWithMatchingCoverage[0]); + if memberIdentifier == () { // No member identifier for the matched patient + log:printError("No member identifier found for the matched patient"); + return NO_MATCH_ERROR; + } + + return memberIdentifier; + } +} + +# Searches for patients matching the given search parameters in a FHIR server. +# +# + patientSearchParams - A map of patient search parameters used for searching the FHIR server +# + fhirClient - The FHIR client instance used to communicate with the FHIR server +# + return - An array of `USCorePatientProfile` patients or an `r4:FHIRError` if an error occurs +# during the search operation +isolated function searchPatients(map patientSearchParams, + fhir:FHIRConnector fhirClient) returns uscore501:USCorePatientProfile[]|r4:FHIRError { + // Search for matching patients + r4:Bundle patientBundle = check executeFhirSearch(fhirClient, "Patient", patientSearchParams); + log:printDebug(string `Matching patients bundle: ${patientBundle.toString()}`); + + r4:BundleEntry[]? patientBundleEntries = patientBundle.entry; + if patientBundleEntries == () || patientBundleEntries.length() == 0 { // No matches + return []; + } + + uscore501:USCorePatientProfile[] matches = []; + foreach r4:BundleEntry bundleEntry in patientBundleEntries { + uscore501:USCorePatientProfile|error matchedPatient = bundleEntry?.'resource.cloneWithType(); + if matchedPatient is uscore501:USCorePatientProfile { + matches.push(matchedPatient); + } else { + log:printError("Matched patient resource is not a valid US Core patient resource", matchedPatient); + } + } + + return matches; +} + +# Checks if there is a matching coverage based on the given search parameters. +# +# + coverageSearchParams - A map of coverage search parameters used for searching the FHIR server +# + fhirClient - The FHIR client instance used to communicate with the FHIR server +# + return - `true` if at least one matching coverage is found, `false` if no matches found, +# or an `r4:FHIRError` if an error occurs during the search operation +isolated function isCoverageMatchFound(map coverageSearchParams, + fhir:FHIRConnector fhirClient) returns boolean|r4:FHIRError { + // Search for matching coverages + r4:Bundle coverageBundle = check executeFhirSearch(fhirClient, "Coverage", coverageSearchParams); + log:printDebug(string `Matching coverages bundle: ${coverageBundle.toString()}`); + + r4:BundleEntry[]? coverageBundleEntries = coverageBundle.entry; + if coverageBundleEntries == () || coverageBundleEntries.length() == 0 { + return false; + } + + return true; +} + +# Retrieves the member identifier from a US Core patient. +# +# + patient - The US Core Patient Profile to be searched +# + return - A `MemberIdentifier` if a matching identifier is found, or `()` if no matching +# identifier is found +isolated function getPatientMemberIdentifier(uscore501:USCorePatientProfile patient) returns MemberIdentifier? { + foreach uscore501:USCorePatientProfileIdentifier identifier in patient.identifier { + r4:Coding[]? identifierCodings = identifier?.'type?.coding; + if identifierCodings == () { + continue; + } + + foreach r4:Coding coding in identifierCodings { + if coding.system == "http://terminology.hl7.org/CodeSystem/v2-0203" && coding.code == "MB" { + return identifier.value; + } + } + } + return; +} + +# Processes the consent by sending it to the consent service using the consent service client. +# +# + consent - The consent to be sent to the consent service +# + consentServiceClient - The consent service client +# + headers - The headers for the request. This is an optional parameter. +# + return - A `r4:FHIRError` is there is an error processing the consent, or `()` otherwise +isolated function processConsent(HRexConsent consent, http:Client consentServiceClient, + map? headers) returns r4:FHIRError? { + // Send request to consent service + http:Response|http:ClientError consentPostRes = consentServiceClient->post("/", consent, headers); + if consentPostRes is http:ClientError { + log:printError("Error sending consent to the consent service", consentPostRes); + return INTERNAL_ERROR; + } + + log:printDebug("Consent service response info", statusCode = consentPostRes.statusCode, + payload = getHttpResponseTextPayload(consentPostRes)); + + // Check consent service response + if consentPostRes.statusCode != http:STATUS_OK && consentPostRes.statusCode != http:STATUS_CREATED { + log:printError("Received a non-successful response from the consent service", + statusCode = consentPostRes.statusCode); + return CONSENT_PROCESSING_ERROR; + } +} + +# Sends coverage to the coverage service to be linked. +# +# + coverageToLink - The coverage to send +# + coverageServiceClient - Client for the coverage service +# + headers - The headers for the request. This is an optional parameter. +isolated function linkCoverage(HRexCoverage coverageToLink, http:Client coverageServiceClient, + map? headers) { + // Send POST request to coverage service + http:Response|http:ClientError coveragePostRes = coverageServiceClient->post("/", coverageToLink, headers); + if coveragePostRes is http:Response { + log:printDebug("Coverage service response info", statusCode = coveragePostRes.statusCode, + payload = getHttpResponseTextPayload(coveragePostRes)); + } else { + log:printError("Error sending coverage to the coverage service", coveragePostRes); + } +} + +# Executes a FHIR search with given parameters. +# +# + fhirClient - The FHIR client to perform the search +# + 'resource - The type of FHIR resource to search for +# + searchParams - The search parameters as a map +# + return - A `r4:Bundle` on a successful search, or `r4:FHIRError` on failure +isolated function executeFhirSearch(fhir:FHIRConnector fhirClient, string 'resource, + map searchParams) returns r4:Bundle|r4:FHIRError { + fhir:FHIRResponse|fhir:FHIRError searchRes = fhirClient->search('resource, searchParams); + if searchRes is fhir:FHIRError { + log:printError("FHIR search error", searchRes); + return INTERNAL_ERROR; + } + + r4:Bundle|error searchBundle = searchRes.'resource.cloneWithType(); + if searchBundle is error { + log:printError("FHIR search response is not a valid FHIR Bundle", searchBundle); + return INTERNAL_ERROR; + } + + return searchBundle; +} + +# Constructs search parameters for patient search. +# +# + patient - The `USCorePatientProfile` resource +# + return - A map of search parameters for the patient search +isolated function constructPatientSearchParams(uscore501:USCorePatientProfile patient) + returns map { + // TODO: Add custom search parameters support + // Issue: https://github.com/wso2-enterprise/open-healthcare/issues/1603 + + map patientSearchParams = {}; + + // identifier + constructAndAddPatientIdentifierParam(patient, patientSearchParams); + + // given, family + constructAndAddPatientNameParams(patient, patientSearchParams); + + // telecom + constructAndAddPatientTelecomParam(patient, patientSearchParams); + + // gender + addSearchParam("gender", [patient.gender], patientSearchParams); + + // birthdate + addSearchParam("birthdate", optionalStrToArray(patient.birthDate), patientSearchParams); + + // address, address-ciy, address-country, address-state, address-postalcode + constructAndAddPatientAddressParams(patient, patientSearchParams); + + // language + constructAndAddPatientLanguageParam(patient, patientSearchParams); + + return patientSearchParams; +} + +# Constructs search parameters for coverage search. +# +# + coverage - The `USCorePatientProfile` resource +# + beneficiary - The beneficiary of the coverage +# + return - A map of search parameters for the patient search +isolated function constructCoverageSearchParams(HRexCoverage coverage, r4:Reference beneficiary) returns map { + // TODO: Add custom search parameters support + // Issue: https://github.com/wso2-enterprise/open-healthcare/issues/1603 + map coverageSearchParams = {}; + + // identifier + constructAndAddCoverageIdentifierParam(coverage, coverageSearchParams); + + // subscriber + addSearchParam("subscriber", optionalStrToArray(coverage.subscriber?.reference), coverageSearchParams); + + // beneficiary + addSearchParam("beneficiary", optionalStrToArray(beneficiary.reference), coverageSearchParams); + + // payor + constructAndAddCoveragePayorParam(coverage, coverageSearchParams); + + return coverageSearchParams; +} + +# Updates the patient and performer references in a `HRexConsent` resource. +# +# + consent - The consent to update +# + patientReference - The patient reference to set +isolated function updateConsentPatientAndPerformer(HRexConsent consent, r4:Reference patientReference) { + consent.patient = patientReference; + if consent.performer.length() > 0 { + consent.performer[0] = patientReference; + } +} + +# Updates the beneficiary reference in a `HRexCoverage` resource. +# +# + coverageToLink - The coverage to update +# + patientReference - The patient reference to set as beneficiary +isolated function updateCoverageBeneficiary(HRexCoverage coverageToLink, r4:Reference patientReference) { + coverageToLink.beneficiary = patientReference; +} + +# Adds a search parameter to the search parameters map. +# +# + searchParam - The search parameter name +# + values - The array of values for the search parameter +# + searchParams - The map of search parameters to update +isolated function addSearchParam(string searchParam, string[] values, map searchParams) { + if values.length() != 0 { // Only add if there are values + if searchParams.hasKey(searchParam) { + searchParams.get(searchParam).push(...values); + } else { + searchParams[searchParam] = values; + } + } +} + +# Converts an optional string to an array. +# +# + value - The optional string value to convert +# + return - An array of strings, either empty or containing the input string +isolated function optionalStrToArray(string? value) returns string[] + => value == () ? [] : [value]; + +# Retrieves the text payload from an HTTP response. +# +# + response - The HTTP response to extract the text payload from +# + return - The text payload as a string if present, or `()` if not present or in case of an error +isolated function getHttpResponseTextPayload(http:Response response) returns string? { + string|http:ClientError textPayload = response.getTextPayload(); + return textPayload is string ? textPayload : (); +} + +# Initializes an HTTP client. +# +# + url - The URL of the service the client will connect to +# + clientConfig - Configuration for the client. This is an optional parameter +# + return - An `http:Client` instance on success or an `http:ClientError` on failure +isolated function initHttpClient(string url, + http:ClientConfiguration? clientConfig) returns http:Client|http:ClientError + => clientConfig != () ? new (url, clientConfig) : new (url); diff --git a/davincihrex100/member_matcher.bal b/davincihrex100/member_matcher.bal new file mode 100644 index 00000000..552cec45 --- /dev/null +++ b/davincihrex100/member_matcher.bal @@ -0,0 +1,79 @@ +// Copyright (c) 2024, WSO2 LLC. (http://www.wso2.com). + +// WSO2 LLC. licenses this file to you under the Apache License, +// Version 2.0 (the "License"); you may not use this file except +// in compliance with the License. +// You may obtain a copy of the License at + +// http://www.apache.org/licenses/LICENSE-2.0 + +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. + +import ballerina/http; +import ballerinax/health.clients.fhir; +import ballerinax/health.fhir.r4; +import ballerinax/health.fhir.r4.uscore501; + +# Holds the resources required for member matching. +# +# + memberPatient - The `USCorePatientProfile` of the member. This resource contains the patient's +# demographic and other identifying information necessary for the matching process +# + consent - The `HRexConsent` resource that specifies the member's consent status for data sharing and +# processing, ensuring compliance with privacy regulations +# + coverageToMatch - The `HRexCoverage` resource representing the insurance coverage information that needs +# to be matched +# + coverageToLink - An optional `HRexCoverage` resource with new coverage information that, if provided, +# to be linked to the member's profile upon successful matching +public type MemberMatchResources record {| + uscore501:USCorePatientProfile memberPatient; + HRexConsent consent; + HRexCoverage coverageToMatch; + HRexCoverage? coverageToLink; +|}; + +# Represents a member identifier value. +public type MemberIdentifier string; + +# Configuration for connecting to an external service. +# +# + url - The endpoint URL of the external service +# + requestHeaders - Map of request headers to include in each HTTP request to the service. +# Useful for specifying authentication tokens, content types, or other custom headers. This is an optional field. +# + clientConfig - Optional configuration for the HTTP client used to connect to the service. This can +# include settings like proxy configurations, and timeout values. This is an optional field. +public type ExternalServiceConfig record {| + string url; + map requestHeaders?; + http:ClientConfiguration clientConfig?; +|}; + +# Configuration for the member matcher. +# +# + fhirClientConfig - Configuration for the FHIR repository client. +# + consentServiceConfig - Configuration for the external consent service, responsible for +# managing and verifying consent related to member data. +# + coverageServiceConfig - Configuration for an external coverage service, used +# for linking new coverage information. This is an optional field. +public type MatcherConfig record {| + fhir:FHIRConnectorConfig fhirClientConfig; + ExternalServiceConfig consentServiceConfig; + ExternalServiceConfig coverageServiceConfig?; +|}; + +# Defines an abstract member matcher for FHIR-based member matching. +# +# This object serves as an interface for implementing custom member matching logic. +public type MemberMatcher isolated object { + # Matches a member using patient demographics and coverage information. + # + # + memberMatchResources - The resources used for performing the member matching operation. + # + return - A `MemberIdentifier` if a match is found, or a `r4:FHIRError` indicating + # an error. + public isolated function matchMember(anydata memberMatchResources) + returns MemberIdentifier|r4:FHIRError; +}; diff --git a/davincihrex100/resource_hrex_consent.bal b/davincihrex100/resource_hrex_consent.bal index 9c8835a8..f691129c 100644 --- a/davincihrex100/resource_hrex_consent.bal +++ b/davincihrex100/resource_hrex_consent.bal @@ -1,22 +1,17 @@ // Copyright (c) 2023, WSO2 LLC. (http://www.wso2.com). - // WSO2 LLC. licenses this file to you under the Apache License, // Version 2.0 (the "License"); you may not use this file except // in compliance with the License. // You may obtain a copy of the License at - // http://www.apache.org/licenses/LICENSE-2.0 - // Unless required by applicable law or agreed to in writing, // software distributed under the License is distributed on an // "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY // KIND, either express or implied. See the License for the // specific language governing permissions and limitations // under the License. - // AUTO-GENERATED FILE. // This file is auto-generated by Ballerina. - import ballerina/constraint; import ballerinax/health.fhir.r4; @@ -46,15 +41,15 @@ public const RESOURCE_NAME_HREXCONSENT = "Consent"; # + category - A classification of the type of consents found in the statement. This element supports indexing and retrieval of consent statements. # * category Slicings # 1) HRexConsentCategoryDisclosure: Classification of the consent statement - for indexing/retrieval -# - min = 0 -# - max = * +# - min = 0 +# - max = * # # + verification - Whether a treatment instruction (e.g. artificial respiration yes or no) was verified with the patient, his/her family or another authorized person. # + policy - The references to the policies that are included in this consent scope. Policies may be organizational, but are often defined jurisdictionally, or in law. # * policy Slicings # 1) HRexConsentPolicyHrex: Policies covered by this consent -# - min = 1 -# - max = * +# - min = 1 +# - max = * # # + status - Indicates the current state of this consent. @r4:ResourceDefinition { @@ -62,7 +57,7 @@ public const RESOURCE_NAME_HREXCONSENT = "Consent"; baseType: r4:DomainResource, profile: "http://hl7.org/fhir/us/davinci-hrex/StructureDefinition/hrex-consent", elements: { - "dateTime" : { + "dateTime": { name: "dateTime", dataType: r4:dateTime, min: 0, @@ -70,7 +65,7 @@ public const RESOURCE_NAME_HREXCONSENT = "Consent"; isArray: false, path: "Consent.dateTime" }, - "sourceReference" : { + "sourceReference": { name: "sourceReference", dataType: r4:Reference, min: 1, @@ -78,7 +73,7 @@ public const RESOURCE_NAME_HREXCONSENT = "Consent"; isArray: false, path: "Consent.source[x]" }, - "identifier" : { + "identifier": { name: "identifier", dataType: r4:Identifier, min: 0, @@ -86,7 +81,7 @@ public const RESOURCE_NAME_HREXCONSENT = "Consent"; isArray: true, path: "Consent.identifier" }, - "extension" : { + "extension": { name: "extension", dataType: r4:Extension, min: 0, @@ -94,15 +89,15 @@ public const RESOURCE_NAME_HREXCONSENT = "Consent"; isArray: true, path: "Consent.extension" }, - "performer" : { + "performer": { name: "performer", dataType: r4:Reference, min: 1, max: 1, - isArray: false, + isArray: true, path: "Consent.performer" }, - "modifierExtension" : { + "modifierExtension": { name: "modifierExtension", dataType: r4:Extension, min: 0, @@ -110,7 +105,7 @@ public const RESOURCE_NAME_HREXCONSENT = "Consent"; isArray: true, path: "Consent.modifierExtension" }, - "language" : { + "language": { name: "language", dataType: r4:code, min: 0, @@ -119,7 +114,7 @@ public const RESOURCE_NAME_HREXCONSENT = "Consent"; path: "Consent.language", valueSet: "http://hl7.org/fhir/ValueSet/languages" }, - "contained" : { + "contained": { name: "contained", dataType: r4:Resource, min: 0, @@ -127,7 +122,7 @@ public const RESOURCE_NAME_HREXCONSENT = "Consent"; isArray: true, path: "Consent.contained" }, - "policyRule" : { + "policyRule": { name: "policyRule", dataType: r4:CodeableConcept, min: 0, @@ -136,7 +131,7 @@ public const RESOURCE_NAME_HREXCONSENT = "Consent"; path: "Consent.policyRule", valueSet: "http://hl7.org/fhir/ValueSet/consent-policy" }, - "meta" : { + "meta": { name: "meta", dataType: r4:Meta, min: 0, @@ -144,7 +139,7 @@ public const RESOURCE_NAME_HREXCONSENT = "Consent"; isArray: false, path: "Consent.meta" }, - "patient" : { + "patient": { name: "patient", dataType: r4:Reference, min: 1, @@ -152,7 +147,7 @@ public const RESOURCE_NAME_HREXCONSENT = "Consent"; isArray: false, path: "Consent.patient" }, - "provision" : { + "provision": { name: "provision", dataType: HRexConsentProvision, min: 1, @@ -160,7 +155,7 @@ public const RESOURCE_NAME_HREXCONSENT = "Consent"; isArray: false, path: "Consent.provision" }, - "organization" : { + "organization": { name: "organization", dataType: r4:Reference, min: 0, @@ -168,7 +163,7 @@ public const RESOURCE_NAME_HREXCONSENT = "Consent"; isArray: true, path: "Consent.organization" }, - "scope" : { + "scope": { name: "scope", dataType: HRexConsentScope, min: 1, @@ -177,7 +172,7 @@ public const RESOURCE_NAME_HREXCONSENT = "Consent"; path: "Consent.scope", valueSet: "http://hl7.org/fhir/ValueSet/consent-scope" }, - "implicitRules" : { + "implicitRules": { name: "implicitRules", dataType: r4:uri, min: 0, @@ -185,7 +180,7 @@ public const RESOURCE_NAME_HREXCONSENT = "Consent"; isArray: false, path: "Consent.implicitRules" }, - "id" : { + "id": { name: "id", dataType: string, min: 0, @@ -193,7 +188,7 @@ public const RESOURCE_NAME_HREXCONSENT = "Consent"; isArray: false, path: "Consent.id" }, - "text" : { + "text": { name: "text", dataType: r4:Narrative, min: 0, @@ -201,7 +196,7 @@ public const RESOURCE_NAME_HREXCONSENT = "Consent"; isArray: false, path: "Consent.text" }, - "category" : { + "category": { name: "category", dataType: r4:CodeableConcept, min: 1, @@ -210,7 +205,7 @@ public const RESOURCE_NAME_HREXCONSENT = "Consent"; path: "Consent.category", valueSet: "http://hl7.org/fhir/ValueSet/consent-category" }, - "verification" : { + "verification": { name: "verification", dataType: HRexConsentVerification, min: 0, @@ -218,7 +213,7 @@ public const RESOURCE_NAME_HREXCONSENT = "Consent"; isArray: true, path: "Consent.verification" }, - "policy" : { + "policy": { name: "policy", dataType: HRexConsentPolicy, min: 0, @@ -226,7 +221,7 @@ public const RESOURCE_NAME_HREXCONSENT = "Consent"; isArray: true, path: "Consent.policy" }, - "status" : { + "status": { name: "status", dataType: HRexConsentStatus, min: 1, @@ -250,7 +245,13 @@ public type HRexConsent record {| r4:Reference sourceReference; r4:Identifier[] identifier?; r4:Extension[] extension?; - r4:Reference performer; + // The 'performer' field's type was manually corrected. + // See issue: https://github.com/wso2-enterprise/open-healthcare/issues/1590 + @constraint:Array { + minLength: 1, + maxLength: 1 + } + r4:Reference[] performer; r4:Extension[] modifierExtension?; r4:code language?; r4:Resource[] contained?; @@ -264,13 +265,13 @@ public type HRexConsent record {| string id?; r4:Narrative text?; @constraint:Array { - minLength: 1 + minLength: 1 } r4:CodeableConcept[] category; HRexConsentVerification[] verification?; HRexConsentPolicy[] policy?; HRexConsentStatus status; - r4:Element ...; + r4:Element...; |}; # FHIR HRexConsentCategoryDisclosure datatype record. @@ -299,7 +300,7 @@ public type HRexConsentCategoryDisclosure record {| *r4:CodeableConcept; @constraint:Array { - minLength: 1 + minLength: 1 } HRexConsentCategoryCoding[] coding; |}; @@ -402,7 +403,7 @@ public type HRexConsentProvisionActorRole record {| *r4:CodeableConcept; @constraint:Array { - minLength: 1 + minLength: 1 } HRexConsentProvisionActorRoleCoding[] coding; |}; @@ -575,10 +576,10 @@ public type HRexConsentPolicyUriHrex record {| # HRexConsentProvisionDataMeaning enum public enum HRexConsentProvisionDataMeaning { - CODE_MEANING_INSTANCE = "instance", - CODE_MEANING_RELATED = "related", - CODE_MEANING_DEPENDENTS = "dependents", - CODE_MEANING_AUTHOREDBY = "authoredby" + CODE_MEANING_INSTANCE = "instance", + CODE_MEANING_RELATED = "related", + CODE_MEANING_DEPENDENTS = "dependents", + CODE_MEANING_AUTHOREDBY = "authoredby" } # FHIR HRexConsentProvisionAction datatype record. @@ -607,7 +608,7 @@ public type HRexConsentProvisionAction record {| *r4:CodeableConcept; @constraint:Array { - minLength: 1 + minLength: 1 } HRexConsentProvisionActionCoding[] coding; |}; @@ -710,7 +711,7 @@ public type HRexConsentProvisionActorRoleOne record {| *r4:CodeableConcept; @constraint:Array { - minLength: 1 + minLength: 1 } HRexConsentProvisionActorRoleCodingOne[] coding; |}; @@ -829,7 +830,7 @@ public type HRexConsentProvisionActorRoleOne record {| dataType: HRexConsentProvisionAction, min: 1, max: 1, - isArray: false, + isArray: true, description: "Actions controlled by this Rule.", path: "Consent.provision.action" }, @@ -870,7 +871,13 @@ public type HRexConsentProvision record {| r4:Extension[] modifierExtension?; HRexConsentProvisionType 'type = "permit"; HRexConsentProvisionActor[] actor?; - HRexConsentProvisionAction action; + // The 'action' field's type was manually corrected. + // See issue: https://github.com/wso2-enterprise/open-healthcare/issues/1590 + @constraint:Array { + minLength: 1, + maxLength: 1 + } + HRexConsentProvisionAction[] action; string id?; r4:Coding 'class?; |}; @@ -949,12 +956,12 @@ public type HRexConsentPolicy record {| # HRexConsentStatus enum public enum HRexConsentStatus { - CODE_STATUS_INACTIVE = "inactive", - CODE_STATUS_PROPOSED = "proposed", - CODE_STATUS_REJECTED = "rejected", - CODE_STATUS_DRAFT = "draft", - CODE_STATUS_ACTIVE = "active", - CODE_STATUS_ENTERED_IN_ERROR = "entered-in-error" + CODE_STATUS_INACTIVE = "inactive", + CODE_STATUS_PROPOSED = "proposed", + CODE_STATUS_REJECTED = "rejected", + CODE_STATUS_DRAFT = "draft", + CODE_STATUS_ACTIVE = "active", + CODE_STATUS_ENTERED_IN_ERROR = "entered-in-error" } # FHIR HRexConsentPolicyHrex datatype record. @@ -1138,7 +1145,7 @@ public type HRexConsentScope record {| *r4:CodeableConcept; @constraint:Array { - minLength: 1 + minLength: 1 } HRexConsentScopeCoding[] coding; |}; @@ -1295,8 +1302,8 @@ public type HRexConsentProvisionActorRoleCoding record {| # HRexConsentProvisionType enum public enum HRexConsentProvisionType { - CODE_TYPE_DENY = "deny", - CODE_TYPE_PERMIT = "permit" + CODE_TYPE_DENY = "deny", + CODE_TYPE_PERMIT = "permit" } # FHIR HRexConsentProvisionActionCoding datatype record. @@ -1337,4 +1344,3 @@ public type HRexConsentProvisionActionCoding record {| r4:uri system = "http://terminology.hl7.org/CodeSystem/consentaction"; r4:code code = "disclose"; |}; - diff --git a/davincihrex100/resource_hrex_coverage.bal b/davincihrex100/resource_hrex_coverage.bal index 327c33a8..d84aad5b 100644 --- a/davincihrex100/resource_hrex_coverage.bal +++ b/davincihrex100/resource_hrex_coverage.bal @@ -116,7 +116,7 @@ public const RESOURCE_NAME_HREXCOVERAGE = "Coverage"; dataType: r4:Reference, min: 1, max: 1, - isArray: false, + isArray: true, path: "Coverage.payor" }, "id" : { @@ -173,7 +173,7 @@ public const RESOURCE_NAME_HREXCOVERAGE = "Coverage"; dataType: HRexCoverageIdentifier, min: 0, max: 1, - isArray: false, + isArray: true, path: "Coverage.identifier" }, "costToBeneficiary" : { @@ -282,14 +282,25 @@ public type HRexCoverage record {| r4:code language?; r4:CodeableConcept 'type?; string network?; - r4:Reference payor; + // The 'payor' field's type was manually corrected. + // See issue: https://github.com/wso2-enterprise/open-healthcare/issues/1590 + @constraint:Array { + minLength: 1, + maxLength: 1 + } + r4:Reference[] payor; string id?; r4:Narrative text?; r4:CodeableConcept relationship?; HRexCoverageClass[] 'class?; string dependent?; r4:positiveInt 'order?; - HRexCoverageIdentifier identifier?; + // The 'identifier' field's type was manually corrected. + // See issue: https://github.com/wso2-enterprise/open-healthcare/issues/1590 + @constraint:Array { + maxLength: 1 + } + HRexCoverageIdentifier[] identifier?; HRexCoverageCostToBeneficiary[] costToBeneficiary?; r4:Period period?; r4:Reference subscriber?; @@ -827,4 +838,3 @@ public type HRexCoverageClassGroup record {| HRexCoverageClassType 'type; string value; |}; - diff --git a/davincihrex100/search_param_constructors.bal b/davincihrex100/search_param_constructors.bal new file mode 100644 index 00000000..3e701f19 --- /dev/null +++ b/davincihrex100/search_param_constructors.bal @@ -0,0 +1,177 @@ +// Copyright (c) 2024, WSO2 LLC. (http://www.wso2.com). + +// WSO2 LLC. licenses this file to you under the Apache License, +// Version 2.0 (the "License"); you may not use this file except +// in compliance with the License. +// You may obtain a copy of the License at + +// http://www.apache.org/licenses/LICENSE-2.0 + +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. + +import ballerinax/health.fhir.r4; +import ballerinax/health.fhir.r4.uscore501; + +# Constructs and adds the patient identifier search parameter to the search parameters map. +# +# + patient - The `USCorePatientProfile` resource +# + patientSearchParams - The map of search parameters to update +isolated function constructAndAddPatientIdentifierParam(uscore501:USCorePatientProfile patient, + map patientSearchParams) { + string[] identifierParamValues = []; + + foreach uscore501:USCorePatientProfileIdentifier patientIdentifier in patient.identifier { + uscore501:USCorePatientProfileIdentifierUse? use = patientIdentifier.use; + r4:uri system = patientIdentifier.system; + string value = patientIdentifier.value; + if use != () && use == uscore501:CODE_USE_TEMP { // Temporary identifiers are not used for the matching + continue; + } + identifierParamValues.push(string `${system}|${value}`); + } + + addSearchParam("identifier", identifierParamValues, patientSearchParams); +} + +# Constructs and adds patient name search parameters to a search parameters map. +# +# + patient - The `USCorePatientProfile` resource +# + patientSearchParams - The map of search parameters to update +isolated function constructAndAddPatientNameParams(uscore501:USCorePatientProfile patient, + map patientSearchParams) { + string[] givenParamValues = []; + string[] familyParamValues = []; + + foreach uscore501:USCorePatientProfileName patientName in patient.name { + string[]? givenNames = patientName.given; + if givenNames != () { + givenParamValues.push(...givenNames); + } + string? familyName = patientName.family; + if familyName != () { + familyParamValues.push(familyName); + } + } + + addSearchParam("given", givenParamValues, patientSearchParams); + addSearchParam("family", familyParamValues, patientSearchParams); +} + +# Constructs and adds patient telecom search parameter to the search parameters map. +# +# + patient - The `USCorePatientProfile` resource +# + patientSearchParams - The map of search parameters to update +isolated function constructAndAddPatientTelecomParam(uscore501:USCorePatientProfile patient, + map patientSearchParams) { + string[] telecomParamValues = []; + + uscore501:USCorePatientProfileTelecom[]? patientTelecoms = patient.telecom; + if patientTelecoms != () { + foreach uscore501:USCorePatientProfileTelecom contactPoint in patientTelecoms { + telecomParamValues.push(contactPoint.value); + } + } + + addSearchParam("telecom", telecomParamValues, patientSearchParams); +} + +# Constructs and adds patient address search parameters to the search parameters map. +# +# + patient - The `USCorePatientProfile` resource +# + patientSearchParams - The map of search parameters to update +isolated function constructAndAddPatientAddressParams(uscore501:USCorePatientProfile patient, + map patientSearchParams) { + uscore501:USCorePatientProfileAddress[]? patientAddresses = patient.address; + if patientAddresses != () { + foreach uscore501:USCorePatientProfileAddress patientAddress in patientAddresses { + // Only the billing address is considered + if patientAddress.use != () && patientAddress.use == uscore501:CODE_USE_BILLING { + addSearchParam("address", getAddressLines(patientAddress), patientSearchParams); + addSearchParam("city", optionalStrToArray(patientAddress.city), patientSearchParams); + addSearchParam("country", optionalStrToArray(patientAddress.country), patientSearchParams); + addSearchParam("state", optionalStrToArray(patientAddress.state), patientSearchParams); + addSearchParam("postalCode", optionalStrToArray(patientAddress.postalCode), patientSearchParams); + } + } + } +} + +# Constructs and adds patient language search parameter to the search parameters map. +# +# + patient - The `USCorePatientProfile` resource +# + patientSearchParams - The map of search parameters to update +isolated function constructAndAddPatientLanguageParam(uscore501:USCorePatientProfile patient, + map patientSearchParams) { + uscore501:USCorePatientProfileCommunication[]? patientCommunications = patient.communication; + if patientCommunications == () { + return; + } + + string[] languageParamValues = []; + foreach uscore501:USCorePatientProfileCommunication patientCommunication in patientCommunications { + r4:CodeableConcept languageConcept = patientCommunication.language; + r4:Coding[]? languageCodings = languageConcept.coding; + if languageCodings != () { + foreach r4:Coding languageCoding in languageCodings { + r4:uri? codingSystem = languageCoding.system; + r4:code? codingCode = languageCoding.code; + if codingSystem != () && codingCode != () { + languageParamValues.push(string `${codingSystem}|${codingCode}`); + } + } + } + } + + addSearchParam("language", languageParamValues, patientSearchParams); +} + +# Extracts address lines from a `USCorePatientProfileAddress`. +# +# + patientAddress - The `USCorePatientProfileAddress` +# + return - An array of address lines +isolated function getAddressLines(uscore501:USCorePatientProfileAddress patientAddress) returns string[] { + string[]? lines = patientAddress.line; + return lines is string[] ? lines : []; +} + +# Constructs and adds the coverage identifier search parameter to the search parameters map. +# +# + coverage - The `HRexCoverage` resource +# + coverageSearchParams - The map of search parameters to update +isolated function constructAndAddCoverageIdentifierParam(HRexCoverage coverage, map coverageSearchParams) { + string[] identifierParamValues = []; + + HRexCoverageIdentifier[]? coverageIdentifiers = coverage.identifier; + if coverageIdentifiers != () { + foreach HRexCoverageIdentifier coverageIdentifier in coverageIdentifiers { + r4:uri? system = coverageIdentifier.system; + string value = coverageIdentifier.value; + identifierParamValues.push(system != () ? string `${system}|${value}` : value); + } + } + + addSearchParam("identifier", identifierParamValues, coverageSearchParams); +} + +# Constructs and adds the coverage payor search parameter to the search parameters map. +# +# + coverage - The `HRexCoverage` resource +# + coverageSearchParams - The map of search parameters to update +isolated function constructAndAddCoveragePayorParam(HRexCoverage coverage, map coverageSearchParams) { + string[] payorParamValues = []; + + r4:Reference[] coveragePayorReferences = coverage.payor; + foreach r4:Reference reference in coveragePayorReferences { + string? literalReference = reference.reference; + if literalReference != () { + payorParamValues.push(literalReference); + } + } + + addSearchParam("payor", payorParamValues, coverageSearchParams); +}