diff --git a/app/Controllers/AbdmGateway.php b/app/Controllers/AbdmGateway.php index 50a1ff1..80c0a25 100644 --- a/app/Controllers/AbdmGateway.php +++ b/app/Controllers/AbdmGateway.php @@ -2057,13 +2057,31 @@ class AbdmGateway extends BaseController // -- Load test / charge name -------------------------------------------- $testTitle = ''; - $chargeId = (int) ($labReq->charge_id ?? 0); - if ($chargeId > 0 && $this->db->tableExists('charge_master')) { - $chargeRow = $this->db->table('charge_master')->select('charge_name, charge_type')->where('id', $chargeId)->get(1)->getRowArray() ?? []; - $testTitle = trim((string) ($chargeRow['charge_name'] ?? '')); + $labType = (int) ($labReq->lab_type ?? 0); + $isImaging = in_array($labType, [1, 2, 3, 4, 6], true); + + // Check lab_repo first + $labRepoId = (int) ($labReq->lab_repo_id ?? 0); + if ($labRepoId > 0 && $this->db->tableExists('lab_repo')) { + $repoRow = $this->db->table('lab_repo')->select('Repo, RepoName')->where('mstRepoKey', $labRepoId)->get(1)->getRowArray() ?? []; + $testTitle = trim((string) ($repoRow['RepoName'] ?? $repoRow['Repo'] ?? '')); } + + // Fallback: check charge_id in invoice_item or item_master + $chargeId = (int) ($labReq->charge_id ?? 0); + if ($testTitle === '' && $chargeId > 0) { + if ($this->db->tableExists('invoice_item')) { + $invItem = $this->db->table('invoice_item')->select('item_name')->where('id', $chargeId)->get(1)->getRowArray() ?? []; + $testTitle = trim((string) ($invItem['item_name'] ?? '')); + } + if ($testTitle === '' && $this->db->tableExists('item_master')) { + $itRow = $this->db->table('item_master')->select('item_name')->where('id', $chargeId)->get(1)->getRowArray() ?? []; + $testTitle = trim((string) ($itRow['item_name'] ?? '')); + } + } + if ($testTitle === '') { - $testTitle = $this->mapLabTypeToTitle((int) ($labReq->lab_type ?? 0)); + $testTitle = $isImaging ? 'Radiology Report' : $this->mapLabTypeToTitle($labType); } // -- Load hospital profile --------------------------------------------- @@ -2087,19 +2105,18 @@ class AbdmGateway extends BaseController $diagnosticReport = [ 'id' => (string) $labReqId, - 'title' => $testTitle ?: 'Laboratory Report', + 'title' => $testTitle ?: ($isImaging ? 'Radiology Report' : 'Laboratory Report'), 'status' => $labReq->status == 1 ? 'final' : 'preliminary', 'conclusion' => trim((string) ($labReq->report_data_Impression ?? '')), 'reported_at' => $reportedAt, 'report_html' => trim((string) ($labReq->Report_Data ?? '')), ]; - $isImaging = (int) ($labReq->lab_type ?? 0) === 6; if ($isImaging) { $diagnosticReport['is_imaging'] = true; $diagnosticReport['report_domain'] = 'imaging'; - $diagnosticReport['section_title'] = 'Computed tomography imaging report'; + $diagnosticReport['section_title'] = 'Diagnostic imaging report'; $diagnosticReport['section_snomed_code'] = '371531008'; - $diagnosticReport['section_snomed_display'] = 'Computed tomography imaging report'; + $diagnosticReport['section_snomed_display'] = 'Diagnostic imaging report'; } // -- Load LOINC code for the panel from lab_repo ----------------------- diff --git a/app/Controllers/AbdmTaskBoard.php b/app/Controllers/AbdmTaskBoard.php index 997c174..2bb7aa6 100644 --- a/app/Controllers/AbdmTaskBoard.php +++ b/app/Controllers/AbdmTaskBoard.php @@ -454,12 +454,29 @@ class AbdmTaskBoard extends BaseController $labType = (int) ($row['lab_type'] ?? 0); $taskType = in_array($labType, [1, 2, 3, 4, 6], true) ? 'radiology_report_publish' : 'lab_report_publish'; + // Skip if already linked in health_records + if ($this->db->tableExists('health_records')) { + $alreadyLinked = $this->db->table('health_records') + ->select('id') + ->where('patient_id', $patientId) + ->groupStart() + ->where('entity_id', (string) $labReqId) + ->orLike('care_context_reference', 'RAD-' . $labReqId . '-', 'after') + ->orLike('care_context_reference', 'LAB-' . $labReqId . '-', 'after') + ->groupEnd() + ->whereIn('push_status', ['linked', 'pushed', 'shared']) + ->get(1) + ->getRowArray(); + if (! empty($alreadyLinked)) { + continue; + } + } + $exists = $this->db->table('abdm_work_tasks') ->select('id') ->where('task_type', $taskType) ->where('entity_type', 'lab_request') ->where('entity_id', (string) $labReqId) - ->whereIn('status', ['pending', 'in_progress']) ->get(1) ->getRowArray(); if (! empty($exists)) {