Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
42 commits
Select commit Hold shift + click to select a range
d314e7f
Register FHIR R5 as an explicit harness version
kennethmyhra Jul 28, 2026
a586e31
Generalize FHIR structure index generation
kennethmyhra Jul 28, 2026
a2028a0
Add the generated FHIR R5 structure index
kennethmyhra Jul 28, 2026
b916828
Add FHIR R5 fixture selection and validation
kennethmyhra Jul 28, 2026
3af984c
Route plan-executor through FHIR R5 models
kennethmyhra Jul 28, 2026
35d4f38
Wire FHIR R5 through plan-executor tasks
kennethmyhra Jul 28, 2026
105c365
Document FHIR R5 harness routing
kennethmyhra Jul 28, 2026
4af8625
Document FHIR R5 harness verification
kennethmyhra Jul 28, 2026
b1e2fed
Stabilize generated Observation quantities
kennethmyhra Jul 28, 2026
b52e9cf
Add repeatable FHIR R5 resource generation audit
kennethmyhra Jul 28, 2026
86bf5d4
Support R5 primitive and choice generation
kennethmyhra Jul 28, 2026
b4a1f3e
Enforce selectable R5 terminology bindings
kennethmyhra Jul 28, 2026
5013bf2
Bound recursive FHIR R5 resource generation
kennethmyhra Jul 28, 2026
10ea167
Add FHIR R5 resource generation invariants
kennethmyhra Jul 28, 2026
aff378d
Document FHIR R5 generator verification
kennethmyhra Jul 29, 2026
0d41559
Add the FHIR R5 suite compatibility inventory
kennethmyhra Jul 29, 2026
853a9e0
Enable R5 read and history suites
kennethmyhra Jul 29, 2026
df1c744
Enable the resource suite for FHIR R5
kennethmyhra Jul 29, 2026
c7adaac
Enable the format suite for FHIR R5
kennethmyhra Jul 29, 2026
8479aa8
Enable transaction and batch tests for FHIR R5
kennethmyhra Jul 29, 2026
f81a951
Enable FHIRPath patch tests for FHIR R5
kennethmyhra Jul 29, 2026
0dfb93c
Enable general search suites for FHIR R5
kennethmyhra Jul 29, 2026
107812f
Enable sprinkler search tests for FHIR R5
kennethmyhra Jul 29, 2026
e4c14ce
Enable Incendilabs search regressions for FHIR R5
kennethmyhra Jul 30, 2026
d453e08
Fix R5 MeasureReport choice generation
kennethmyhra Jul 30, 2026
3b390dc
Document FHIR R5 suite compatibility
kennethmyhra Jul 30, 2026
506033e
Use fully qualified namespace for STU3
kennethmyhra Jul 31, 2026
1e24b26
Update plan-executor to merged R5 dependencies
kennethmyhra Jul 31, 2026
7b70211
Validate versioned fixtures with explicit namespaces
kennethmyhra Jul 31, 2026
882dc0b
Align R5 integer64 JSON expectations
kennethmyhra Jul 31, 2026
f585f8b
Add the FHIR R5 Docker Compose configuration
kennethmyhra Aug 1, 2026
857da94
Add FHIR R5 integration CI
kennethmyhra Aug 1, 2026
0a10ac6
Rename .github/workflows/ci.yml to .github/workflows/ci-r4.yml
kennethmyhra Aug 1, 2026
5d2aba4
Refresh FHIR dependency revisions
kennethmyhra Aug 1, 2026
94480e6
Document FHIR R5 Docker and CI verification
kennethmyhra Aug 1, 2026
07647f2
Document Task 10A model and client verification
kennethmyhra Aug 1, 2026
c742e2b
Pin model dependencies to incendilabs master
kennethmyhra Aug 1, 2026
135c2b2
Document Task 10B Docker harness verification
kennethmyhra Aug 1, 2026
6cb8e4d
Document Task 10C R5 acceptance verification
kennethmyhra Aug 1, 2026
3e01b95
Document Task 10D cross-version regression verification
kennethmyhra Aug 1, 2026
85fa4d3
Document final FHIR R5 verification
kennethmyhra Aug 1, 2026
002f2d4
Complete final R5 verification record
kennethmyhra Aug 1, 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
6 changes: 5 additions & 1 deletion .dockerignore
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
.git
.github
logs
coverage
html_summaries
json_results
logs
tmp
2 changes: 1 addition & 1 deletion .github/workflows/ci.yml → .github/workflows/ci-r4.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
name: CI
name: CI R4

