Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
27 commits
Select commit Hold shift + click to select a range
2e003dd
Implement Ignixa FHIRPath provider seam
Copilot Aug 25, 2026
af627ca
Fix Ignixa FHIRPath seam review findings
Copilot Aug 25, 2026
923c7d0
Fix FHIRPath seam regressions
Copilot Aug 25, 2026
90a67d6
Fix final FHIRPath seam review findings
Copilot Aug 25, 2026
471ff45
Cover composite search parameter expressions
Copilot Aug 25, 2026
001c1cf
Apply verified FHIRPath review fixes
Copilot Aug 28, 2026
d6e5a2b
Fix FHIRPath residual review findings
Copilot Aug 28, 2026
537a338
Update FHIRPath seam ADR status
Copilot Aug 28, 2026
66faf8a
Add FHIRPath ingestion A/B workloads
Copilot Aug 28, 2026
35af5ba
Fix ingestion A/B review findings
Copilot Aug 28, 2026
d6be456
Keep E2E comparison labels stable
Copilot Aug 28, 2026
18f0aeb
Fix ingestion performance review findings
Copilot Aug 28, 2026
826c39f
Fix AB runner re-review residuals
Copilot Aug 28, 2026
504363f
Revert ingestion A/B runner changes
Copilot Aug 31, 2026
731a30d
Consolidate Ignixa SDK architecture decision
Copilot Aug 31, 2026
87e0f1f
Remove FHIRPath cache hit lock contention
Copilot Sep 1, 2026
7a53813
Address FHIRPath review and SMART test failure
Copilot Sep 1, 2026
aff792e
Fix SMART count guard and containment rationale
Copilot Sep 1, 2026
a859f86
Document verified SMART indexing delta
Copilot Sep 1, 2026
afd2f43
Update Ignixa SDK to 0.6.73
Copilot Sep 2, 2026
0eecd5a
Add SQL vNext SDK CI lanes
Copilot Sep 2, 2026
592ee86
Fix SQL vNext CI deployment architecture
Copilot Sep 2, 2026
92da037
Validate SQL vNext E2E topology
Copilot Sep 2, 2026
5a300bf
Harden SQL vNext topology validation
Copilot Sep 2, 2026
33b75b7
Improve SQL topology failure diagnostics
Copilot Sep 2, 2026
851c1bd
Fix SQL vNext validation findings
Copilot Sep 2, 2026
b49ed94
Add CI deployment recovery mode
Copilot Sep 2, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion Directory.Packages.props
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
<Hl7FhirLegacyVersion>5.11.0</Hl7FhirLegacyVersion>
<DotNetSdkPackageVersion>10.0.10</DotNetSdkPackageVersion>
<OpenIddictPackageVersion>6.2.0</OpenIddictPackageVersion>
<IgnixaPackageVersion>0.0.163</IgnixaPackageVersion>
<IgnixaPackageVersion>0.6.73</IgnixaPackageVersion>
</PropertyGroup>
<!-- SDK Packages -->
<Choose>
Expand Down
5 changes: 5 additions & 0 deletions build/build-variables.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,17 +17,22 @@ variables:
azureContainerRegistryName: 'healthplatformregistry'
azureContainerRegistry: '$(azureContainerRegistryName).azurecr.io'
DeploymentEnvironmentNameSql: '$(DeploymentEnvironmentName)-sql'
DeploymentEnvironmentNameSqlVNext: '$(DeploymentEnvironmentName)-svn'
SqlVNextElasticPoolName: '$(DeploymentEnvironmentName)-vnext-pool'
DeploymentEnvironmentNameR4: '$(DeploymentEnvironmentName)-r4'
DeploymentEnvironmentNameR4Sql: '$(DeploymentEnvironmentNameR4)-sql'
DeploymentEnvironmentNameR4SqlVNext: '$(DeploymentEnvironmentName)-r4vn'
DeploymentEnvironmentNameR4B: '$(DeploymentEnvironmentName)-r4b'
DeploymentEnvironmentNameR4BSql: '$(DeploymentEnvironmentNameR4B)-sql'
DeploymentEnvironmentNameR5: '$(DeploymentEnvironmentName)-r5'
DeploymentEnvironmentNameR5Sql: '$(DeploymentEnvironmentNameR5)-sql'
AcaEnvironmentName: '$(DeploymentEnvironmentName)-acae'
# Key Vault names (shorter due to 24 character limit)
KeyVaultNameSql: '$(KeyVaultBaseName)-sql'
KeyVaultNameSqlVNext: '$(KeyVaultBaseName)-sql-vn'
KeyVaultNameR4: '$(KeyVaultBaseName)-r4'
KeyVaultNameR4Sql: '$(KeyVaultNameR4)-sql'
KeyVaultNameR4SqlVNext: '$(KeyVaultBaseName)-r4-vn'
KeyVaultNameR4B: '$(KeyVaultBaseName)-r4b'
KeyVaultNameR4BSql: '$(KeyVaultNameR4B)-sql'
KeyVaultNameR5: '$(KeyVaultBaseName)-r5'
Expand Down
199 changes: 166 additions & 33 deletions build/ci-deploy.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,38 +6,74 @@
name: $(SourceBranchName)-$(Date:yyyyMMdd)$(Rev:-r)
trigger: none

parameters:
- name: buildImages
displayName: Build images
type: boolean
default: true
- name: imageTagOverride
displayName: Existing image tag (required when images are not built)
type: string
default: ''

variables:
- template: ci-variables.yml
- template: build-variables.yml

stages:
- stage: UpdateVersion
displayName: 'Determine Semver'
dependsOn: []
jobs:
- job: Semver
pool:
name: '$(InternalPool)'
demands:
- ImageOverride -equals $(InternalLinuxImage)
steps:
- template: ./jobs/update-semver.yml
- ${{ if eq(parameters.buildImages, true) }}:
- stage: UpdateVersion
displayName: 'Determine Semver'
dependsOn: []
jobs:
- job: Semver
pool:
name: '$(InternalPool)'
demands:
- ImageOverride -equals $(InternalLinuxImage)
steps:
- template: ./jobs/update-semver.yml

- stage: DockerBuild
displayName: 'Build images'
dependsOn:
- UpdateVersion
variables:
assemblySemFileVer: $[stageDependencies.UpdateVersion.Semver.outputs['SetVariablesFromGitVersion.assemblySemFileVer']]
jobs:
- template: ./jobs/docker-build-all.yml
parameters:
tag: $(ImageTag)
buildPlatform: $(publicDockerImagePlatforms)
- stage: DockerBuild
displayName: 'Build images'
dependsOn:
- UpdateVersion
variables:
assemblySemFileVer: $[stageDependencies.UpdateVersion.Semver.outputs['SetVariablesFromGitVersion.assemblySemFileVer']]
jobs:
- template: ./jobs/docker-build-all.yml
parameters:
tag: $(ImageTag)
buildPlatform: $(publicDockerImagePlatforms)

- ${{ if eq(parameters.buildImages, false) }}:
- stage: ValidateRecoveryParameters
displayName: 'Validate recovery parameters'
dependsOn: []
jobs:
- job: ValidateRecoveryParameters
displayName: 'Validate recovery parameters'
pool:
name: '$(AzurePipelinesPool)'
vmImage: '$(LinuxVmImage)'
steps:
- task: PowerShell@2
displayName: 'Require an existing image tag'
env:
IMAGE_TAG_OVERRIDE: ${{ parameters.imageTagOverride }}
inputs:
targetType: inline
pwsh: true
script: |
if ([string]::IsNullOrWhiteSpace($env:IMAGE_TAG_OVERRIDE)) {
throw "Parameter 'imageTagOverride' must be non-empty when 'buildImages' is false."
}

