select("*, patvisit.CreateDate as PVCreateDate, patdiag.CreateDate as PDCreateDate, patvisitadt.CreateDate as PVACreateDate") ->join('patdiag', 'patdiag.InternalPVID=patvisit.InternalPVID and patdiag.DelDate is null', 'left') ->join('patvisitadt', 'patvisitadt.InternalPVID=patvisit.InternalPVID', 'left') ->where('patvisit.PVID',$PVID)->findAll(); return $rows; } public function showByPatient($InternalPID) { $rows = $this->select("*, patvisit.CreateDate as PVCreateDate, patdiag.CreateDate as PDCreateDate, patvisitadt.CreateDate as PVACreateDate") ->join('patdiag', 'patdiag.InternalPVID=patvisit.InternalPVID and patdiag.DelDate is null', 'left') ->join('patvisitadt', 'patvisitadt.InternalPVID=patvisit.InternalPVID', 'left') ->join('location', 'location.LocationID=patvisitadt.LocationID', 'left') ->where('patvisit.InternalPID',$InternalPID)->findAll(); return $rows; } public function createPatVisit($input) { $db = $this->db; $modelPD = new PatDiagModel(); $modelPVA = new PatVisitADTModel(); $db->transBegin(); try{ if (!isset($input['PVID']) || $input['PVID']=='') { $modelCounter = new CounterModel(); $input['PVID'] = $this->visnum_prefix .$modelCounter->use(2); } $InternalPVID = $this->insert($input, true); if($InternalPVID === false) { throw new \Exception("Failed to insert main PatVisit record."); } if( !empty($input['PatDiag']) && ( !empty($input['PatDiag']['DiagCode']) || !empty($input['PatDiag']['Diagnosis']) ) ) { $input['PatDiag']['InternalPVID'] = $InternalPVID; $tmp = $modelPD->insert($input['PatDiag']); if ($tmp === false) { throw new \Exception("Failed to insert PatDiag record."); } } if( !empty($input['PatVisitADT']) ) { $input['PatVisitADT']['InternalPVID'] = $InternalPVID; $tmp = $modelPVA->insert($input['PatVisitADT']); if ($tmp === false) { throw new \Exception("Failed to insert PatVisitADT record."); } } if ($db->transStatus() === FALSE) { $db->transRollback(); return false; } else { $db->transCommit(); $data = [ "PVID" => $input['PVID'], "InternalPVID" => $InternalPVID ]; return $data; } } catch (\Exception $e) { $db->transRollback(); throw $e; } } public function updatePatVisit($input) { $InternalPVID = $input['InternalPVID']; $modelPD = new PatDiagModel(); $modelPVA = new PatVisitADTModel(); $db = $this->db; $db->transBegin(); try{ $this->where('InternalPVID',$InternalPVID)->set($input)->update(); // patdiag $exist = $modelPD->where('InternalPVID',$InternalPVID)->find(); $tmp = ''; if($exist) { if( !empty($input['PatDiag']) && ( !empty($input['PatDiag']['DiagCode']) || !empty($input['PatDiag']['Diagnosis']) ) ) { $tmp = $modelPD->where('InternalPVID',$InternalPVID)->set($input['PatDiag'])->update(); } else { $tmp = $modelPD->delete($InternalPVID); } } else { if( !empty($input['PatDiag']) && ( !empty($input['PatDiag']['DiagCode']) || !empty($input['PatDiag']['Diagnosis']) ) ) { $input['PatDiag']['InternalPVID'] = $InternalPVID; $tmp = $modelPD->insert($input['PatDiag']); } } if ($tmp === false) { $error = $db->error(); throw new \Exception("Failed to update PatDiag record. ". $error['message']); } // patvisitadt $exist = $modelPVA->where('InternalPVID',$InternalPVID)->find(); if($exist) { if(!empty($input['PatVisitADT'])) { $tmp = $modelPVA->where('InternalPVID',$InternalPVID)->set($input['PatVisitADT'])->update(); } else { $tmp = $modelPVA->where('InternalPVID',$InternalPVID)->delete(); } } else { if(!empty($input['PatVisitADT'])) { $input['PatVisitADT']['InternalPVID'] = $InternalPVID; $tmp = $modelPVA->insert($input['PatVisitADT']); } } if ($tmp === false) { $error = $db->error(); throw new \Exception("Failed to update PatVisitADT record. ". $error['message']); } if ($db->transStatus() === FALSE) { $db->transRollback(); return false; } else { $db->transCommit(); $data = [ "PVID" => $input['PVID'], "InternalPVID" => $InternalPVID ]; return $data; } } catch (\Exception $e) { $this->db->transRollback(); throw $e; } } }