on:
workflow_dispatch:
Expand Down
160 changes: 160 additions & 0 deletions .github/workflows/ci-r5.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,160 @@
name: CI R5

on:
workflow_dispatch:
push:
branches:
- 'master'
pull_request:

jobs:
build:
if: github.repository == 'incendilabs/plan-executor'

runs-on: ubuntu-24.04
steps:
-
name: Checkout plan-executor
uses: actions/checkout@v7
-
name: Build plan-executor Docker image
run: docker build -t incendi/plan_executor:latest .
-
name: Checkout Spark
uses: actions/checkout@v7
with:
repository: FirelyTeam/spark
ref: master
path: spark
-
name: Record Spark revision
run: |
git -C spark rev-parse HEAD | tee spark-revision.txt
-
name: Build Spark R5 Docker image
run: |
docker build spark \
--file spark/.docker/linux/Spark.R5.Dockerfile \
--tag sparkfhir/spark:r5-latest
-
name: Build Mongo R5 Docker image
run: |
docker build spark \
--file spark/.docker/linux/Mongo.R5.Dockerfile \
--tag sparkfhir/mongo:r5-latest
-
name: Start Spark
run: |
mkdir -p logs html_summaries json_results
docker compose -f docker-compose.yml -f docker-compose-r5.yml up -d spark
-
name: Wait for and validate R5 metadata
run: |
set -e
for attempt in $(seq 1 30); do
if docker compose -f docker-compose.yml -f docker-compose-r5.yml run --rm --no-deps plan_executor \
bundle exec ruby -rnet/http -e '
require "fhir_client"

response = Net::HTTP.get_response(URI("http://spark:8080/fhir/metadata"))
abort "metadata request returned #{response.code}" unless response.is_a?(Net::HTTPSuccess)

capability = FHIR::R5::Json.from_json(response.body)
abort "unexpected CapabilityStatement fhirVersion #{capability.fhirVersion.inspect}" unless capability.fhirVersion == "5.0.0"
'; then
exit 0
fi

echo "Waiting for Spark R5 metadata (attempt ${attempt}/30)"
sleep 5
done

echo 'Spark R5 metadata did not become ready in time' >&2
exit 1
-
name: Run R5 tests
id: suite
run: |
set +e
docker compose -f docker-compose.yml -f docker-compose-r5.yml run --rm --no-deps plan_executor \
./execute_all.sh 'http://spark:8080/fhir' r5 'html|json|stdout'
suite_status=$?
printf '%s\n' "$suite_status" > suite-exit-status
echo "suite_status=$suite_status" >> "$GITHUB_OUTPUT"
exit 0
-
name: Capture service logs
if: ${{ always() }}
run: |
mkdir -p logs
cp spark-revision.txt logs/spark-revision.txt 2>/dev/null || true
docker compose -f docker-compose.yml -f docker-compose-r5.yml logs spark > logs/spark.log 2>&1 || true
docker compose -f docker-compose.yml -f docker-compose-r5.yml logs mongodb > logs/mongodb.log 2>&1 || true
-
name: Combine test results
if: ${{ always() }}
run: |
set +e
./combine-test-results.sh json_results annotations.json
combine_status=$?
printf '%s\n' "$combine_status" > combine-exit-status
exit 0
-
name: Attach test results
if: ${{ always() && github.event_name != 'pull_request' }}
uses: yuzutech/annotations-action@v0.6.0
with:
repo-token: "${{ secrets.GITHUB_TOKEN }}"
input: annotations.json
-
name: Archive logs
if: ${{ always() }}
uses: actions/upload-artifact@v7
with:
name: logs-r5-${{ github.sha }}
path: logs/*.log*
-
name: Archive test reports
if: ${{ always() }}
uses: actions/upload-artifact@v7
with:
name: html_summaries-r5-${{ github.sha }}
path: html_summaries/**/*.html
-
name: Archive JSON results
if: ${{ always() }}
uses: actions/upload-artifact@v7
with:
name: json_results-r5-${{ github.sha }}
path: json_results/**/*.json
-
name: Archive annotations file
if: ${{ always() }}
uses: actions/upload-artifact@v7
with:
name: annotations-r5-${{ github.sha }}
path: annotations.json
-
name: Evaluate suite status
if: ${{ always() }}
run: |
if [ ! -f suite-exit-status ]; then
echo 'R5 suite did not produce an exit status' >&2
exit 1
fi

suite_status=$(cat suite-exit-status)
combine_status=$(cat combine-exit-status 2>/dev/null || printf '1')
if [ "$suite_status" -ne 0 ]; then
echo "R5 suite exited with status $suite_status" >&2
exit "$suite_status"
fi

if [ "$combine_status" -ne 0 ]; then
echo "R5 result combination exited with status $combine_status" >&2
exit "$combine_status"
fi
-
name: Cleanup
if: ${{ always() }}
run: docker compose -f docker-compose.yml -f docker-compose-r5.yml down
4 changes: 2 additions & 2 deletions Gemfile
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
source "https://rubygems.org"

gem 'fhir_dstu2_models', git: 'https://github.com/incendilabs/fhir_dstu2_models.git'
gem 'fhir_stu3_models', git: 'https://github.com/incendilabs/fhir_stu3_models.git'
gem 'fhir_dstu2_models', git: 'https://github.com/incendilabs/fhir_dstu2_models.git', branch: 'master'
gem 'fhir_stu3_models', git: 'https://github.com/incendilabs/fhir_stu3_models.git', branch: 'master'
gem 'fhir_client', git: 'https://github.com/incendilabs/fhir_client.git', branch: 'master'
gem 'fhir_models', git: 'https://github.com/incendilabs/fhir_models.git', branch: 'master'
gem 'activesupport', '>= 6'
Expand Down
76 changes: 48 additions & 28 deletions Gemfile.lock
Original file line number Diff line number Diff line change
@@ -1,23 +1,24 @@
GIT
remote: https://github.com/incendilabs/fhir_client.git
revision: 79026641f9b2ac7cf30bc27a3528e505d34c67e8
revision: e32abec25f8d6ca1b6997d159c263bb70f54abfd
branch: master
specs:
fhir_client (5.0.0)
fhir_client (5.1.0)
activesupport (>= 3)
addressable (>= 2.9.0)
fhir_dstu2_models (>= 1.0.10)
fhir_models (>= 4.0.2)
fhir_models (>= 5.0.0)
fhir_stu3_models (>= 3.0.1)
nokogiri (>= 1.10.4)
oauth2 (~> 1.1)
oauth2 (>= 2.0, < 3.0)
rack (>= 1.5)
rest-client (~> 2.0)
tilt (>= 1.1)

GIT
remote: https://github.com/incendilabs/fhir_dstu2_models.git
revision: 66c58438d323f634116dc937446d42d9b4356687
revision: 4f8b32300c2991d2803b888adff5c097bbfb018e
branch: master
specs:
fhir_dstu2_models (1.0.10)
bcp47 (>= 0.3)
Expand All @@ -27,18 +28,19 @@ GIT

GIT
remote: https://github.com/incendilabs/fhir_models.git
revision: a143d2e21d0253b33fdaeb17e2d152ad656c9a3e
revision: 19ed4a6070f08a18b3f839b6b74aba51a7240c67
branch: master
specs:
fhir_models (4.1.0)
fhir_models (5.0.0)
bcp47 (>= 0.3)
date_time_precision (>= 0.8)
mime-types (>= 3.0)
nokogiri (>= 1.10.4)

GIT
remote: https://github.com/incendilabs/fhir_stu3_models.git
revision: 71db01196b6cafe2310498135849cae356fe6f44
revision: e37cfa7b49518b918727d093c41954be1f1406aa
branch: master
specs:
fhir_stu3_models (3.0.1)
bcp47 (>= 0.3)
Expand All @@ -63,29 +65,33 @@ PATH
GEM
remote: https://rubygems.org/
specs:
activesupport (7.2.3.1)
activesupport (8.1.3.1)
base64
benchmark (>= 0.3)
bigdecimal
concurrent-ruby (~> 1.0, >= 1.3.1)
connection_pool (>= 2.2.5)
drb
i18n (>= 1.6, < 2)
json
logger (>= 1.4.2)
minitest (>= 5.1, < 6)
minitest (>= 5.1)
securerandom (>= 0.3)
tzinfo (~> 2.0, >= 2.0.5)
uri (>= 0.13.1)
addressable (2.9.0)
public_suffix (>= 2.0.2, < 8.0)
anonymous_loader (0.1.3)
version_gem (~> 1.1, >= 1.1.14)
ansi (1.5.0)
auth-sanitizer (0.2.3)
version_gem (~> 1.1, >= 1.1.14)
awesome_print (1.9.2)
base64 (0.3.0)
bcp47 (0.3.3)
i18n
benchmark (0.5.0)
bigdecimal (4.1.1)
bigdecimal (4.1.2)
coderay (1.1.3)
concurrent-ruby (1.3.7)
concurrent-ruby (1.3.8)
connection_pool (3.0.2)
coolline (0.5.0)
unicode_utils (~> 1.4)
Expand All @@ -103,26 +109,31 @@ GEM
faraday-net_http (3.4.4)
net-http (~> 0.5)
hashdiff (1.2.1)
hashie (5.1.0)
logger
http-accept (1.7.0)
http-cookie (1.1.4)
http-cookie (1.1.6)
domain_name (~> 0.5)
i18n (1.14.8)
i18n (1.15.2)
concurrent-ruby (~> 1.0)
json (2.20.0)
json (2.21.2)
jsonpath (1.1.5)
multi_json
jwt (2.10.3)
jwt (3.2.0)
base64
logger (1.7.0)
method_source (1.1.0)
mime-types (3.7.0)
logger
mime-types-data (~> 3.2025, >= 3.2025.0507)
mime-types-data (3.2026.0407)
mime-types-data (3.2026.0701)
mini_portile2 (2.8.9)
minitest (5.27.0)
multi_json (1.19.1)
multi_xml (0.6.0)
minitest (6.0.6)
drb (~> 2.0)
prism (~> 1.5)
multi_json (1.21.1)
multi_xml (0.9.1)
bigdecimal (>= 3.1, < 5)
net-http (0.9.1)
uri (>= 0.11.1)
netrc (0.11.0)
Expand All @@ -134,20 +145,25 @@ GEM
nokogiri-diff (0.3.0)
nokogiri (~> 1.5)
tdiff (~> 0.4)
oauth2 (1.4.11)
faraday (>= 0.17.3, < 3.0)
jwt (>= 1.0, < 3.0)
multi_json (~> 1.3)
oauth2 (2.0.25)
anonymous_loader (~> 0.1, >= 0.1.3)
auth-sanitizer (~> 0.2, >= 0.2.3)
faraday (>= 0.17.3, < 4.0)
jwt (>= 1.0, < 4.0)
logger (~> 1.2)
multi_xml (~> 0.5)
rack (>= 1.2, < 4)
snaky_hash (~> 2.0, >= 2.0.7)
version_gem (~> 1.1, >= 1.1.14)
power_assert (3.0.1)
prism (1.9.0)
pry (0.15.2)
coderay (~> 1.1)
method_source (~> 1.0)
pry-coolline (0.2.6)
coolline (~> 0.5)
pry (~> 0.13)
public_suffix (6.0.2)
public_suffix (7.0.5)
racc (1.8.1)
rack (3.2.6)
rake (13.3.1)
Expand All @@ -164,16 +180,20 @@ GEM
simplecov_json_formatter (~> 0.1)
simplecov-html (0.13.2)
simplecov_json_formatter (0.1.4)
snaky_hash (2.0.7)
hashie (>= 0.1.0, < 6)
version_gem (~> 1.1, >= 1.1.14)
tdiff (0.4.0)
test-unit (3.7.7)
power_assert
tilt (2.7.0)
tilt (2.8.0)
tzinfo (2.0.6)
concurrent-ruby (~> 1.0)
tzinfo-data (1.2026.1)
tzinfo (>= 1.0.0)
unicode_utils (1.4.0)
uri (1.1.1)
version_gem (1.1.14)
webmock (3.26.2)
addressable (>= 2.8.0)
crack (>= 0.3.2)
Expand Down
Loading