Skip to content

Support async terminology and remote resolution for SDC applications #118

Closed as not planned

Description

@fjsj

The SDC assessment found five service-dependent failures that prevent replacing fhirpath.js in Smart Forms applications that use terminology or remote references. Keep these separate from the local SDC fixes stacked on #110.

The comparison uses fhirpath.js 4.11.0 and Smart Forms commit 6fe2eab7c0f2fd5eb3281b834556a6f227329a23. Service tests use deterministic mocked responses rather than a live server. The reference passes all nine service/integration probes. With the local fixes, this library passes four: synchronous local evaluation, direct contained references, contained references inside Bundle entries, and LHC Forms PHQ-9 scoring. The remaining failures are:

  • memberOf() with both true and false terminology responses: the function is currently unsupported.
  • %terminologies.subsumes(...): the environment service is unbound.
  • Remote resolve() with relative and absolute references: no remote resolver is available, so the result is empty.

Add an explicit asynchronous evaluation path with host-provided terminology and reference providers. Decide how it propagates through expression bodies, collection functions, environment variables, and host functions. Preserve the synchronous API and its type contract. Smart Forms permits asynchronous work but also caches immediately available local results, so document whether the integration returns a value or a Promise and how the adapter should handle it.

Acceptance:

  • Deterministic service tests cover positive/negative terminology results and relative/absolute remote resolution, including use within where(), select(), and aggregate expressions.
  • Local contained and Bundle references resolve without a network request; remote resolution retains element context for subsequent navigation.
  • Unavailable services and rejected requests surface as errors where required, rather than silently turning into false or incomplete scores.
  • Document provider configuration, reference-base handling, cancellation, and the synchronous/asynchronous boundary.
  • Re-run the Smart Forms service probes and retain the extraction/renderer regression results.

Assessment harnesses remain local; focused regression cases should accompany the implementation. The full adapted extraction suite passes 76/76 and renderer checks pass 28/28. Population passes 208/209 upstream assertions, with the remaining difference independently checked as correct DateTime-to-Date behavior; it is not an async failure.

References: Smart Forms, SDC expression dependencies.

Activity

  1. fjsj commented on Oct 9, 2026

    @fjsj
    MemberAuthor

    The existing async work is tracked as pull requests #3 and #4 rather than issues. I added the SDC findings to both and am updating those implementations. Closing this duplicate tracker; the separate follow-ups remain #119 and #120.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions