Skip to content
Draft
Show file tree
Hide file tree
Changes from 2 commits
Commits
Show all changes
31 commits
Select commit Hold shift + click to select a range
a097412
Generate the TypeScript FHIR Schemas from the Implementation Guides
PSchmiedmayer Aug 28, 2026
4e29cc7
Adopt the completed Grove FHIR 0.6.0 contract
PSchmiedmayer Aug 28, 2026
ed71902
Fix FHIR validation boundary gaps
PSchmiedmayer Aug 29, 2026
251ce03
Align TypeScript with the authoritative Grove FHIR contract
PSchmiedmayer Aug 29, 2026
1ad183a
Remove release-specific protocol wording
PSchmiedmayer Aug 29, 2026
9fccc11
Align recording boundary fixture with versionless coding
PSchmiedmayer Aug 29, 2026
8d0ca1f
Skip release-readiness aggregates for scoped drafts
PSchmiedmayer Aug 29, 2026
901d57d
Recognize FHIR work across feature branch names
PSchmiedmayer Aug 29, 2026
9f1a190
Refresh TypeScript FHIR Contracts from the Implementation Guides
PSchmiedmayer Aug 30, 2026
87f039d
Move the Generated Contracts Into a Single Contract Module
PSchmiedmayer Aug 31, 2026
3324085
Order FHIR dateTime Values Under One Contract Policy
PSchmiedmayer Aug 31, 2026
35d41cd
Lift Base64 Coding and Issue Construction Into Core
PSchmiedmayer Aug 31, 2026
78523e4
Derive Identity Prefixes From the Contract and Freeze the Deployment …
PSchmiedmayer Aug 31, 2026
48a7a2a
Build Provider Resources From the Catalog Contract
PSchmiedmayer Aug 31, 2026
b32ff92
Tighten the Questionnaire Contract Surface
PSchmiedmayer Aug 31, 2026
cf97f38
Read the Date Ordering Policy From Core
PSchmiedmayer Aug 31, 2026
2ed9b41
Name Producer Rules and Their Locations From the Registry
PSchmiedmayer Aug 31, 2026
7bffdef
Regenerate the Contracts and Fixtures From Grove FHIR 0.6.0
PSchmiedmayer Aug 31, 2026
1f8b74c
Pin the Public Export Surface and Cover the Regenerated Contract
PSchmiedmayer Aug 31, 2026
4606284
Give the Browser Smoke Contract Its Required Questionnaire Subject
PSchmiedmayer Aug 31, 2026
7f01a3e
Pin the Published 0.6.0 Grove FHIR Revision
PSchmiedmayer Sep 7, 2026
eb50e99
Pin Grove FHIR to the Verified Tool Assets
PSchmiedmayer Sep 7, 2026
f350506
Align the TypeScript Producer Surface With the Implementation Guides
PSchmiedmayer Sep 22, 2026
48a13d1
Resolve the Open Dependency Advisories
PSchmiedmayer Sep 23, 2026
c4fc2af
Adopt Record-First Identities, Branded Identifier Systems and Produce…
PSchmiedmayer Sep 23, 2026
02e937f
Re-Pin Grove FHIR to the Canonical Part-Index Revision
PSchmiedmayer Sep 23, 2026
aebf54f
Localize Questionnaires Through One Base Language and Standard Transl…
PSchmiedmayer Sep 23, 2026
3e0d6fb
Validate a Translated Questionnaire Response in the Conformance Fixtures
PSchmiedmayer Sep 23, 2026
a2b913a
Compare Language Tags Case-Insensitively and Reject Translations Into…
PSchmiedmayer Sep 23, 2026
68b090d
Report the Contract's Questionnaire Rule Codes and Omit Translated An…
PSchmiedmayer Sep 23, 2026
2034f2c
Re-Pin Grove FHIR to the Questionnaire Localization Revision
PSchmiedmayer Sep 23, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
181 changes: 178 additions & 3 deletions .github/workflows/build-and-test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
branches:
- main
pull_request:
types: [opened, reopened, synchronize, ready_for_review, converted_to_draft]
workflow_dispatch:
workflow_call:

Expand All @@ -34,14 +35,80 @@
markdown-links:
name: Markdown Link Check
uses: SchmiedmayerLab/.github/.github/workflows/markdown-links.yml@v0.5
fhir-draft:
name: Draft FHIR Stack — Scoped Quality and Structural Conformance
if: >-
github.event_name == 'pull_request' &&
github.event.pull_request.draft &&
startsWith(github.head_ref, 'feature/fhir-')
runs-on: ubuntu-latest
timeout-minutes: 20
steps:
- name: Checkout Grove TypeScript
uses: actions/checkout@v7
with:
ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }}
persist-credentials: false
# The pin lives with the package that reads it, so CI and a local run agree.
- name: Read the pinned Grove FHIR commit
id: grove-fhir
run: >-
echo "sha=$(node -p "const p=require('./packages/fhir/grove-fhir.json');p.ref??p.sha")"
>> "$GITHUB_OUTPUT"

- name: Checkout the pinned Grove FHIR commit
uses: actions/checkout@v7
with:
repository: SchmiedmayerLab/grove-fhir
ref: ${{ steps.grove-fhir.outputs.sha }}
path: .build/grove-fhir
persist-credentials: false
- name: Set up Node.js 24
uses: actions/setup-node@v7
with:
node-version: 24
cache: npm
- name: Set up npm
run: npm install --global --ignore-scripts npm@12.0.2
- name: Install dependencies
run: npm ci
- name: Build shared lint configuration
run: npm run build --workspace @schmiedmayerlab/grove-configurations
- name: Check scoped formatting
run: >-
npm exec prettier -- --check
packages/fhir
.github/workflows/build-and-test.yml
.github/workflows/fhir-conformance.yml
- name: Check generated contracts and strict types
run: |
npm run check:catalog --workspace @schmiedmayerlab/grove-fhir
npm run typecheck --workspace @schmiedmayerlab/grove-fhir
- name: Lint and test the FHIR package
run: |
npm run lint:ci --workspace @schmiedmayerlab/grove-fhir
npm test --workspace @schmiedmayerlab/grove-fhir
- name: Check browser and deterministic fixtures
run: |
npm run test:browser --workspace @schmiedmayerlab/grove-fhir
npm run check:fixtures --workspace @schmiedmayerlab/grove-fhir
- name: Run producer-neutral structural conformance
run: >-
npm run conformance:structural --workspace @schmiedmayerlab/grove-fhir --
--ig "$GITHUB_WORKSPACE/.build/grove-fhir"
quality:
name: Build and Quality Checks
if: >-
github.event_name != 'pull_request' ||
github.event.pull_request.draft == false ||
!startsWith(github.head_ref, 'feature/fhir-')
runs-on: ubuntu-latest
timeout-minutes: 20
steps:
- name: Checkout repository
uses: actions/checkout@v7
with:
ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }}
persist-credentials: false
- name: Set up Node.js
uses: actions/setup-node@v7
Expand Down Expand Up @@ -72,12 +139,17 @@
run: npm run audit:signatures
node-current:
name: Node.js 26 Compatibility
if: >-
github.event_name != 'pull_request' ||
github.event.pull_request.draft == false ||
!startsWith(github.head_ref, 'feature/fhir-')
runs-on: ubuntu-latest
timeout-minutes: 20
steps:
- name: Checkout repository
uses: actions/checkout@v7
with:
ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }}
persist-credentials: false
- name: Set up Node.js
uses: actions/setup-node@v7
Expand All @@ -96,12 +168,17 @@
run: npm test
documentation:
name: Build Pages
if: >-
github.event_name != 'pull_request' ||
github.event.pull_request.draft == false ||
!startsWith(github.head_ref, 'feature/fhir-')
runs-on: ubuntu-latest
timeout-minutes: 30
steps:
- name: Checkout repository
uses: actions/checkout@v7
with:
ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }}
persist-credentials: false
- name: Set up Node.js
uses: actions/setup-node@v7
Expand All @@ -127,6 +204,10 @@
run: npm run pages:build
tests:
name: Test and Coverage
if: >-
github.event_name != 'pull_request' ||
github.event.pull_request.draft == false ||
!startsWith(github.head_ref, 'feature/fhir-')
uses: SchmiedmayerLab/.github/.github/workflows/npm-test-coverage.yml@v0.5
with:
coverage-files: >-
Expand All @@ -137,6 +218,39 @@
npmVersion: '12.0.2'
secrets:
token: ${{ secrets.CODECOV_TOKEN }}
tests-exact-head:
name: Exact PR Head — Test and Coverage
if: >-
github.event_name != 'pull_request' ||
github.event.pull_request.draft == false ||
!startsWith(github.head_ref, 'feature/fhir-')
runs-on: ubuntu-latest
timeout-minutes: 20
steps:
- name: Checkout exact source revision
uses: actions/checkout@v7
with:
ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }}
persist-credentials: false
- name: Verify the checked-out PR head
if: github.event_name == 'pull_request'
env:
EXPECTED_HEAD_SHA: ${{ github.event.pull_request.head.sha }}
run: test "$(git rev-parse HEAD)" = "$EXPECTED_HEAD_SHA"
- name: Set up Node.js 24
uses: actions/setup-node@v7
with:
node-version: 24
cache: npm
- name: Set up npm
run: npm install --global --ignore-scripts npm@12.0.2
- name: Install dependencies
run: npm ci
- name: Run every package coverage gate on the exact head
run: |
npm run build
npm run test:release
npm run test:coverage
dependency-review:
name: Dependency Review
if: github.event_name == 'pull_request'
Expand All @@ -150,24 +264,85 @@
with:
fail-on-severity: moderate
fail-on-scopes: runtime, development
draft-ci:
name: Draft FHIR Stack — Scoped Checks (Not Release Readiness)
if: >-
always() &&
github.event_name == 'pull_request' &&
github.event.pull_request.draft &&
startsWith(github.head_ref, 'feature/fhir-')
needs:
- actionlint
- dependency-review
- fhir-draft
- markdown-links
- reuse
runs-on: ubuntu-latest
steps:
- name: Check scoped draft jobs
env:
ACTIONLINT_RESULT: ${{ needs.actionlint.result }}
DEPENDENCY_REVIEW_RESULT: ${{ needs.dependency-review.result }}
FHIR_DRAFT_RESULT: ${{ needs.fhir-draft.result }}
MARKDOWN_LINKS_RESULT: ${{ needs.markdown-links.result }}
REUSE_RESULT: ${{ needs.reuse.result }}
run: |
for result in \
"$ACTIONLINT_RESULT" \
"$DEPENDENCY_REVIEW_RESULT" \
"$FHIR_DRAFT_RESULT" \
"$MARKDOWN_LINKS_RESULT" \
"$REUSE_RESULT"; do
if [[ "$result" != success ]]; then
exit 1
fi
done
ci:
name: CI
name: CI — Full Release Readiness
if: always()
needs:
- actionlint
- dependency-review
- documentation
- fhir-draft
- markdown-links
- node-current
- quality
- reuse
- tests
- tests-exact-head
runs-on: ubuntu-latest
steps:
- name: Check required jobs
env:
RESULTS: ${{ join(needs.*.result, ',') }}
ACTIONLINT_RESULT: ${{ needs.actionlint.result }}
DEPENDENCY_REVIEW_RESULT: ${{ needs.dependency-review.result }}
DOCUMENTATION_RESULT: ${{ needs.documentation.result }}
IS_FHIR_DRAFT: ${{ github.event_name == 'pull_request' && github.event.pull_request.draft && startsWith(github.head_ref, 'feature/fhir-') }}

Check warning on line 321 in .github/workflows/build-and-test.yml

View workflow job for this annotation

GitHub Actions / Standards / Surface

321:121 [line-length] line too long (150 > 120 characters)
MARKDOWN_LINKS_RESULT: ${{ needs.markdown-links.result }}
NODE_CURRENT_RESULT: ${{ needs.node-current.result }}
QUALITY_RESULT: ${{ needs.quality.result }}
REUSE_RESULT: ${{ needs.reuse.result }}
TESTS_RESULT: ${{ needs.tests.result }}
TESTS_EXACT_HEAD_RESULT: ${{ needs.tests-exact-head.result }}
run: |
if [[ "$RESULTS" == *failure* || "$RESULTS" == *cancelled* ]]; then
if [[ "$IS_FHIR_DRAFT" == true ]]; then
echo "Draft-scoped checks do not establish full release readiness." >&2
exit 1
fi
for result in \
"$ACTIONLINT_RESULT" \
"$DOCUMENTATION_RESULT" \
"$MARKDOWN_LINKS_RESULT" \
"$NODE_CURRENT_RESULT" \
"$QUALITY_RESULT" \
"$REUSE_RESULT" \
"$TESTS_RESULT" \
"$TESTS_EXACT_HEAD_RESULT"; do
if [[ "$result" != success ]]; then
exit 1
fi
done
if [[ "${{ github.event_name }}" == pull_request && "$DEPENDENCY_REVIEW_RESULT" != success ]]; then
exit 1
fi
Loading
Loading