Python大作業之就診卡管理資訊系統[原創]
項目位址:
- 網頁連結:http://patientcard.dreamtownapi.com/
- 後端位址:http://django.dreamtownapi.com
- 前端Gitee開源位址:https://gitee.com/liuhai038/patient-card_-vue
- 後端Gitee開源位址:https://gitee.com/liuhai038/patient-card_-django
通過本次作業,自查自學新架構知識,完成此套系統。
作業要求:
(1)開卡功能。設定姓名、年齡、電話、性别等字段。(20分)
(2)挂号功能。增加就診科室和預約就診時間兩個資訊。(10分)
(3)就診功能。增加醫生建議資訊。(20分)
(4)查詢功能。查詢看病記錄。(10分)
(5)銷卡功能。(10分)
(6)退出系統。(10分)
(7)将就診資訊寫入csv表格或者資料庫。(20分)
資料庫設計:
- 設計思路:每個使用者持有一張卡,一張卡對應多個就診記錄。
- 資料庫表:就診卡表(card)、就診記錄表(registration)
- 資料表關系(一對多):card 1 v N registration
- 資料表結構:
Python大作業之就診卡管理資訊系統[原創]Python大作業之就診卡管理資訊系統[原創] Python大作業之就診卡管理資訊系統[原創]Python大作業之就診卡管理資訊系統[原創] - 巧妙之處:設定deletetime字段,删除記錄時并不直接delete實體删除,而是通過update這個deletetime字段,指派為目前删除時間,即邏輯删除。這樣當deletetime字段為null時,則記錄存在。反之若不為null,則代表記錄已經删除,可拓展作為資源回收筒。
架構:
- 前端:使用HBuilder編輯器,采用vue架構知識開發uniapp應用。
- 後端:使用Pycharm編輯器,采用Django架構之時開發web應用。
學到的知識:
- 學習如何搭建Django項目,接口設計,路由管理,跨域配置。
- 資料庫設計,使用Django model的面向資料庫ORM對象程式設計。
- 學會如何使用分布式任務架構:function-scheduling-distributed-framework
- 學會如何将Django項目部署到伺服器上:參考教程1、參考教程2
- 鞏固前端vue相關知識:uviewui架構的使用,父子元件傳參等
- 發現新的素材庫:17素材網 和 素材解析網
遇到的問題:
- 跨域問題:由于本項目前端向後端擷取敏感使用者資料時,需要傳遞使用者資訊參數,為了友善,通過vue攔截請求,并設定請求header,将使用者資訊設定到header中,供後端擷取。但是後端Django架構預設是對header是拒絕的,需要加入CORS跨域驗證機制。
- 時區問題:在插入資料時,本地用時區UTC是正常的,部署到伺服器上的時候是小8小時的,導緻就診時間出錯。在生産環境上把UTC改成Asia/Shanghai後恢複正常。
- 分布式任務排程問題:對于第一次使用function-scheduling-distributed-framework子產品,有比較多的疑點和問題,好在文檔是中文的,同時自己調試和測試比較多,慢慢摸透了,一些坑也解決了。
項目邏輯:
- 使用者開卡(注冊)、使用者登入
- 挂号 - 添加挂号記錄
- 選擇就診科室
- 服務端将自動随機安排一個就診時間,一般在5~10秒後。
- 頁面開始倒計時,倒計時結束,服務端随機為該記錄添加醫生和醫囑,完成就診。
- 自動重新整理頁面,點選就診記錄,檢視就診醫生和醫囑等資訊。
- 銷卡[可選],即删除賬号,但不完全删除,仍存在資料庫,無法登入。
項目截圖: