0628f8f813
feat: ABDM OPD Queue + ABHA Register flow + patient ABHA search fix
...
ABDM OPD Queue (today):
- New EAtriaBridgeConnector: opdQueueFetch/opdTokenCreate/opdTokenUpdateStatus + patch() helper
- New AbdmOpdQueue controller: index/list/fetchQueue/createToken/updateTokenStatus/processScannedToken
- fetchQueue syncs gateway tokens into abdm_opd_tokens (local DB) and enriches with HMS patient data
- processScannedToken auto-finds/creates patient_master record from ABHA scan data, marks token CALLED
- New migration: abdm_opd_tokens table (gateway_token_id, source, status, patient_id, opd_id, processed_at)
- New view: abdm/opd_queue.php - reception screen with auto-refresh 30s, HMS Patient column (green row when OPD registered)
- Sidebar: ABDM OPD Queue nav link added
- Routes: AbdmOpdQueue with abdmPermFilter
ABHA Register tab (earlier this session):
- New Abha controller: initiate/verifyOtp/communication/verifyCommOtp/validateAbha/card + autoCreateOrFindPatient
- New views: abha/card.php, partials/abha_create_panel.php, partials/abha_otp_modal.php
- Patient_V.php: ABHA Register tab with 4-method wizard (ABHA number, QR scan, facility QR, mobile OTP)
Patient ABHA search fix:
- Patient::search() now detects ABHA column (abha_id/abha_no/abha/abha_address) and searches by it
ABDM Bridge infrastructure:
- EAtriaBridgeConnector: new connector for e-atria.in ABDM bridge gateway
- AbdmConnectorFactory/Interface updated
- AbdmGatewaySettings controller + view
- SNOMED/CSNOTK terminology service skeleton
- Finance payout OPD consult views
- Migration: AddAbdmPushFieldsToOpdAndPatient, CreateSnomedCoreTables
- Docs: abdm/ API specs, architecture, gateway guides
2026-05-16 04:21:31 +05:30
f311d50745
OPD consult: add women history fields, persist in history, update print sections
2026-05-12 12:52:13 +05:30
fbb03a6abb
billing: redesign ABHA wizard, enhance patient info panels and consult page photo/layout
2026-05-08 13:29:57 +05:30
07916f3baf
Allow same medicine name with different formulation in OPD save
2026-04-17 09:48:30 +05:30
11fe14089d
Stop auto-filling prescription remarks from structured allergy fields
2026-04-17 03:50:01 +05:30
ec872c984c
Strengthen OPD autocomplete normalization for spacing and punctuation variants
2026-04-17 03:41:01 +05:30
47423a7d38
Normalize OPD autocomplete suggestions and add one-time cleanup command
2026-04-17 03:31:33 +05:30
aae6211f48
Add investigation shortcuts manager panel
2026-04-14 21:51:49 +05:30
0b2ae6ccc1
Broaden consult search candidates for phonetic medicine matches
2026-04-13 13:04:01 +05:30
992fd83ff2
Normalize separator variants in consult medicine SQL search
2026-04-13 12:57:16 +05:30
9e30d69487
Add phonetic matching for consult medicine search
2026-04-13 12:54:33 +05:30
05ff049526
Improve consult medicine search normalization and duplicate blocking
2026-04-13 12:46:42 +05:30
385c977d88
Auto-mark OPD visited on consult save or print
2026-04-10 03:59:10 +05:30
7275d13500
Add OPD keyword manager and caret-aligned autocomplete
2026-04-09 06:25:03 +05:30
418fb3e5e7
Add cached consult autotype suggestions and doctor/master keyword save
2026-04-09 06:07:46 +05:30
b1d329e462
Port legacy OPD autotype suggestions for complaints, provisional diagnosis, and findings
2026-04-09 06:00:29 +05:30
5f35d22f86
Fix medicine search cache key format
2026-04-08 20:06:08 +05:30
2795e6255c
Add medicine search DB indexes and prefix query optimization
2026-04-08 19:49:51 +05:30
fad0d89260
Speed up medicine autocomplete with cache and 10-row limit
2026-04-08 19:47:38 +05:30
bca95f14e6
fix: {{medical}} prints Generic Name instead of Substitute in OPD consult print
...
Root cause: the fallback lookup from opd_med_master used
$labelField = $masterSaltField ?? $masterGenericField
which preferred salt_name (the Substitute / other brand names field) over
genericname (the actual Generic Name / composition). If a prescription row's
inline genericname was empty, the Substitute string was written into it and
then printed as \"Salt/Generic\" in the {{medical}} block.
Fixes applied in three places:
1. Opd.php buildOpdLetterPrintData - master lookup now prefers genericname
2. Opd.php buildOpdLetterPrintData second loop - removed inline salt_name
fallback that overwrote genericname with Substitute value
3. Opd.php buildLegacyDashboardTemplateVars - removed salt_name from the
generic resolution chain used when rendering the medicine table HTML
4. Opd_prescription.php medicine list function - same preferGenericname fix
and removed inline salt_name -> genericname overwrite"
2026-04-07 11:34:57 +05:30
2958f2e9b6
fix: queue no per-doctor-per-day isolation and stop auto-refresh on digest poll
...
- Queue No (Opd.php::autoCreateOpdQueue, Opd_prescription.php::opd_prescription_save
and ::ensurePrescriptionSession): changed MAX(queue_no) query to JOIN through
opd_master.doc_id instead of trusting opd_prescription.doc_id, ensuring queue
numbering is strictly per-doctor per-day regardless of stale doc_id values in
opd_prescription rows.
- OPD appointment list: replaced auto-reload-on-digest-change with a manual
'Refresh' button. When the 8s digest poll detects new data the button turns
yellow with a 'New' badge; the page only reloads when the user explicitly clicks
it, preventing disruptive mid-session reloads."
2026-04-07 11:23:20 +05:30
44cb24c4e1
fix: restore legacy OPD queue workflow
2026-04-06 12:40:34 +05:30
f8cbaacfb0
perf: remove AI enrichment from consult new medicine save flow
2026-04-06 12:20:44 +05:30
2154af394c
fix: build Next Visit chips from opd_nextvisit with date from today
2026-04-06 11:45:08 +05:30
f28fcf2717
feat: auto-create new consult medicines in OPD master with AI/local detail enrichment
2026-04-06 11:38:11 +05:30
1843460693
feat: restore Old Prescription panel with add-one/add-all into current consult
2026-04-06 11:24:11 +05:30
7e16ac92c2
fix: dynamic ABHA column SELECT in createOpdPrescriptionWorkTask (unknown column abha_no)
2026-04-06 00:01:08 +05:30
062fc7ab32
feat: Add ABDM Task Board module with ABHA workflow
...
- Add ABDM sidebar heading and Task Board nav link
- Create migration 000040: abdm_work_tasks table
- Add AbdmTaskBoard controller with backfill methods
- Add AbdmWorkTaskService for task creation/deduplication
- Add AbdmGateway controller for ABDM API integration
- Separate task types: patient_abha_create vs patient_abha_update
- Add lab_report_publish and radiology_report_publish task types
- Patient.php: auto-create ABDM tasks on registration
- Diagnosis.php: auto-create tasks on report verify/finalize
- Task board UI: 7 filter buttons with default Unupdated ABHA view
- Fix SQL crash in backfillLabRadiologyTasks (dynamic column detection)
- Improve load_form AJAX error display with HTTP status + response text
- Add ABDM routes in Routes.php
- Add FHIR R4 builder library updates
- Add bridge sync service updates
2026-04-05 23:42:24 +05:30
9d88aaa2a6
Implement ABDM identity storage and align OPD consult/medicine dose masters
2026-04-04 17:26:40 +05:30
2b391705fe
Rx print: persist and print Hindi advice from opd_advice
2026-04-01 20:23:10 +05:30
c3f07db430
Fix consult profile add: avoid duplicate investigation code 500
2026-04-01 19:33:55 +05:30
f4891c0bb4
Fix profile master data loading and remove city_auto_u migration
2026-04-01 19:22:03 +05:30
94e1253e40
Investigation Profile Master: CRUD and consult integration
2026-04-01 18:44:52 +05:30
d06fe77f03
Investigation Master: use legacy investigation key field
2026-04-01 18:33:20 +05:30
771fa64778
Investigation Master: CRUD, favourites, specialization filter
2026-04-01 18:26:33 +05:30
e27a69df5d
OPD/IPD: add dosage defaults to medicine master form; make drug allergy non-mandatory (default: Allergies Not Known)
2026-04-01 18:12:25 +05:30
7ea22378f5
OPD medicine list: move DataTable to server-side ajax
2026-04-01 17:49:02 +05:30
c3bc8f89b8
OPD: simplify medicine list and reuse master dosage defaults
2026-04-01 17:40:50 +05:30
cf299de505
feat: add Delete button to Rx-Group list
...
- new rx_group_delete(int rxId) method in Opd_prescription controller
- deletes linked medicines first (opd_prescrption_prescribed_template), then group row
- POST route: Opd_prescription/rx_group_delete/(:num)
- Delete button (red) added to each row in Rx-Group list table
- confirm dialog before delete (shows group name)
- reloads list after delete; clears form if deleted group was loaded
2026-03-31 04:28:18 +05:30
ad24857720
feat: align consult Rx medicine controls with Rx-Group Add/Edit masters
...
- consult form medicine Dose/When/Freq changed to dropdowns from dose masters
- added Where dropdown in consult medicine editor and table display
- consult now loads options from Opd_prescription/rx_group_dose_masters
- medicine add/update payload now includes dosage_where
- medicine list now returns dosage_where_label for readable table output
- edit mode supports existing values not present in current master set
- quick chips now map into select options (with safe fallback)
2026-03-31 03:31:26 +05:30
b1ba3105c0
Fix AI medicine enrichment fallback and DataTable reinit issues
2026-03-27 04:16:22 +05:30
300ec0e5cf
feat: migrate OPD template flow to DB and apply related updates
2026-03-20 18:11:17 +05:30
47d7db6d8b
refactor: remove Gemini integration and seed leakage paths
...
- Remove Gemini runtime fallback from OPD AI text generation and complaint drafting
- Remove legacy Gemini scan extraction path
- Update UI/provider labels to Azure/AI generic naming
- Make AI usage guardrail metrics provider-neutral (ai_today)
- Add seed export sanitization to exclude sensitive hospital_setting and audit entries
- Remove Gemini API audit entry from master seed JSON
2026-03-18 06:18:52 +05:30
d94797a433
Implement finance phase 2 pharmacy workflow and admin hospital/pharmacy profile settings
2026-03-17 04:05:02 +05:30
9b235cc01f
Improve setup installation diagnostics and sync error visibility
2026-03-02 23:09:40 +05:30
614713f76b
Implement OPD template builder, doctor template selection, and OPD print integration fixes
2026-02-27 19:44:36 +05:30