From 7b04c8e419c1f0240309e30c62caba3492b3b9d6 Mon Sep 17 00:00:00 2001 From: DevSoftTech Server Date: Thu, 2 Apr 2026 05:12:08 +0530 Subject: [PATCH] Add Echo modality to diagnosis navigation and charge group setup --- app/Config/Routes.php | 1 + app/Controllers/Diagnosis.php | 5 ++ ...026-04-02-000033_EnsureEchoChargeGroup.php | 60 +++++++++++++++++++ app/Views/diagnosis/index.php | 14 +++++ app/Views/partials/sidebar.php | 6 ++ 5 files changed, 86 insertions(+) create mode 100644 app/Database/Migrations/2026-04-02-000033_EnsureEchoChargeGroup.php diff --git a/app/Config/Routes.php b/app/Config/Routes.php index a7d5d34..04342a1 100644 --- a/app/Config/Routes.php +++ b/app/Config/Routes.php @@ -757,6 +757,7 @@ $routes->get('diagnosis', 'Diagnosis::index', ['filter' => 'permission:diagnosis $routes->get('diagnosis/pathology', 'Diagnosis::pathology', ['filter' => 'permission:diagnosis.access']); $routes->get('diagnosis/biopsy', 'Diagnosis::biopsy', ['filter' => 'permission:diagnosis.access']); $routes->get('diagnosis/ultrasound', 'Diagnosis::ultrasound', ['filter' => 'permission:diagnosis.access']); +$routes->get('diagnosis/echo', 'Diagnosis::echo', ['filter' => 'permission:diagnosis.access']); $routes->get('diagnosis/xray', 'Diagnosis::xray', ['filter' => 'permission:diagnosis.access']); $routes->get('diagnosis/mri', 'Diagnosis::mri', ['filter' => 'permission:diagnosis.access']); $routes->get('diagnosis/ctscan', 'Diagnosis::ctscan', ['filter' => 'permission:diagnosis.access']); diff --git a/app/Controllers/Diagnosis.php b/app/Controllers/Diagnosis.php index fed2247..f366b72 100644 --- a/app/Controllers/Diagnosis.php +++ b/app/Controllers/Diagnosis.php @@ -63,6 +63,11 @@ class Diagnosis extends BaseController return $this->labPath(4); } + public function echo() + { + return $this->labPath(6); + } + public function labMaster() { return $this->index(); diff --git a/app/Database/Migrations/2026-04-02-000033_EnsureEchoChargeGroup.php b/app/Database/Migrations/2026-04-02-000033_EnsureEchoChargeGroup.php new file mode 100644 index 0000000..eed3fcb --- /dev/null +++ b/app/Database/Migrations/2026-04-02-000033_EnsureEchoChargeGroup.php @@ -0,0 +1,60 @@ +db->tableExists('hc_item_type')) { + return; + } + + $builder = $this->db->table('hc_item_type'); + + $rowById = $builder->where('itype_id', 6)->get(1)->getRowArray(); + if (! empty($rowById)) { + $groupDesc = strtolower(trim((string) ($rowById['group_desc'] ?? ''))); + if ($groupDesc !== 'echo') { + $builder->where('itype_id', 6)->update(['group_desc' => 'Echo']); + } + + return; + } + + $echoByName = $this->db->query("SELECT itype_id FROM hc_item_type WHERE LOWER(TRIM(group_desc)) = 'echo' LIMIT 1") + ->getRowArray(); + + if (! empty($echoByName)) { + return; + } + + $insert = [ + 'itype_id' => 6, + 'group_desc' => 'Echo', + ]; + + // Keep consistency with existing item type visibility flags when available. + $columns = array_map( + static fn (array $col): string => (string) ($col['Field'] ?? ''), + $this->db->query('SHOW COLUMNS FROM hc_item_type')->getResultArray() + ); + + if (in_array('is_ipd_opd', $columns, true)) { + $insert['is_ipd_opd'] = 0; + } + + $this->db->table('hc_item_type')->insert($insert); + } + + public function down() + { + if (! $this->db->tableExists('hc_item_type')) { + return; + } + + $this->db->query("DELETE FROM hc_item_type WHERE itype_id = 6 AND LOWER(TRIM(group_desc)) = 'echo'"); + } +} diff --git a/app/Views/diagnosis/index.php b/app/Views/diagnosis/index.php index c37eedb..3090c57 100644 --- a/app/Views/diagnosis/index.php +++ b/app/Views/diagnosis/index.php @@ -93,5 +93,19 @@ + + +
+ +
diff --git a/app/Views/partials/sidebar.php b/app/Views/partials/sidebar.php index 1bca419..c42ba83 100644 --- a/app/Views/partials/sidebar.php +++ b/app/Views/partials/sidebar.php @@ -348,6 +348,12 @@ if (! $canDiagnosis && $user && method_exists($user, 'inGroup')) { Ultrasound +