- stage: provisionEnvironment
displayName: Provision Environment
dependsOn: []
dependsOn:
- ${{ if eq(parameters.buildImages, false) }}:
- ValidateRecoveryParameters
jobs:
- template: ./jobs/cleanup-resourcegroup-aad.yml
- job: provision
Expand Down Expand Up @@ -168,11 +204,27 @@ stages:
dbMinCapacity: 0
dbMaxCapacity: 8

- stage: deploySqlVNextElasticPool
displayName: 'Deploy SQL vNext Elastic Pool (CI)'
dependsOn:
- deploySqlServer
jobs:
- template: ./jobs/provision-sqlElasticPool.yml
parameters:
resourceGroup: $(ResourceGroupName)
sqlServerName: $(DeploymentEnvironmentName)
elasticPoolName: $(SqlVNextElasticPoolName)
capacity: 4
maxSizeBytes: '68719476736'
dbMinCapacity: 0
dbMaxCapacity: 2

- stage: deployStu3
displayName: 'Deploy STU3 CosmosDB Site'
dependsOn:
- aadTestEnvironment
- DockerBuild
- ${{ if eq(parameters.buildImages, true) }}:
- DockerBuild
- createNsp
- createAcaEnvironment
jobs:
Expand All @@ -186,14 +238,18 @@ stages:
subscription: $(ConnectedServiceName)
resourceGroup: $(ResourceGroupName)
testEnvironmentUrl: $(TestApplicationResource)
imageTag: $(ImageTag)
${{ if eq(parameters.buildImages, true) }}:
imageTag: $(ImageTag)
${{ else }}:
imageTag: ${{ parameters.imageTagOverride }}
reindexEnabled: true

- stage: deployStu3Sql
displayName: 'Deploy STU3 SQL Site'
dependsOn:
- aadTestEnvironment
- DockerBuild
- ${{ if eq(parameters.buildImages, true) }}:
- DockerBuild
- deploySqlServer
- deploySqlElasticPool
- createAcaEnvironment
Expand All @@ -208,18 +264,53 @@ stages:
subscription: $(ConnectedServiceName)
resourceGroup: $(ResourceGroupName)
testEnvironmentUrl: $(TestApplicationResource)
imageTag: $(ImageTag)
${{ if eq(parameters.buildImages, true) }}:
imageTag: $(ImageTag)
${{ else }}:
imageTag: ${{ parameters.imageTagOverride }}
schemaAutomaticUpdatesEnabled: 'auto'
sqlServerName: $(DeploymentEnvironmentName)
sqlComputeTier: 'Hyperscale'
sqlElasticPoolName: $(DeploymentEnvironmentName)-pool
reindexEnabled: true

- stage: deployStu3SqlVNext
displayName: 'Deploy STU3 SQL vNext SDK Site'
dependsOn:
- aadTestEnvironment
- ${{ if eq(parameters.buildImages, true) }}:
- DockerBuild
- deploySqlServer
- deploySqlVNextElasticPool
- createAcaEnvironment
jobs:
- template: ./jobs/provision-deploy.yml
parameters:
dataStore: sql
version: Stu3
webAppName: $(DeploymentEnvironmentNameSqlVNext)
acaEnvironmentName: $(AcaEnvironmentName)
keyVaultName: $(KeyVaultNameSqlVNext)
subscription: $(ConnectedServiceName)
resourceGroup: $(ResourceGroupName)
testEnvironmentUrl: $(TestApplicationResource)
${{ if eq(parameters.buildImages, true) }}:
imageTag: $(ImageTag)
${{ else }}:
imageTag: ${{ parameters.imageTagOverride }}
schemaAutomaticUpdatesEnabled: 'auto'
sqlServerName: $(DeploymentEnvironmentName)
sqlElasticPoolName: $(SqlVNextElasticPoolName)
sqlDatabaseName: FHIRStu3VNext
fhirSdkProviderDefault: Ignixa
reindexEnabled: true

