Artificial Intelligence Programming Lab(AIPLab) 討論區

Please login or register.

請輸入帳號, 密碼以及預計登入時間

新聞:

[慶賀]恭喜張清貿醫師升任北榮傳醫科主治醫師-20170201

作者 主題: 作業7-醫院就醫服務(2)  (閱讀 3712 次)

admin

  • 管理員
  • Hero Member
  • *****
  • 文章: 1751
    • 檢視個人資料
作業7-醫院就醫服務(2)
« 於: 七月 09, 2015, 01:06:20 pm »
Step 1: 建立每一門診預約人數的初始值
程式碼: [Select]
--
-- 資料表結構 `reservation`
--

CREATE TABLE IF NOT EXISTS `reservation` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `scheduleID` int(11) NOT NULL,
  `depID` varchar(10) NOT NULL,
  `count` int(11) NOT NULL DEFAULT '0',
  `max` int(11) NOT NULL,
  `visit_date` date NOT NULL,
  `comment` varchar(100) NOT NULL DEFAULT '普通診',
  PRIMARY KEY (`id`),
  KEY `scheduleID` (`scheduleID`,`visit_date`),
  KEY `depID` (`depID`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 ;

INSERT INTO `reservation` (`id`, `scheduleID`, `depID`, `count`, `max`, `visit_date`, `comment`) VALUES
(1, 10, '32700', 0, 10, '2015-07-09', '普通診'),
(2, 11, '32700', 0, 10, '2015-07-09', '普通診'),
(3, 12, '32700', 0, 10, '2015-07-09', '普通診'),
(4, 13, '30200', 0, 10, '2015-07-09', '普通診'),
(5, 14, '30200', 0, 10, '2015-07-09', '普通診'),
(6, 15, '30200', 0, 10, '2015-07-09', '普通診'),
(7, 16, '30200', 0, 10, '2015-07-09', '普通診'),
(8, 17, '30200', 0, 10, '2015-07-09', '普通診'),
(9, 18, '30200', 0, 10, '2015-07-09', '普通診'),
(10, 19, '30200', 0, 10, '2015-07-09', '普通診');

在schedule資料表增加一個欄位max_reservation, 預設值 10

hospital_reserve.php
程式碼: [Select]
<?php
$pdo 
= new PDO('mysql:host=localhost;dbname=hospital;charset=utf8''phpuser''Dnu656rG6w6FLHdf');
$pdo->query("set names utf8");

$today date("Y-m-d");
//清除今天以前的記錄
$sql "DELETE FROM `reservation` WHERE visit_date < '".$today."'";
$pdoStatement $pdo->prepare($sql);
$ret $pdoStatement->execute();

//讀出門診所有醫師的班表
$sql "SELECT id, depID, dname, vday, max_reservation FROM schedule";
$pdoStatement $pdo->prepare($sql);
$ret $pdoStatement->execute();
$rowsSchedule $pdoStatement->fetchAll();

/*
$sql = "INSERT INTO `reservation`(`scheduleID`, `count`, `max`, `visit_date`, `comment`) VALUES (1, 0, 20, '2015-1-2', 'xxxx')";
$pdoStatement = $pdo->prepare($sql);
$ret = $pdoStatement->execute();
*/
$sql "SELECT `visit_date` FROM `reservation` WHERE `scheduleID` = '99999'";
$pdoStatement $pdo->prepare($sql);
$ret $pdoStatement->execute();
$row $pdoStatement->fetch();
$next_date $today;
if (
$row)
 
$next_date $row["visit_date"];
$dtBegin = new DateTime($next_date);

echo 
$next_date;

//時間處理
$dtVisit = new DateTime();
$dtVisit->modify('monday this week');


for (
$w 1$w <= 5$w++)
{
for ($i 1$i <= 7$i++) 
{
if ($dtVisit $dtBegin
{
$dtVisit->modify('+1 day');
continue;
}
$theday $dtVisit->format('Y-m-d');
echo $theday.",";


foreach ($rowsSchedule as $rowD)
{
                       
$todo=false;
if ($i== && $rowD["vday"] == "星期一")
$todo=true;
else if ($i== && $rowD["vday"] == "星期二")
$todo=true;
else if ($i== && $rowD["vday"] == "星期三")
$todo=true;
else if ($i== && $rowD["vday"] == "星期四")
$todo=true;
else if ($i== && $rowD["vday"] == "星期五")
$todo=true;
else if ($i== && $rowD["vday"] == "星期六")
$todo=true;
else if ($i== && $rowD["vday"] == "星期日")
$todo=true;
if ($todo)
{
$scheduleID $rowD["id"];
$max_reservation$rowD["max_reservation"];
$depID$rowD["depID"];
$sql ="INSERT INTO `reservation`(`scheduleID`, `depID`, `max`, `visit_date`) VALUES (".$scheduleID.",".$depID.",".$max_reservation.",'".$theday."')";
$pdoStatement $pdo->prepare($sql);
$ret $pdoStatement->execute();
}
}
$dtVisit->modify('+1 day');
}
}
$theday $dtVisit->format('Y-m-d');
if (
$next_date == $today
{
$sql ="INSERT INTO `reservation`(`scheduleID`, `depID`, `max`, `visit_date`) VALUES ('99999', 'xxxxx', 0, '".$theday."')";
}
else
{
$sql "UPDATE `reservation` SET `visit_date`='".$theday."' WHERE `scheduleID`='99999'";
}
$pdoStatement $pdo->prepare($sql);
$ret $pdoStatement->execute();
echo 
"Finished!";
?>
« 最後編輯時間: 七月 10, 2015, 01:16:56 am 由 admin »
已記錄

admin

  • 管理員
  • Hero Member
  • *****
  • 文章: 1751
    • 檢視個人資料
回覆: 作業6-醫院就醫服務(2)
« 回覆文章 #1 於: 七月 09, 2015, 01:09:47 pm »
網路掛號的頁面
程式碼: [Select]

<h3>內科部與內科系統</h3>

<hr />

<div><a href="../opd-schedule.php?depID=31800">一般內科</a></div>
<div><a href="../opd-schedule.php?depID=30200">心臟科</a></div>

<hr />

<div><a href="../opd-reserve.php?depID=30100">消化腸胃肝膽內科</a></div>
<div><a href="../opd-reserve.php?depID=30500">腎臟科</a></div>
<div><a href="../opd-reserve.php?depID=31100">風濕免疫科</a></div>
<div><a href="../opd-reserve.php?depID=31000">血液腫瘤科</a></div>
<div><a href="../opd-reserve.php?depID=30600">內分泌新陳代謝科</a></div>
<div><a href="../opd-reserve.php?depID=30800">感染科</a></div>
 

將opd-schedule.php改存檔成opd-reserve.php
程式碼: [Select]
<?php
$pdo 
= new PDO('mysql:host=localhost;dbname=hospital;charset=utf8''phpuser''Dnu656rG6w6FLHdf');
$pdo->query("set names utf8");

$depID "31800";
$title "";
$doctors = array (
    
"w1"  => array("morning" => """afternoon" => """night" => ""),
    
"w2"  => array("morning" => """afternoon" => """night" => ""),
"w3"  => array("morning" => """afternoon" => """night" => ""),
    
"w4"  => array("morning" => """afternoon" => """night" => ""),
"w5"  => array("morning" => """afternoon" => """night" => ""),
    
"w6"  => array("morning" => """afternoon" => """night" => ""),
"w7"  => array("morning" => """afternoon" => """night" => "")
);
if (isset(
$_GET["depID"])) 
    
$depID $_GET["depID"];

    
$sql "SELECT departName FROM opd WHERE departID ='".$depID."'";
$pdoStatement $pdo->prepare($sql);
$ret $pdoStatement->execute();
$row $pdoStatement->fetch();
if (!empty($row["departName"]))//$row["departName"]=$row[0]
$title=$row["departName"];

$sql "SELECT id, dname, vsection, vday FROM schedule WHERE depID ='".$depID."'";
$pdoStatement $pdo->prepare($sql);
$ret $pdoStatement->execute();
$rowsSchedule $pdoStatement->fetchAll();
$array_dname = array();
foreach ($rowsSchedule as $rowS)
{
$array_dname[$rowS["id"]] = $rowS["dname"];
}

$sql "SELECT `id`, `scheduleID`, `depID`, `count`, `max`, `visit_date`, `comment` FROM `reservation` WHERE `depID` ='".$depID."'";
$pdoStatement $pdo->prepare($sql);
$ret $pdoStatement->execute();
$rowsReservation $pdoStatement->fetchAll();
$array_count = array();
$array_max = array();
foreach ($rowsReservation as $rowR)
{
$array_count[$rowR["scheduleID"]][$rowR["visit_date"]] = $rowR["count"];
$array_max[$rowR["scheduleID"]][$rowR["visit_date"]] = $rowR["max"];
$array_reserveID[$rowR["scheduleID"]][$rowR["visit_date"]] = $rowR["id"];
}

//
//時間處理
$dtBegin = new DateTime();
$dtVisit = new DateTime();
$dtVisit->modify('monday this week');
$w=array();
for (
$i 1$i <= 7$i++) 
{
$enable true;
if ($dtVisit $dtBegin
$enable false;

$theday $dtVisit->format('Y-m-d');
$w[$i]=$theday ;
foreach ($rowsSchedule as $rowD)
{
$sid $rowD["id"];
if ($i==&& $rowD["vday"] == "星期一")
{
if ($rowD["vsection"] == "上午")
$doctors["w1"]["morning"] .=markup($enable$sid$theday$array_dname$array_count$array_max$array_reserveID);
else if ($rowD["vsection"] == "下午")
$doctors["w1"]["afternoon"] .=markup($enable$sid$theday$array_dname$array_count$array_max$array_reserveID);
else if ($rowD["vsection"] == "晚上")
$doctors["w1"]["night"] .=markup($enable$sid$theday$array_dname$array_count$array_max$array_reserveID);
}
else if ($i==&& $rowD["vday"] == "星期二")
{
if ($rowD["vsection"] == "上午")
$doctors["w2"]["morning"] .=markup($enable$sid$theday$array_dname$array_count$array_max$array_reserveID);
else if ($rowD["vsection"] == "下午")
$doctors["w2"]["afternoon"] .=markup($enable$sid$theday$array_dname$array_count$array_max$array_reserveID);
else if ($rowD["vsection"] == "晚上")
$doctors["w2"]["night"] .=markup($enable$sid$theday$array_dname$array_count$array_max$array_reserveID);
}
else if ($i==&& $rowD["vday"] == "星期三")
{
if ($rowD["vsection"] == "上午")
$doctors["w3"]["morning"] .=markup($enable$sid$theday$array_dname$array_count$array_max$array_reserveID);
else if ($rowD["vsection"] == "下午")
$doctors["w3"]["afternoon"] .=markup($enable$sid$theday$array_dname$array_count$array_max$array_reserveID);
else if ($rowD["vsection"] == "晚上")
$doctors["w3"]["night"] .=markup($enable$sid$theday$array_dname$array_count$array_max$array_reserveID);
}
else if ($i==&& $rowD["vday"] == "星期四")
{
if ($rowD["vsection"] == "上午")
$doctors["w4"]["morning"] .=markup($enable$sid$theday$array_dname$array_count$array_max$array_reserveID);
else if ($rowD["vsection"] == "下午")
$doctors["w4"]["afternoon"] .=markup($enable$sid$theday$array_dname$array_count$array_max$array_reserveID);
else if ($rowD["vsection"] == "晚上")
$doctors["w4"]["night"] .=markup($enable$sid$theday$array_dname$array_count$array_max$array_reserveID);
}
else if ($i==&& $rowD["vday"] == "星期五")
{
if ($rowD["vsection"] == "上午")
$doctors["w5"]["morning"] .=markup($enable$sid$theday$array_dname$array_count$array_max$array_reserveID);
else if ($rowD["vsection"] == "下午")
$doctors["w5"]["afternoon"] .=markup($enable$sid$theday$array_dname$array_count$array_max$array_reserveID);
else if ($rowD["vsection"] == "晚上")
$doctors["w5"]["night"] .=markup($enable$sid$theday$array_dname$array_count$array_max$array_reserveID);
}
else if ($i==&& $rowD["vday"] == "星期六")
{
if ($rowD["vsection"] == "上午")
$doctors["w6"]["morning"] .=markup($enable$sid$theday$array_dname$array_count$array_max$array_reserveID);
else if ($rowD["vsection"] == "下午")
$doctors["w6"]["afternoon"] .=markup($enable$sid$theday$array_dname$array_count$array_max$array_reserveID);
else if ($rowD["vsection"] == "晚上")
$doctors["w6"]["night"] .=markup($enable$sid$theday$array_dname$array_count$array_max$array_reserveID);
}
else if ($i==&& $rowD["vday"] == "星期日")
{
if ($rowD["vsection"] == "上午")
$doctors["w7"]["morning"] .=markup($enable$sid$theday$array_dname$array_count$array_max$array_reserveID);
else if ($rowD["vsection"] == "下午")
$doctors["w7"]["afternoon"] .=markup($enable$sid$theday$array_dname$array_count$array_max$array_reserveID);
else if ($rowD["vsection"] == "晚上")
$doctors["w7"]["night"] .=markup($enable$sid$theday$array_dname$array_count$array_max$array_reserveID);
}
}

$dtVisit->modify('+1 day');
}


function 
markup($enable$sid$date$array_dname$array_count$array_max$array_reserveID)//$sid is the abbreviation of $scheduleID
{
$dname$array_dname["$sid"];
if ($enable)
{
$count $array_count["$sid"]["$date"];
$max $array_max["$sid"]["$date"];
$rid $array_reserveID["$sid"]["$date"];
$a='<a href="opd-reserve-form.php?sid='.$sid.'&rid='.$rid.'">'.$dname.'</a>(預約:'.$count.'/'.$max.')<br>';
}
else
$a=$dname.'()<br>';
return $a;
}
?>

« 最後編輯時間: 七月 10, 2015, 01:15:07 am 由 admin »
已記錄

admin

  • 管理員
  • Hero Member
  • *****
  • 文章: 1751
    • 檢視個人資料
回覆: 作業6-醫院就醫服務(2)
« 回覆文章 #2 於: 七月 10, 2015, 01:16:24 am »
門診表和門診預約的差別--->日期
程式碼: [Select]
<tbody><tr> <td class="firstth"></td>
<th class="outertop"><center>星期一(<?php echo $w[1?>)</center></th><th class="outertop"><center>星期二(<?php echo $w[2?>)</center></th><th class="outertop"><center>星期三(<?php echo $w[3?>)</center></th><th class="outertop"><center>星期四(<?php echo $w[4?>)</center></th><th class="outertop"><center>星期五(<?php echo $w[5?>)</center></th><th class="outertop"><center>星期六(<?php echo $w[6?>)</center></th><th class="outertop"><center>星期日(<?php echo $w[7?>)</center></th>
已記錄
 

SimplePortal Classic 2.0.5