diff --git a/application/libraries/Mcudashboard.php b/application/libraries/Mcudashboard.php index 678915a..a78fe2b 100644 --- a/application/libraries/Mcudashboard.php +++ b/application/libraries/Mcudashboard.php @@ -29,6 +29,68 @@ class Mcudashboard return array(false, "invalid source argument"); } + public function upsert_patient_resume_status($Mcu_ResumeID = 0) + { + $Mcu_ResumeID = intval($Mcu_ResumeID); + if ($Mcu_ResumeID <= 0) { + return array(false, "invalid Mcu_ResumeID"); + } + + $sql = "SELECT + mr.Mcu_ResumeID, + mr.Mcu_ResumeStatus, + mr.Mcu_ResumeValidation, + oh.T_OrderHeaderID, + oh.T_OrderHeaderMgm_McuID AS mcu_id, + pp.Mcu_PreregisterPatientsID AS preregister_id, + IFNULL(pmd.Published_McuDasboardStatus, 'N') AS published_status + FROM mcu_resume mr + JOIN t_orderheader oh ON oh.T_OrderHeaderID = mr.Mcu_ResumeT_OrderHeaderID + AND oh.T_OrderHeaderIsActive = 'Y' + JOIN mcu_preregister_patients pp ON pp.Mcu_PreregisterPatientsT_OrderHeaderID = oh.T_OrderHeaderID + AND pp.Mcu_PreregisterPatientsIsActive = 'Y' + LEFT JOIN published_mcu_dashboard pmd ON pmd.Published_McuDasboardT_OrderHeaderID = oh.T_OrderHeaderID + AND pmd.Published_McuDasboardIsActive = 'Y' + WHERE mr.Mcu_ResumeID = ? AND mr.Mcu_ResumeIsActive = 'Y' + LIMIT 1"; + $qry = $this->db_onedev->query($sql, array($Mcu_ResumeID)); + if (!$qry) { + return array(false, $this->db_onedev->error()["message"]); + } + if ($qry->num_rows() === 0) { + return array(false, "resume not found"); + } + + $row = $qry->row_array(); + + $sql = "INSERT INTO mcu_patient_resume_status ( + Mcu_PatientResumeStatusPreregisterID, + Mcu_PatientResumeStatusMcuID, + Mcu_PatientResumeStatusStatus, + Mcu_PatientResumeStatusValidated, + Mcu_PatientResumeStatusPublished, + Mcu_PatientResumeSyncedAt + ) VALUES (?, ?, ?, ?, ?, NOW()) + ON DUPLICATE KEY UPDATE + Mcu_PatientResumeStatusStatus = VALUES(Mcu_PatientResumeStatusStatus), + Mcu_PatientResumeStatusValidated = VALUES(Mcu_PatientResumeStatusValidated), + Mcu_PatientResumeStatusPublished = VALUES(Mcu_PatientResumeStatusPublished), + Mcu_PatientResumeSyncedAt = NOW()"; + $ok = $this->db_dashboard->query($sql, array( + intval($row['preregister_id']), + intval($row['mcu_id']), + $row['Mcu_ResumeStatus'], + $row['Mcu_ResumeValidation'], + $row['published_status'] + )); + + if (!$ok) { + return array(false, $this->db_dashboard->error()["message"]); + } + + return array(true, "ok"); + } + private function upsert_from_lab($orderSampleID) { $sql = "SELECT diff --git a/scripts/sql/2026-04-29_create_published_mcu_dashboard.sql b/scripts/sql/2026-04-29_create_published_mcu_dashboard.sql new file mode 100644 index 0000000..8238fef --- /dev/null +++ b/scripts/sql/2026-04-29_create_published_mcu_dashboard.sql @@ -0,0 +1,18 @@ +CREATE TABLE `published_mcu_dashboard` ( + `Published_McuDasboardID` int NOT NULL AUTO_INCREMENT, + `Published_McuDasboardT_OrderHeaderID` int NOT NULL DEFAULT '0', + `Published_McuDasboardStatus` char(1) NOT NULL DEFAULT 'N' COMMENT 'N=belum_diupload,P=sedang_upload,Y=berhasil_publish', + `Published_McuDasboardIsActive` char(1) NOT NULL DEFAULT 'Y', + `Published_McuDasboardCreated` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', + `Published_McuDasboardCreatedUserID` int NOT NULL DEFAULT '0', + `Published_McuDasboardLastUpdated` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', + `Published_McuDasboardLastUpdatedUserID` int NOT NULL DEFAULT '0', + PRIMARY KEY (`Published_McuDasboardID`), + KEY `Published_McuDasboardT_OrderHeaderID` (`Published_McuDasboardT_OrderHeaderID`), + KEY `Published_McuDasboardStatus` (`Published_McuDasboardStatus`), + KEY `Published_McuDasboardIsActive` (`Published_McuDasboardIsActive`), + KEY `Published_McuDasboardCreatedUserID` (`Published_McuDasboardCreatedUserID`), + KEY `Published_McuDasboardLastUpdatedUserID` (`Published_McuDasboardLastUpdatedUserID`), + KEY `Published_McuDasboardCreated` (`Published_McuDasboardCreated`), + KEY `Published_McuDasboardLastUpdated` (`Published_McuDasboardLastUpdated`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;