目錄
- 一、摘要
- 1.1 項目介紹
- 1.2 項目錄屏
- 二、功能模塊
- 2.1 功能性需求
- 2.1.1 數據中心模塊
- 2.1.2 科室醫生檔案模塊
- 2.1.3 預約掛號模塊
- 2.1.4 醫院時政模塊
- 2.2 可行性分析
- 2.2.1 可靠性
- 2.2.2 易用性
- 2.2.3 維護性
- 三、數據庫設計
- 3.1 用戶表
- 3.2 科室檔案表
- 3.3 醫生檔案表
- 3.4 醫生放號表
- 3.5 患者掛號預約表
- 3.6 醫院時政表
- 3.7 醫院留言表
- 四、系統展示
- 五、核心代碼
- 5.1 查詢醫生
- 5.2 醫生放號
- 5.3 置頂醫院新聞
- 5.4 查詢我的掛號數據
- 5.5 預約掛號
- 六、免責說明
一、摘要
1.1 項目介紹
基于JAVA+Vue+SpringBoot+MySQL 的醫院門診預約掛號系統,包含了科室管理模塊、醫生管理模塊、預約掛號模塊、醫院新聞模塊和留言板模塊,還包含系統自帶的用戶管理、部門管理、角色管理、菜單管理、日志管理、數據字典管理、文件管理、圖表展示等基礎模塊,醫院門診預約掛號系統基于角色的訪問控制,給患者、醫院管理員使用,可將權限精確到按鈕級別,您可以自定義角色并分配權限,系統適合設計精確的權限約束需求。
1.2 項目錄屏
二、功能模塊
為了能讓開發出來的預約掛號真正投入使用,所以需要對系統的需求加以分析設計,以下分別對功能性需求和可行性兩方面分別對預約掛號進行需求分析。
2.1 功能性需求
本文設計的預約掛號系統的包括了系統數據中心模塊,用來存放管理系統通用的模塊,另外分別設計了科室/醫生檔案、預約掛號、醫院時政這三大模塊,用于存放系統的核心業務邏輯。
2.1.1 數據中心模塊
數據中心模塊包含了對醫院門診預約掛號系統的基礎模塊,比如管理誰可以登陸這套系統,記錄這些人登陸系統做了什么,不同的人擁有不同權限的管理。
2.1.2 科室醫生檔案模塊
科室醫生檔案模塊是對醫院科室、醫生的信息進行管理,其中包括醫院所有科室、及科室下醫生的檔案,包含了科室名稱、科室代碼,醫生姓名、醫生年齡、醫生學歷學位、開始工作時間、畢業院校、職稱、專業、醫生簡介等,可以通過此模塊對科室、醫生進行添加、編輯更新、刪除、查詢操作。
2.1.3 預約掛號模塊
醫院門診預約掛號管理系統錄入了各大醫院醫生的放號信息,包括不同職稱醫生的掛號費用,管理員在這個模塊進行掛號費用的設置和醫生的排班。
2.1.4 醫院時政模塊
醫院時政模塊是醫院的門面,模塊上放置了醫院發布的重要通知、醫生坐診停診信息和就診患者的留言信息。患者可以查詢管理員發布的時政新聞,也可以對醫院進行評價留言,做到和醫院的數據交互。
2.2 可行性分析
2.2.1 可靠性
醫院門診預約掛號的數據真實性非常重要。所以為了保證預約掛號系統的數據準確,要定時清除系統的冗余數據,以便于對掛號數據進行數據分析。
2.2.2 易用性
易用性是任何管理系統必須要遵循的原則,對于預約掛號系統也是如此。系統必須要易于就診患者使用,因為系統的開發就是為了簡化患者的就醫流程,不能因為系統的出現而讓就醫流程更復雜。
2.2.3 維護性
醫院門診要有自我保護機制,當收到黑客非法攻擊是,需要擁有拋出異常的機制,不能陷入無限循環判斷而讓系統崩潰,造成患者掛號失敗的情況。
三、數據庫設計
3.1 用戶表
3.2 科室檔案表
3.3 醫生檔案表
3.4 醫生放號表
3.5 患者掛號預約表
3.6 醫院時政表
3.7 醫院留言表
四、系統展示
五、核心代碼
5.1 查詢醫生
@RequestMapping(value = "/getByPage", method = RequestMethod.GET)
@ApiOperation(value = "查詢醫生")
public Result<IPage<Doctor>> getByPage(@ModelAttribute Doctor doctor,@ModelAttribute PageVo page){QueryWrapper<Doctor> qw = new QueryWrapper<>();if(!ZwzNullUtils.isNull(doctor.getDoctorName())) {qw.like("doctor_name",doctor.getDoctorName());}if(!ZwzNullUtils.isNull(doctor.getPostLevel())) {qw.eq("post_level",doctor.getPostLevel());}if(!ZwzNullUtils.isNull(doctor.getSubjectId())) {qw.eq("subject_id",doctor.getSubjectId());}if(!ZwzNullUtils.isNull(doctor.getNoeDate()) && Objects.equals(doctor.getNoeDate(),"是")) {qw.inSql("id","SELECT id FROM t_doctor WHERE id IN(SELECT DISTINCT doctor_id FROM t_doctor_scheduling WHERE DATE = '" + DateUtil.today() + "')");}return new ResultUtil<IPage<Doctor>>().setData(iDoctorService.page(PageUtil.initMpPage(page),qw));
}
5.2 醫生放號
@RequestMapping(value = "/addNumber", method = RequestMethod.POST)
@ApiOperation(value = "醫生放號")
public Result<Object> addNumber(@RequestParam String doctorId,@RequestParam String date,@RequestParam int step,@RequestParam int number){Doctor doctor = iDoctorService.getById(doctorId);if(doctor == null) {return ResultUtil.error("醫生不存在");}if(number < 1) {return ResultUtil.error("放號數必須大于0");}for(int i = 1 ; i <= number; i ++) {DoctorScheduling ds = new DoctorScheduling();ds.setDoctorId(doctor.getId());ds.setDoctorName(doctor.getDoctorName());ds.setNumber(i + "");ds.setStep(step + "");ds.setDate(date);ds.setOrderFlag(0);iDoctorSchedulingService.saveOrUpdate(ds);}return ResultUtil.success("放號成功");
}
5.3 置頂醫院新聞
@RequestMapping(value = "/set_top_by_id", method = RequestMethod.POST)
@ApiOperation(value = "置頂醫院新聞")
public Result<Boolean> setTopById(@RequestParam String id){HospitalNews appDynamicNew=iHospitalNewsService.getById(id);if(appDynamicNew==null) {return ResultUtil.error("該動態信息不存在");}if(appDynamicNew.getIsTop().equals("yes")) {appDynamicNew.setIsTop("no");}else {appDynamicNew.setIsTop("yes");}if(!iHospitalNewsService.saveOrUpdate(appDynamicNew)) {return ResultUtil.error("設置失敗");}return ResultUtil.success("設置成功");
}
5.4 查詢我的掛號數據
@RequestMapping(value = "/getMyOrderList", method = RequestMethod.POST)
@ApiOperation(value = "查詢我的掛號")
public Result<IPage<HospitalOrder>> getMyOrderList(@ModelAttribute HospitalOrder order,@ModelAttribute PageVo page){User currUser = securityUtil.getCurrUser();QueryWrapper<HospitalOrder> qw = new QueryWrapper<>();qw.eq("user_id",currUser.getId());qw.orderByDesc("create_time");if(!ZwzNullUtils.isNull(order.getDateTime())) {qw.eq("date_time",order.getDateTime());}if(!ZwzNullUtils.isNull(order.getDoctorName())) {qw.like("doctor_name",order.getDoctorName());}return new ResultUtil<IPage<HospitalOrder>>().setData(iHospitalOrderService.page(PageUtil.initMpPage(page),qw));
}
5.5 預約掛號
@RequestMapping(value = "/addOrder", method = RequestMethod.POST)
@ApiOperation(value = "新增掛號")
public Result<Object> addOrder(@RequestParam String orderId){User currUser = securityUtil.getCurrUser();DoctorScheduling ds = iDoctorSchedulingService.getById(orderId);if(ds == null) {return ResultUtil.error("號源不存在");}if(ds.getOrderFlag() > 0) {return ResultUtil.error("您手慢拉,該號已被別人預約!");}Doctor doctor = iDoctorService.getById(ds.getDoctorId());if(doctor == null) {return ResultUtil.error("醫生不存在");}ds.setOrderFlag(1);iDoctorSchedulingService.saveOrUpdate(ds);HospitalOrder ho = new HospitalOrder();ho.setUserId(currUser.getId());ho.setUserName(currUser.getNickname());ho.setOrderId(ds.getId());ho.setNumber(ds.getNumber());ho.setStep(ds.getStep());ho.setDateTime(ds.getDate());ho.setDoctorId(ds.getDoctorId());ho.setDoctorName(ds.getDoctorName());ho.setMoneyData(doctor.getOrderMoney());iHospitalOrderService.saveOrUpdate(ho);return ResultUtil.success("預約成功!");
}
六、免責說明
- 本項目僅供個人學習使用,商用授權請聯系博主,否則后果自負。
- 博主擁有本軟件構建后的應用系統全部內容所有權及獨立的知識產權,擁有最終解釋權。
- 如有問題,歡迎在倉庫 Issue 留言,看到后會第一時間回復,相關意見會酌情考慮,但沒有一定被采納的承諾或保證。
下載本系統代碼或使用本系統的用戶,必須同意以下內容,否則請勿下載!
- 出于自愿而使用/開發本軟件,了解使用本軟件的風險,且同意自己承擔使用本軟件的風險。
- 利用本軟件構建的網站的任何信息內容以及導致的任何版權糾紛和法律爭議及后果和博主無關,博主對此不承擔任何責任。
- 在任何情況下,對于因使用或無法使用本軟件而導致的任何難以合理預估的損失(包括但不僅限于商業利潤損失、業務中斷與業務信息丟失),博主概不承擔任何責任。
- 必須了解使用本軟件的風險,博主不承諾提供一對一的技術支持、使用擔保,也不承擔任何因本軟件而產生的難以預料的問題的相關責任。