在医院管理中,准确预测和规划医院的容量是至关重要的。这不仅涉及到床位的分配,还涉及到资源的合理利用,以确保在任何时候都能为患者提供必要的医疗服务。为了帮助医院管理者更好地进行这一工作,开发了一套基于R语言的模拟系统。该系统允许用户通过一个简单的用户界面输入参数,然后自动运行模拟,生成医院容量规划的预测结果。
用户界面的设计考虑到了非程序员的需求,因此采用了一个简单的表单来收集用户输入的参数。用户只需要在相应的输入框中填写床位数量、重复次数、周期和到达间隔时间等参数,然后提交表单即可。表单提交后,这些参数将通过GET方法传递给PHP页面,由PHP页面调用R脚本进行模拟计算。
以下是用于收集用户输入的HTML表单代码示例:
<form class="form-horizontal" action="runr.php" method="get">
<fieldset>
<legend>输入模拟参数</legend>
<div class="form-group">
<label class="col-md-4 control-label" for="nbeds">床位数量:</label>
<div class="col-md-4">
<input id="nbeds" name="nbeds" type="text" placeholder="床位数量" class="form-control input-md" required="">
</div>
</div>
<div class="form-group">
<label class="col-md-4 control-label" for="myrep">重复次数:</label>
<div class="col-md-4">
<input id="myrep" name="myrep" type="text" placeholder="重复次数" class="form-control input-md" required="">
</div>
</div>
<div class="form-group">
<label class="col-md-4 control-label" for="period">周期:</label>
<div class="col-md-4">
<input id="period" name="period" type="text" placeholder="周期(天)" class="form-control input-md" required="">
</div>
</div>
<div class="form-group">
<label class="col-md-4 control-label" for="myIAT">到达间隔时间:</label>
<div class="col-md-4">
<input id="myIAT" name="myIAT" type="text" placeholder="到达间隔时间(天)" class="form-control input-md" required="">
</div>
</div>
<div class="form-group">
<label class="col-md-4 control-label" for="submit"></label>
<div class="col-md-4">
<input type="submit" class="btn btn-info" value="运行模拟">
</div>
</div>
</fieldset>
</form>
一旦表单被提交,用户将被重定向到PHP页面,该页面将执行以下四个功能:
为了在Ubuntu服务器上运行R脚本,需要对R脚本进行一些调整。首先,需要改变工作目录,然后使用commandArgs()
函数扫描R脚本调用时提供的参数。接下来,将参数存储在变量中。
setwd('/var/www/html/mycmd/output/')
args <- commandArgs(TRUE)
## 输入模拟参数
nbeds <- as.integer(args[1]) ## 床位数量
myrep <- as.integer(args[2]) ## 重复次数
period <- as.integer(args[3]) ## 运行周期
myIAT <- as.numeric(args[4]) ## 到达间隔时间(天)
为了将图表导出到PHP扫描的文件夹中,并在网页上显示,需要修改R脚本,以便将图表导出到指定的文件夹中。
MyDataPlot <- grid.arrange(p1, p2, p3, p4, ncol=2)
png(filename="/var/www/html/mycmd/output/output.png", width=800, height=600)
plot(MyDataPlot)
dev.off()
在Ubuntu上安装R语言和必要的包:
sudo apt-get update
sudo apt-get -y install r-base
install.packages("simmer")
install.packages("ggplot2")
install.packages("gridExtra")
install.packages("dplyr")
install.packages("tidyr")
这些设置需要大量优化以获得最佳性能,在这里展示的是一个简单的调用R脚本的方法。如果模拟重复次数(myrep)大于1000,需要特别注意资源消耗。