Adds a 'Verify SSL Certificate' switch on Admin -> ABDM Gateway page,
persisted as hospital_setting.ABDM_BRIDGE_SSL_VERIFY (default ON/secure).
Wired into M3HiuGatewayClient, EAtriaBridgeConnector, and the settings
page's own Test Connection check. Per-machine ABDM_BRIDGE_SSL_VERIFY env
var still overrides this DB setting for deployments needing a quick
local-only workaround. Verification stays on by default everywhere;
disabling it is an explicit, visible opt-in with an on-page warning.
Some local WAMP/XAMPP/Laragon PHP installs ship an outdated cacert.pem,
causing outbound HTTPS calls to the bridge to fail with cURL error 60
(SSL certificate problem). Rather than globally disabling certificate
verification (as bridge support suggested), verification stays ON by
default and can only be disabled per-deployment by explicitly setting
ABDM_BRIDGE_SSL_VERIFY=false in that machine's .env. The real fix on
affected machines is updating curl.cainfo in php.ini.
- add facility QR support and OPD queue bridge fixes
- support care-context push warnings for lab, radiology, IPD and remaining HI types
- improve ABHA patient matching and diagnosis autocomplete performance
- clean up webcam streams on page navigation
- EAtriaBridgeConnector: fix OPConsultRecord hi_type normalization (was wrongly
mapping to PrescriptionRecord); allow push with either abha_address or abha_id;
add careContextId alias for care_context_reference in pushRecord payload
- AbdmGateway: migrate OPD share to records/push semantics with unique
care_context_reference, ABHA id/address resolution, bridge_record_id capture,
and 409 DUPLICATE_RECORD non-fatal handling
- AbdmGateway: add non-ABHA local-only storage path for OPD/IPD/Lab share
(push_status=local_only, no bridge call, audit logged)
- AbdmGateway: add POST /records/discover endpoint with ABHA-first + fallback
matching by mobile, hospital ID, patient UHID+birthYear (PHR-compatible)
- AbdmGateway: add GET /records/fetch/{careContextId} endpoint returning
decrypted FHIR payload from health_records
- AbdmGateway: dual-write consent artefacts to abdm_consent_records AND
consents table when both present; getActiveConsentRecord falls back to
consents table when abdm_consent_records is absent
- AbdmAuditService: write to audit_logs (generic schema) when present,
fallback to abdm_audit_logs; field-aware insert supports both schemas
- Routes: register /records/discover and /records/fetch/(:any)
- Webhook signature validator: check EKA_WEBHOOK_SECRET then HMS_WEBHOOK_SECRET
for gateway compatibility
- FhirR4Builder: rewrite buildLabReportBundle() with DiagnosticReportLab
profile, structured Observation valueQuantity/valueString, reference
ranges, interpretation codes, Binary+DocumentReference for HTML report,
Encounter resource, HFR-based bundle identifier system
- FhirR4Builder: rewrite buildDischargeSummaryBundle() with optional
Practitioner/Organization params, structured ABDM sections (chief
complaints 422843007, medical history 1003642006, investigations
721981007, procedures 1003640003, medications 721912009, follow-up
736271009), HFR-based bundle identifier system
- AbdmGateway: shareIpdDischargeBundle() now builds a real
DischargeSummaryRecord FHIR bundle and posts via pushRecord()
(POST /v3/records/push) instead of the stale shareIpdDischargeBundle()
- AbdmGateway: shareDiagnosisReportBundle() now builds a real
DiagnosticReportRecord FHIR bundle and posts via pushRecord()
instead of the stale shareDiagnosisReportBundle()
- AbdmGateway: add getHospitalProfileForFhir() and mapLabTypeToTitle()
helpers; fix pre-existing undefined \ bug in
getActiveConsentRecord()
- Add ABDM_FHIR reference package, AbdmBridgeLog controller/view,
bridge record migration, debug scripts and misc UI/settings updates