- stage: deployR4
displayName: 'Deploy R4 CosmosDB Site'
dependsOn:
- aadTestEnvironment
- DockerBuild
- ${{ if eq(parameters.buildImages, true) }}:
- DockerBuild
- createNsp
- createAcaEnvironment
jobs:
Expand All @@ -233,14 +324,18 @@ stages:
subscription: $(ConnectedServiceName)
resourceGroup: $(ResourceGroupName)
testEnvironmentUrl: $(TestApplicationResource)
imageTag: $(ImageTag)
${{ if eq(parameters.buildImages, true) }}:
imageTag: $(ImageTag)
${{ else }}:
imageTag: ${{ parameters.imageTagOverride }}
reindexEnabled: true

- stage: deployR4Sql
displayName: 'Deploy R4 SQL Site'
dependsOn:
- aadTestEnvironment
- DockerBuild
- ${{ if eq(parameters.buildImages, true) }}:
- DockerBuild
- deploySqlServer
- deploySqlElasticPool
- createAcaEnvironment
Expand All @@ -255,18 +350,53 @@ stages:
subscription: $(ConnectedServiceName)
resourceGroup: $(ResourceGroupName)
testEnvironmentUrl: $(TestApplicationResource)
imageTag: $(ImageTag)
${{ if eq(parameters.buildImages, true) }}:
imageTag: $(ImageTag)
${{ else }}:
imageTag: ${{ parameters.imageTagOverride }}
schemaAutomaticUpdatesEnabled: 'auto'
sqlServerName: $(DeploymentEnvironmentName)
sqlComputeTier: 'Hyperscale'
sqlElasticPoolName: $(DeploymentEnvironmentName)-pool
reindexEnabled: true

- stage: deployR4SqlVNext
displayName: 'Deploy R4 SQL vNext SDK Site'
dependsOn:
- aadTestEnvironment
- ${{ if eq(parameters.buildImages, true) }}:
- DockerBuild
- deploySqlServer
- deploySqlVNextElasticPool
- createAcaEnvironment
jobs:
- template: ./jobs/provision-deploy.yml
parameters:
dataStore: sql
version: R4
webAppName: $(DeploymentEnvironmentNameR4SqlVNext)
acaEnvironmentName: $(AcaEnvironmentName)
keyVaultName: $(KeyVaultNameR4SqlVNext)
subscription: $(ConnectedServiceName)
resourceGroup: $(ResourceGroupName)
testEnvironmentUrl: $(TestApplicationResource)
${{ if eq(parameters.buildImages, true) }}:
imageTag: $(ImageTag)
${{ else }}:
imageTag: ${{ parameters.imageTagOverride }}
schemaAutomaticUpdatesEnabled: 'auto'
sqlServerName: $(DeploymentEnvironmentName)
sqlElasticPoolName: $(SqlVNextElasticPoolName)
sqlDatabaseName: FHIRR4VNext
fhirSdkProviderDefault: Ignixa
reindexEnabled: true

- stage: deployR5Sql
displayName: 'Deploy R5 SQL Site'
dependsOn:
- aadTestEnvironment
- DockerBuild
- ${{ if eq(parameters.buildImages, true) }}:
- DockerBuild
- deploySqlServer
- deploySqlElasticPool
- createAcaEnvironment
Expand All @@ -281,7 +411,10 @@ stages:
subscription: $(ConnectedServiceName)
resourceGroup: $(ResourceGroupName)
testEnvironmentUrl: $(TestApplicationResource)
imageTag: $(ImageTag)
${{ if eq(parameters.buildImages, true) }}:
imageTag: $(ImageTag)
${{ else }}:
imageTag: ${{ parameters.imageTagOverride }}
schemaAutomaticUpdatesEnabled: 'auto'
sqlServerName: $(DeploymentEnvironmentName)
sqlComputeTier: 'Hyperscale'
Expand Down
Loading