Skip to content

ePA APIs documentation — pillar vs reference split#2

Merged
Rost-is-love merged 1 commit into
mainfrom
epa-apis-review
May 14, 2026
Merged

ePA APIs documentation — pillar vs reference split#2
Rost-is-love merged 1 commit into
mainfrom
epa-apis-review

Conversation

@Nesmeshnoy
Copy link
Copy Markdown
Contributor

Summary

Refactors Prior Auth (ePA) APIs documentation into pillar (concept) and reference (per-operation) pages, per a new Page types: Pillar vs Reference rule documented in CLAUDE.md.

  • 9 new operation reference pages under docs/api-reference/operations/ covering DTR, PAS, and CRD CDS Hooks
  • Consolidates SMART Backend Services onboarding flow into docs/api-reference/authentication.md (was duplicated across CRD and PAS pillars)
  • Pins IG versions: Da Vinci CRD STU 2.0.1, DTR STU 2.0.0, PAS STU 2.1.0
  • Normalizes op-page H1 to plain text (no backticks) across all operation reference pages, including 3 existing PDex pages for consistency with the new rule

Page structure

  • Pillars (docs/prior-auth/*): overview, lifecycle, decision-service framing, short JSON example, cross-links. No full parameter tables or per-operation reference content.
  • References (docs/api-reference/operations/*): full Input/Output parameters, all Request/Response variants (JSON), error tables, current limitations.

Verified against source

Cross-checked CDS Hooks endpoints and PAS operations against the HealthSamurai/prior-auth manifest (services/core/src/app_manifest.clj):

  • All 4 CRD CDS hooks (order-sign, order-select, order-dispatch, appointment-book) are implemented + Discovery (GET /cds-services)
  • PAS operations (Claim/$submit, Claim/$inquire, $submit-attachment) — endpoints match docs
  • $submit-attachment is system-level (path ["$submit-attachment"], not under /fhir/)

Needs reviewer input

  • Auth scopes for $submit-attachment — current educated guess: system/DocumentReference.c + system/Claim.u. App manifest specifies the operation but not scope policies — please confirm against Access Policies / Client config.
  • Pinned IG versions match production? — CRD 2.0.1 / DTR 2.0.0 / PAS 2.1.0 per api-reference/implementation-guides.md; please confirm these are the versions actually deployed.

Test plan

  • Browse Prior Auth pillars: CRD, DTR, PAS — content reads end-to-end
  • Click each op-page link in pillar bodies — lands at correct reference page
  • Verify pinned IG URLs resolve to live HL7 pages
  • Verify Authentication onboarding flow describes the registration process accurately

🤖 Generated with Claude Code

- Split Prior Auth pages (CRD, DTR, PAS) into thin conceptual pillars
  and per-operation reference pages under api-reference/operations/
- Add 9 op-pages: questionnaire-package, claim-{submit,inquire},
  submit-attachment, cds-services-discovery, cds-hook-{order-sign,
  order-select,order-dispatch,appointment-book}
- Consolidate SMART Backend Services onboarding into authentication.md
- Pin IG versions: CRD STU 2.0.1, DTR STU 2.0.0, PAS STU 2.1.0
- Normalize op-page H1 to plain text (no backticks); apply uniformly
  across new ePA pages and 3 existing PDex op pages
- Document Page types: Pillar vs Reference rule in CLAUDE.md

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
POST <base>/fhir/$provider-member-match
Authorization: Bearer <access-token>
Content-Type: application/fhir+json
Accept: application/fhir+json
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Add header:

Prefer: respond-async

POST <base>/fhir/$bulk-member-match
Authorization: Bearer <access-token>
Content-Type: application/fhir+json
Prefer: respond-async # optional; sync is the default
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It's not optional, in current implementation request will fail without this header


Submit one Parameters payload per member. For bulk matching across many members at once, use [`$bulk-member-match`](bulk-member-match.md) (that's Payer-to-Payer, not Provider Access).

## Response
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If we make true API reference then we should describe all operations and their response: POST <base>/fhir/$provider-member-match doesn't return Groups, it return id of Task. Then user should make another request and see whether Task is completed. And then they make third request where they'll see output.

@Rost-is-love Rost-is-love merged commit cac2383 into main May 14, 2026
2 checks passed
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.

3 participants