Skip to content

Comments

draft changes to cs-api for DB based provider#133

Draft
grahamegrieve wants to merge 2 commits intomainfrom
2026-02-gg-cs-api-proposal
Draft

draft changes to cs-api for DB based provider#133
grahamegrieve wants to merge 2 commits intomainfrom
2026-02-gg-cs-api-proposal

Conversation

@grahamegrieve
Copy link
Contributor

No description provided.

@grahamegrieve grahamegrieve marked this pull request as draft February 21, 2026 06:00
jmandel added a commit to jmandel/FHIRsmith that referenced this pull request Feb 21, 2026
…ffset/filterExclude

Add Grahame's proposed decomposed filter API from PR HealthIntersections#133 alongside
existing expandForValueSet. The new API pushes excludes and offset/count
through the filter pipeline:

cs-api.js:
  - handlesExcludes() / handlesOffset() capability queries
  - getPrepContext(iterate, offset, count) with paging params
  - filterExclude(ctx, filters[]) for exclude accumulation

cs-sqlite-runtime-v0.js:
  - Implements all new API methods
  - filterExclude validates filters, throws for unsupported
  - executeFilters builds combined SQL with excludes + offset/count
    when accumulated, falls back to normal filter sets otherwise
  - Reuses #buildV0FilterSql / #buildV0ExcludeNotExists for SQL generation

expand.js (worker):
  - scanValueSet() detects simple single-CS value sets
  - excludeFilterList() converts exclude clauses to {prop, op, value}
  - includeCodes passes excludes via filterExclude when CS handles them
  - Graceful fallback: if filterExclude throws, clears accumulated
    excludes and worker-side excludeCodes handles it

All 22 cross-system tests pass with same results and performance.
52 pre-existing jest test failures unrelated to these changes.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant