PackagesCanonicalsLogsProblems
    Packages
    io.health-samurai.core.r4@0.2608.0
    http://health-samurai.io/fhir/core/StructureDefinition/parameters-configureApiProfile
description: Input parameters for the $configure-api operation.
package_name: io.health-samurai.core.r4
derivation: constraint
name: ConfigureApiProfile
type: Parameters
elements:
  parameter:
    index: 0
    slicing:
      rules: closed
      discriminator:
      - {path: name, type: value}
      min: 1
      slices:
        resourceType:
          match: {name: resourceType}
          schema:
            _required: true
            index: 1
            elements:
              name:
                pattern: {type: String, value: resourceType}
                index: 2
              value:
                choices: [valueString]
                index: 4
              valueString: {type: string, choiceOf: value, index: 5}
              resource: {index: 6}
              part: {index: 7}
            required: [valueString, value]
        storageId:
          match: {name: storageId}
          schema:
            _required: true
            index: 8
            elements:
              name:
                pattern: {type: String, value: storageId}
                index: 9
              value:
                choices: [valueString]
                index: 11
              valueString: {type: string, choiceOf: value, index: 12}
              resource: {index: 13}
              part: {index: 14}
            required: [valueString, value]
        apiTemplate:
          match: {name: apiTemplate}
          schema:
            _required: true
            index: 15
            elements:
              name:
                pattern: {type: String, value: apiTemplate}
                index: 16
              value:
                pattern: {type: String, value: pre-2604}
                choices: [valueString]
                index: 18
              valueString:
                type: string
                pattern: {type: String, value: pre-2604}
                choiceOf: value
                index: 19
              resource: {index: 20}
              part: {index: 21}
            required: [valueString, value]
        dataOffloadToExternalStorage:
          match: {name: dataOffloadToExternalStorage}
          schema:
            constraint:
              mount-data-offload-azure-container: {human: azureContainer is required when storageProvider is 'azure', severity: error, expression: part.where(name = 'storageProvider' and value = 'azure').exists() implies part.where(name = 'azureContainer').exists()}
              mount-data-offload-aws-account: {human: awsAccount and awsBucket are required when storageProvider is 'aws', severity: error, expression: part.where(name = 'storageProvider' and value = 'aws').exists() implies (part.where(name = 'awsAccount').exists() and part.where(name = 'awsBucket').exists())}
              mount-data-offload-gcp-account: {human: gcpServiceAccount and gcpBucket are required when storageProvider is 'gcp', severity: error, expression: part.where(name = 'storageProvider' and value = 'gcp').exists() implies (part.where(name = 'gcpServiceAccount').exists() and part.where(name = 'gcpBucket').exists())}
            index: 22
            elements:
              name:
                pattern: {type: String, value: dataOffloadToExternalStorage}
                index: 23
              value:
                choices: []
                index: 25
              resource: {index: 26}
              part:
                array: true
                min: 2
                index: 27
                slicing:
                  rules: closed
                  discriminator:
                  - {path: name, type: value}
                  min: 2
                  slices:
                    storageProvider:
                      match: {name: storageProvider}
                      schema:
                        _required: true
                        index: 28
                        elements:
                          name:
                            pattern: {type: String, value: storageProvider}
                            index: 29
                          value:
                            choices: [valueCode]
                            index: 31
                          valueCode: {type: code, choiceOf: value, index: 32}
                          resource: {index: 33}
                          part: {index: 34}
                        required: [valueCode, value]
                    azureContainer:
                      match: {name: azureContainer}
                      schema:
                        index: 35
                        elements:
                          name:
                            pattern: {type: String, value: azureContainer}
                            index: 36
                          value:
                            choices: [valueReference]
                            index: 38
                          valueReference:
                            type: Reference
                            choiceOf: value
                            refers: ['http://health-samurai.io/fhir/core/StructureDefinition/AzureContainer']
                            index: 39
                          resource: {index: 40}
                          part: {index: 41}
                        required: [valueReference, value]
                    awsAccount:
                      match: {name: awsAccount}
                      schema:
                        index: 42
                        elements:
                          name:
                            pattern: {type: String, value: awsAccount}
                            index: 43
                          value:
                            choices: [valueReference]
                            index: 45
                          valueReference:
                            type: Reference
                            choiceOf: value
                            refers: ['http://health-samurai.io/fhir/core/StructureDefinition/AwsAccount']
                            index: 46
                          resource: {index: 47}
                          part: {index: 48}
                        required: [valueReference, value]
                    awsBucket:
                      match: {name: awsBucket}
                      schema:
                        index: 49
                        elements:
                          name:
                            pattern: {type: String, value: awsBucket}
                            index: 50
                          value:
                            choices: [valueString]
                            index: 52
                          valueString: {type: string, choiceOf: value, index: 53}
                          resource: {index: 54}
                          part: {index: 55}
                        required: [valueString, value]
                    gcpServiceAccount:
                      match: {name: gcpServiceAccount}
                      schema:
                        index: 56
                        elements:
                          name:
                            pattern: {type: String, value: gcpServiceAccount}
                            index: 57
                          value:
                            choices: [valueReference]
                            index: 59
                          valueReference:
                            type: Reference
                            choiceOf: value
                            refers: ['http://health-samurai.io/fhir/core/StructureDefinition/GcpServiceAccount']
                            index: 60
                          resource: {index: 61}
                          part: {index: 62}
                        required: [valueReference, value]
                    gcpBucket:
                      match: {name: gcpBucket}
                      schema:
                        index: 63
                        elements:
                          name:
                            pattern: {type: String, value: gcpBucket}
                            index: 64
                          value:
                            choices: [valueString]
                            index: 66
                          valueString: {type: string, choiceOf: value, index: 67}
                          resource: {index: 68}
                          part: {index: 69}
                        required: [valueString, value]
                    blobNamePrefix:
                      match: {name: blobNamePrefix}
                      schema:
                        index: 70
                        elements:
                          name:
                            pattern: {type: String, value: blobNamePrefix}
                            index: 71
                          value:
                            constraint:
                              mount-data-offload-prefix-format: {human: 'blobNamePrefix must be 1-256 characters: one or more ''/''-separated segments of letters, digits, ''_'' or ''-'' (e.g. ''env-1/tenant_a/blobs''); it must not start or end with ''/'' or contain empty segments', severity: error, expression: '$this.length() <= 256 and $this.matches(''^[A-Za-z0-9_-]+(/[A-Za-z0-9_-]+)*$'')'}
                            choices: [valueString]
                            index: 73
                          valueString:
                            type: string
                            constraint:
                              mount-data-offload-prefix-format: {human: 'blobNamePrefix must be 1-256 characters: one or more ''/''-separated segments of letters, digits, ''_'' or ''-'' (e.g. ''env-1/tenant_a/blobs''); it must not start or end with ''/'' or contain empty segments', severity: error, expression: '$this.length() <= 256 and $this.matches(''^[A-Za-z0-9_-]+(/[A-Za-z0-9_-]+)*$'')'}
                            choiceOf: value
                            index: 74
                          resource: {index: 75}
                          part: {index: 76}
                        required: [valueString, value]
                    fhirpathToBase64BinaryElement:
                      match: {name: fhirpathToBase64BinaryElement}
                      schema:
                        array: true
                        min: 1
                        _required: true
                        index: 77
                        elements:
                          name:
                            pattern: {type: String, value: fhirpathToBase64BinaryElement}
                            index: 78
                          value:
                            choices: [valueString]
                            index: 80
                          valueString: {type: string, choiceOf: value, index: 81}
                          resource: {index: 82}
                          part: {index: 83}
                        required: [valueString, value]
        apiId:
          match: {name: apiId}
          schema:
            _required: true
            index: 84
            elements:
              name:
                pattern: {type: String, value: apiId}
                index: 85
              value:
                choices: [valueString]
                index: 87
              valueString: {type: string, choiceOf: value, index: 88}
              resource: {index: 89}
              part: {index: 90}
            required: [valueString, value]
package_version: 0.2608.0
class: profile
kind: resource
url: http://health-samurai.io/fhir/core/StructureDefinition/parameters-configureApiProfile
base: http://hl7.org/fhir/StructureDefinition/Parameters
version: 0.2608.0
required: [parameter]