{"artifactType":"aksh-uk-eu-integration-boundary-contract","generatedAt":"2026-07-12T15:44:54.717Z","generatedBy":"public","syntheticOnly":true,"defaultMode":"synthetic_proof","activeFlags":{"fastApiSynthesis":false,"medplumSync":false},"ownSystemBoundary":{"artifactType":"aksh-uk-eu-own-system-boundary-contract","defaultSourceOfTruth":"json_file_repository","blockedClaims":["Live NHS/EHR integration","Real patient data handling","Production clinical software","Production clinical AI","Production database readiness","Autonomous clinical decisioning"]},"ownSystemInterfaces":[{"id":"review-case-store","label":"Own-system review case store","status":"available","boundary":"JSON-backed synthetic review cases are the current source of truth for proof work.","evidenceRoute":"/api/review-cases"},{"id":"simulated-patient-registry","label":"Simulated patient registry","status":"available","boundary":"Curated fake longitudinal profiles support realistic testing without real patient records.","evidenceRoute":"/review/simulated-patients"},{"id":"clinical-governance-pack","label":"Clinical governance pack","status":"available","boundary":"Hazard rehearsal and safety-case sections support production-readiness planning, not signed-off safety claims.","evidenceRoute":"/review/governance-pack"},{"id":"research-evaluation-boundary","label":"Research evaluation boundary","status":"planned","boundary":"Offline synthetic evaluation can use dataset/task/metric patterns, but no live model deployment or production clinical AI claim is enabled.","evidenceRoute":"/review/governance-pack"},{"id":"fhir-shaped-export","label":"FHIR-shaped evidence export","status":"available","boundary":"Internal evidence/export shape only; not live NHS/EHR writeback.","evidenceRoute":"/api/evidence/registry"},{"id":"external-ehr-adapters","label":"External EHR adapters","status":"disabled","boundary":"External NHS/EHR integration is not part of the current own-system proof."}],"externalAdapters":[{"id":"medplum-sync","label":"Medplum sync","status":"disabled","enabled":false,"defaultMode":"integration_rehearsal","boundary":"Only attempts sync when ENABLE_MEDPLUM_SYNC=true and an accepted case is newly frozen."},{"id":"fastapi-synthesis","label":"FastAPI synthesis","status":"disabled","enabled":false,"defaultMode":"integration_rehearsal","boundary":"Synthetic intake generation remains deterministic unless ENABLE_FASTAPI_SYNTHESIS=true."},{"id":"ehr-connectors","label":"EHR connectors","status":"planned","enabled":false,"defaultMode":"interface_placeholder","boundary":"EMIS, SystmOne, and NHS live integration remain out of scope for this proof build."}],"internalEvidenceAdapters":[{"id":"fhir-export","label":"FHIR-shaped export","status":"available","enabled":true,"defaultMode":"synthetic_evidence","boundary":"Builds internal FHIR R4-shaped evidence payloads; not a live EHR write."}],"environmentContract":{"artifactType":"aksh-uk-eu-integration-environment-contract","generatedAt":"2026-07-12T15:44:54.717Z","generatedBy":"public","syntheticOnly":true,"defaultIntegrationMode":"synthetic_proof","rehearsalModeRequiresExplicitFlags":true,"variables":[{"name":"ENABLE_FASTAPI_SYNTHESIS","defaultValue":"false","required":false,"scope":"integration_rehearsal","purpose":"Enables FastAPI-backed intake synthesis instead of deterministic local generation.","failureModes":["When false, intake creation must stay deterministic and must not call the FastAPI service.","When true and the service is unreachable, intake creation should fail explicitly rather than silently downgrade."]},{"name":"FASTAPI_SYNTHESIS_URL","defaultValue":"http://localhost:8000/api/v1/synthesis","required":false,"scope":"integration_rehearsal","purpose":"Target URL for FastAPI synthesis rehearsal.","failureModes":["Invalid URL or offline service returns a rehearsal failure response."]},{"name":"ENABLE_MEDPLUM_SYNC","defaultValue":"false","required":false,"scope":"integration_rehearsal","purpose":"Allows accepted frozen cases to push FHIR bundles to Medplum during rehearsal.","failureModes":["When false, accepting a case must never trigger Medplum sync.","When true, missing Medplum credentials should log a non-blocking failure only."]},{"name":"MEDPLUM_URL","defaultValue":"http://localhost:8103/fhir/R4","required":false,"scope":"integration_rehearsal","purpose":"Medplum FHIR endpoint for rehearsal sync.","failureModes":["Unreachable endpoint returns false from pushToMedplum without changing proof behavior."]},{"name":"MEDPLUM_CLIENT_ID","defaultValue":"","required":false,"scope":"integration_rehearsal","purpose":"Optional OAuth client id for Medplum rehearsal.","failureModes":["Missing credentials fall back to unauthenticated local rehearsal attempts."]},{"name":"MEDPLUM_CLIENT_SECRET","defaultValue":"","required":false,"scope":"integration_rehearsal","purpose":"Optional OAuth client secret for Medplum rehearsal.","failureModes":["Missing credentials fall back to unauthenticated local rehearsal attempts."]},{"name":"DEEPGRAM_API_KEY","defaultValue":"","required":false,"scope":"integration_rehearsal","purpose":"Enables live audio transcription when @deepgram/sdk is installed.","failureModes":["Missing or placeholder key uses simulated transcript output.","Missing optional SDK package uses simulated transcript output."]},{"name":"AKSH_STORAGE_ADAPTER","defaultValue":"json_file_repository","required":false,"scope":"server","purpose":"Selects the active review-case repository adapter.","failureModes":["Unknown adapter values throw before any repository read/write."]},{"name":"NEXTAUTH_SECRET","defaultValue":"","required":true,"scope":"server","purpose":"Session signing secret for authenticated proof routes.","failureModes":["Missing secret breaks authenticated review and export routes."]},{"name":"NEXTAUTH_URL","defaultValue":"http://localhost:3000","required":true,"scope":"server","purpose":"Base URL for NextAuth callbacks.","failureModes":["Misconfigured URL breaks sign-in redirects in local and deployed environments."]}],"guardrails":["External adapters remain disabled unless their explicit environment flag is true.","Synthetic proof behavior must not silently change when an external service is offline.","FHIR-shaped exports remain internal evidence artifacts even when Medplum rehearsal is enabled."]},"transcription":{"artifactType":"aksh-uk-eu-transcription-dependency-status","deepgramApiKeyConfigured":true,"packageAlignmentNote":"@deepgram/sdk is optional and not installed by default; the transcribe route uses simulated output until both the SDK and DEEPGRAM_API_KEY are present.","defaultMode":"simulated"},"rehearsalRules":["External adapters stay disabled unless their explicit environment flag is true.","Deterministic synthetic intake generation is the default when ENABLE_FASTAPI_SYNTHESIS is false.","FastAPI rehearsal failures must surface explicitly and must not silently replace synthetic proof behavior.","Transcription uses simulated output until both DEEPGRAM_API_KEY and @deepgram/sdk are available.","Medplum sync only runs on newly accepted frozen cases when ENABLE_MEDPLUM_SYNC=true."],"disabledByDefault":["medplum-sync","fastapi-synthesis","ehr-connectors"]}