Repository navigation
feat(check-in-wallet): SMART Health Check-in web wallet for Kill the Clipboard #2 - #5
Merged
Merged
Conversation
Give RealActivity a connectathon-ready web wallet for Kill the Clipboard #2: origin-shown consent, item-by-item share or decline, US Core FHIR R4 for the synthetic Dylan Meyer chart, PHQ-2 inline form, and insurance always unavailable under Tula's health-data-only policy. Signed-off-by: Cursor Agent <cursoragent@cursor.com> Co-authored-by: Paul J. Swider <pswider@realactivity.com>
Remote forms were fetched twice and from any URL, a non-FHIR accept list could fail the whole sealed response, and the consent screen could submit twice or hide a referenced prescriber. Signed-off-by: Cursor Agent <cursoragent@cursor.com> Co-authored-by: Paul J. Swider <pswider@realactivity.com>
The connectathon needs a public https wallet URL. This workflow builds the static wallet and deploys it to /tula/check-in-wallet/ once a repo admin enables Pages with the GitHub Actions source. Signed-off-by: Cursor Agent <cursoragent@cursor.com> Co-authored-by: Paul J. Swider <pswider@realactivity.com>
pswider
marked this pull request as ready for review
October 17, 2026 16:20
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Adds a static SMART Health Check-in 1.0 web wallet under
apps/check-in-wallet/so RealActivity can test at CMS Kill the Clipboard Connectathon #2 (Tue 3 Nov 2026, 2-5 PM ET). Target public https URL by 27 Oct. This PR does not deploy anything or register the wallet.What shipped
window.open, using@smart-health-checkin/clientv0.4.4 (Apache-2.0) forpostMessage, request parse,selectEntries,checkWalletResponse, mdoc wrap, and HPKE.4.0.1/application/fhir+jsonwith US Core profiles: Patient, Condition (problems), AllergyIntolerance, MedicationRequest, Immunization. The referenced prescriber (Dr. Dave Matthews) is included when problems or medications are shared.unavailable(ordeclinedif the patient turns it off). Tula policy: health data only. No Coverage resource.demo.htmlfor same-origin dry runs.checkWalletResponse.script-src 'self', no inline scripts).participant.example.jsonmatches the connectathon registration schema.Review fixes
A review pass closed these gaps without changing the three minimum scenarios:
application/fhir+jsonisunsupportedfor that item, so the library does not reject the whole sealed response.error("The form was not completed.") and the consent screen shows "Answer every question before sharing."/C4DIC-Coverage,/us-core-coverage,/insurance-card/) onprofilesandprofilesFrom.selectEntriespull in the prescriber.demo.htmlrenders a failed result ifwallet.startrejects.Scenarios vs the SMART Testing EHR
The live Testing EHR was not run from this PR (no public https URL, and this change does not deploy). After the review fixes, the same client library the Testing EHR uses accepted all three minimum scenarios on a local verifier (
wallet.start+ decrypt + spec checks), rechecked in the browser against the production build:records.jsonfulfilled; coverageunavailable. Origin shown. Prescriber listed.form-phq2.jsonphq2isfulfilledwith canonicalhttps://smart-health-checkin.org/connectathon/Questionnaire/phq-2.json.records.jsondeclined; other health itemsfulfilled; coverageunavailable.Unit tests also pass
checkWalletResponse(empty issue list) for those three plus unknown-selector (unsupported), a non-FHIR accept list, and the 512 KB JSON cap.After a human deploys https, add the URL as a custom wallet on https://smart-health-checkin.org/connectathon/testing-ehr/ and file official results.
What is still missing
statusisnot-yet).unsupported.~/.openclaw/workspace/tula/fhir/.Could not verify
frame-ancestors 'none'cannot be set from a meta tag. The host must send that as an HTTP response header. README says so.valueString. The minimum scenarios only need PHQ-2 choice.Proposed wallet URL and how to deploy
Proposed:
https://realactivity.github.io/tula/check-in-wallet/Static
dist/fromcd apps/check-in-wallet && npm ci && npm test && npm run build.vite.config.tsusesbase: "./"so a Pages subpath works. No server, no secrets, no PHI store. The production build injects a CSP meta tag. The host should also sendContent-Security-Policy: frame-ancestors 'none'.Human steps (do not do them from this PR):
gh-pages) and publishapps/check-in-wallet/dist.demo.html.apps/check-in-wallet/participant.example.json. Setstatustouponly when anyone can open the URL.Alternative: Azure Static Web Apps or
https://checkin.realactivity.ai/if Pages is not acceptable. That needs DNS and an owner.Human decisions
idtula-web-walletis unique.statusfromnot-yettouponly after the URL is public.TRADEMARK.md.realactivity/tulaPages site.How to run