# Clinic Management System
# 會議記錄
## 第1次專案會議
> 時間: 2019/9/25 16:30 ~ 17:30
> 地點: 宏裕科技大樓 1623 室
* 題意
* 我們資料要從FHIR取得
* 去實現新的頁面
* 以後開會時間時間
* 一: 13:00~
* 五: 整天
* 暫停開會時間
* 10/19 POSD考試
* 討論內容
* 需求
* 分工
* 5後端,2個兼職前端
* 後端前端擔當
* 前端 蕭文全
* 後端 劉孝忠
* 下次討論
* 時間: 9/30 13:00
* 主題:
* 需求
* 分工 (前後端)
* 寫文件
* 前置作業:
* 看FHIR
---
## 第2次專案會議
> 時間: 2019/9/30-13:30 ~ 16:30
> 地點: 宏裕科技大樓 1623 室
* Systems
* 身份管理系統
* 登入系統
* 病歷儲存系統(Keep Track of Patient Electronic Health Record History)
* 掛號系統
* 看診進度
* 病人管理系統
* 財務系統
* 藥品管理系統
* 公告系統
* Pages
* 首頁
* 看診進度
* ...
* 登入頁面
* ==<font color="red">管理頁面</font>==
* ==身份管理==
* ==掛號管理==
* ==病人管理==
* ==病歷管理==
* ==財務管理==
* ==藥品管理==
* 公告管理
* 首頁管理
## 第3次專案會議
> 時間: 2019/10/2 16:45 ~ 18:45
> 地點: 宏裕科技大樓 1623 室
* Systems
* 身份管理系統
* Admin
* Practitioner
* Employee
* 登入系統
* 病歷儲存系統(Keep Track of Patient Electronic Health Record History)
* Patient
* Problem
* Medication
* CarePlan
* 掛號系統
* 看診進度
* 員工掛號
* 普通病患
* 沒有在本診所看診過 現場填寫
* 有的話 輸入身份證 出生年月日
* 病人管理系統
* Patient
* 建立,修改,刪除病人資料
* 財務系統
* Invoice
* 藥品管理系統
* Medication
* 建立,修改,刪除藥品資料
* 網頁管理
* 新增,修改網頁資料
* Pages
* 首頁
* 看診進度
* ...
* 登入頁面
* ==<font color="red">管理頁面</font>==
* ==身份管理==
* ==掛號管理==
* ==病人管理==
* ==病歷管理==
* ==財務管理==
* ==藥品管理==
* 首頁管理
## 第4次專案會議
> 時間: 2019/10/2 16:45 ~ 18:45
> 地點: 宏裕科技大樓 1623 室
* Systems
* 章節分工
* 蕭文全:六 八
* 劉孝忠:五 七
* 古兆瑋:三
* 黃俊凱:四、WBS
* 陳冠穎:二
## 第5次專案會議
> datetime: 2019/10/17 13:30 ~ 17:30
* 系統需求規格書(Software Requirements Specification) 討論
* 控制文件: 問老師該做什麼
* 1.2.3 符號為功能的簡稱
* 2 功能性需求用F代表,非功能性需求用N代表
* 我們自己做,功能性需求要寫比較多
* 追溯矩陣,那些東西需要寫在這個介面上
- 子系統
* 身份管理 & 登入子系統(User Identity Management and Login Subsystem) - UIMLS
* 病歷儲存子系統(Patient Electronic Health Record Subsystem) - PEHRS
* 病人管理子系統(Patient Infomation Management Subsystem) - PIMS
* 掛號子系統(Online Registration Subsystem) - ORS
* 藥品管理子系統(Medicaction Management Subsystem) - MMS
* 財務子系統(Financial Subsystem) - FS
* 網頁管理(Website Management Subsystem) - WMS
| 子系統名稱 | 文件撰寫負責人|
|---|---|
|身份管理 & 登入子系統(UIMLS)|古兆瑋 |
|病歷儲存子系統(PEHRS) |劉孝忠 |
|病人管理子系統(PIMS) |陳冠穎 |
|掛號子系統(ORS) |蕭文全 |
|藥品管理子系統(MMS) & 財務子系統(FS)|黃俊凱 |
|網頁管理(WMS) |一起做 |
- 分工
- 文件可用子系統分
- 開發一起開發一個子系統
- 工作
- (10/22)完成各子系統文件
- (10/22)下次討論
- (10/27)UI開始開發
## 第6次專案會議
> 時間: 2019/10/23 17:00 ~
> 地點: 宏裕科技大樓 1623 室
### 子系統SRS review
- 統一的項目
- 安裝需求
- 環境需求
- 設計限制
- 可信度需求,備份 恢復 log
- 病歷
- 操作概念潤稿
- 身分管理 & 登入子系統
- N-13改成單元測試
- N-15刪除
- 操作概念需修正(只有在此子系統能做的事)
- 掛號
- 圖新增admin
- 新增查詢病人掛號的號碼
- 藥品管理
- 一般使用者的相關刪除
- 病人管理
- 可信度需求要跟其他一樣
### 下次開會
- 時間: 10/28 14:00
- 主要子系統的介面:病例 病患 藥品 身分管理
- 討論項目
- 報告的人
- 簡報如何做
## 前端訓練計畫(序)
> 時間: 2019/10/27 13:30 ~ 16:30
> 地點: Skype 語音通話
> 講師: 劉孝忠
> 參與人員: 劉孝忠、蕭文全、黃俊凱、陳冠穎、古兆瑋
### Vue.js
https://vuetifyjs.com
https://materialdesignicons.com
https://github.com/creativetimofficial/vuetify-material-dashboard
### 分工
- 首頁
- 掛號管理
- 後台
- 身份管理
- 病人管理
- 病歷管理
- 財務管理
- 藥品管理
#### 全部頁面
- 形象官網(3)
- 首頁
- 掛號進度
- 立即掛號頁面
- 根據網址進入login介面(1) - 孝忠
- 後台
- 首頁(1) - 孝忠
- 病歷儲存系統(2)
- 新增病例(包括修改)
- 顯示病例(包括刪除)
- 掛號系統(2)
- 幫病患掛號(與形象官網立即掛號頁面相同)
- 顯示掛號病人資訊
- 病人管理系統(2)
- 新增病人(包括修改)
- 顯示病人(包括刪除)
- 財務系統(2)
- 新增收據(無修改)
- 顯示收據(無刪除)
- 藥品管理(2)
- 新增藥品(包括修改)
- 顯示藥品(包括刪除)
- 後台 - 文全
- 形象官網 - 俊凱
## 第7次專案會議
> 時間: 2019/10/28 15:20 ~
> 地點: 宏裕科技大樓 1623 室
### SRS review
- 下拉式選單:
- [x]顯示及新增
- [ ]只有顯示,新增dialog
- 藥品資訊,藥品數量刪除。
### 討論事項
- 圖(第二章及WMS)、系統架構圖彙整:黃俊凱
- Glossary,referance :蕭文全
- Vue.js
- Flask
- MongoDB
- HAPI FHIR Server
- GraphQL
- Docker
- Unit Test
- 文件prototyping圖(報告完)
- 簡報檔案製作 :古兆瑋
- 
- 上台報告
- 文件
- 1. ~ 4.:陳冠穎
- 5.6. :劉孝忠
- prototyping :蕭文全
- 備註:
- 功能名稱 N-XX 標上簡報
## 第8次專案會議
> 時間: 2019/10/30 16:30 ~ 18:25
> 地點: 宏裕科技大樓 1623 室
### 討論項目
- 定義每個表格需要的項目(後台)
- FHIR需要用到哪些項目
- admin的角色定位
- 超級帳號
- UI確認
- 主畫面
- 左上角改為: [診所名稱]
- 右上角全改為中文
- 後台
- 真的假資料
- CMS用全名
- (下次討論)製作use case>
>需求不用use case列的話不用來了,沒人知道需求是什麼
- 非功能性是否做
- stake holder
- 財務是否要做
- 是
- 病例是否可以更新
- 目前先保留功能
### 定義每個表格需要的項目
#### patient
必要:身分證 姓 名 生日
詳細資訊:
GET 200 all: http://localhost:8080/hapi-fhir-jpaserver/fhir/Patient?_getpagesoffset={int}&_count={int}
GET 200 patient_id: http://localhost:8080/hapi-fhir-jpaserver/fhir/Patient/{id}
GET 200 query patient: http://localhost:8080/hapi-fhir-jpaserver/fhir/Patient?identifier=H123456789
POST 201 新增(need data) create : POST http://localhost:8080/hapi-fhir-jpaserver/fhir/Patient
DELETE 200 刪除 : http://localhost:8080/hapi-fhir-jpaserver/fhir/Patient/{id}
PUT 200 更新(need data) : http://localhost:8080/hapi-fhir-jpaserver/fhir/Patient/{id}
```json
{
"resourceType": "Patient",
"identifier": [
{
"value": "H123456789" // 身分證 required type:string
}
],
"name": {
"family": "姓氏", // required type:string
"given": "名字" // required type:string
},
"telecom": [
{
"system": "phone",// type:code
"value": "電話號碼" // required type:string limit:20
}
],
"gender": "male", // required type:code |male | female | other | unknown|
"birthDate": "2000-01-01", //required type:date format: YYYY-MM-DD
"address": {
"text": "你家" // required type:string
},
"maritalStatus": {
"text": "未婚" //required 未婚|已婚|離婚|喪偶|不願提供
}
}
```
```json
{
"resourceType": "Patient",
"identifier": [
{
"value": "C123456789"
}
],
"name": {
"family": "姓氏",
"given": "名字"
},
"telecom": [
{
"system": "phone",
"value": "電話號碼"
}
],
"gender": "male",
"birthDate": "2000-01-01",
"address": {
"text": "你家"
},
"maritalStatus": {
"text": "未婚"
}
}
```
#### Clinical
all: GET http://localhost:8080/hapi-fhir-jpaserver/fhir/Condition?_getpagesoffset={int}&_count={int}
get id: GET http://localhost:8080/hapi-fhir-jpaserver/fhir/Condition/{id}
query patient: GET http://localhost:8080/hapi-fhir-jpaserver/fhir/Condition?patient={id}
新增(need data) create: POST http://localhost:8080/hapi-fhir-jpaserver/fhir/Condition
刪除 DELETE: http://localhost:8080/hapi-fhir-jpaserver/fhir/Condition/{id}
更新(need data) PUT: http://localhost:8080/hapi-fhir-jpaserver/fhir/Condition/{id}
```json
{
"resourceType": "Condition",
"recordedDate": "2019-12-15",
"subject": {
"reference": "Patient/56",
"display": "H123456789"
},
"code": {
"text": "病況描述"
},
"note": {
"text": "用藥" // required type:string
}
}
```
#### medication
http://hl7.org/fhir/medicinalproduct.html
http://web.tygh.gov.tw/pharmacy/
```json
{
resourceType: "MedicationKnowledge",
code: {
"coding": {
display: "藥品學名"
}
},
synonym: "藥品別名",
ingredient: {
item: {
itemCodeableConcept: {
text: "成份"
}
}
},
contraindication: {
display: "副作用"
},
administrationGuidelines: {
dosage: {
type: "...",
dosage: {
"投藥指引"
}
},
patientCharacteristics: {
value: "適用"
}
}
}
```
#### Invoice
```json
{
resourceType: "Invoice",
date: "2019-10-10",
subject: {
reference: "Patient/56"
},
note: {
text: "Notation"
}
}
```
#### finicial
#### UI
- 病人資訊管理頁面
- 列表顯示:
- 病人ID(不是身分證是FHIR給的)
- 身分證
- 姓名
- 出生年月日
- 操作:編輯、刪除、詳細資料
- 詳細資料
- 身分證
- 姓名
- 電話
- 性別
- 出生年月日
- 地址
- 婚姻
- 限制
- 身分證:10碼
- 電話:<=20
- 性別:男、女、其他、不願提供
- 生日:XXXX-XX-XX
- 婚姻:已婚、未婚、不願提供、喪偶、離婚
- 病歷資訊管理頁面
- 列表顯示
- 身分證
- 姓名
- 看診日期
- 病歷號碼(FHIR)
- 操作:刪除、詳細資料
- 詳細資料
- 身分證
- 姓名
- 看診日期
- 病況描述
- 用藥情況
- 新增頁面
- 加入掛號病人柱列的card
- 加入病歷新增的card
>點選柱列裡的病人來新增病歷
- 限制
- 身分證:10碼
- 看診日期:XXXX-XX-XX
- 掛號
- 目前重新設計版面,要新增一個可以手動跳號的按鈕
- 藥品管理
- 列表顯示
- 藥品學名
- 藥品名稱
- 操作:編輯、刪除、詳細資料
- 詳細資料
- 藥品學名
- 藥品名稱
- 藥品成份
- 副作用
- 適應症
- 投藥指引
- 限制
- 無
- 收據
- 列表顯示
- 建立時間
- 姓名
- 身分證
- 操作:詳細資料
- 詳細資料
- 建立時間
- 姓名
- 身分證
- 項目
- 限制
- 無
新增病例(身分證 姓名 看診日期 生病原因 用藥情況)
掛號病人柱列的card
病例新增的card
病例列表(病歷號碼 身分證 姓名 建立日期)
掛號(操作只剩刪除)
跳號的bottom
藥品列表(學名 名稱 )
careplan關連到condition及medication
## 第9次專案會議
> 時間: 2019/11/20 16:30 ~ 18:30
> 地點: 宏裕科技大樓 1623 室
### PEP修改
#### 開發順後順序: Gantt
某個子系統設計完馬上實作測試
兩個子系統可以同時設計
**順序**:按照現有的順序
### SRS修改
- 使用者管理
- 瀏覽使用者
- 新增使用者
- 個人資料設定
- 掛號子系統
- 跳號
- 形象網頁子系統
- 自定義網頁
- 四個表格(上傳圖片 超連結)
- 四個表格(院所介紹 主治項目 醫師介紹 院所位置)
- 瀏覽公告
- 新增公告
- 其他子系統
- 瀏覽
- 新增
### 下次開會項目
- 訓練
- 分工
## 第10次專案會議
> 時間: 2019/11/22 15:30 ~ 16:30
> 地點: 宏裕科技大樓 1623 室
### PEP修改
Gantt and its related description.
### SRS修改
CMS's system block diagram.
(其他圖的小問題)
Author: 俊凱
### SDD分工
- 操作流程示意圖: 冠穎
- USE CASE: 按照上次子系統分工
- User Interface: 等前端
- 截所有頁面
- Static model: 孝忠
- Dynamic model: 孝忠分配
- 等class diagram 與 use case做完才能做
- 驗收
- 時間: 11/27(星期三)
- 項目: 所有(除了Dynamic model)
### 實作及測試分工
- 待系統設計完成後進行(預計12/4後)
### 專案視覺化
- 1623室白板加上project/document due date及內部作業期限
## 後端訓練計畫(序)
> 時間: 2019/11/22 16:40 ~ 17:20
> 地點: 宏裕科技大樓 1623 室
> 講師: 劉孝忠
> 參與人員: 劉孝忠、蕭文全、黃俊凱、陳冠穎、古兆瑋
主題: 後端Python、Flask練習
Navigator: 劉孝忠
Driver: 陳冠穎
內容: 實際演練後端查詢user資料之功能
## 第11次專案會議
> 時間: 2019/11/27 16:30 ~ 18:10
> 地點: 宏裕科技大樓 1623 室
### SDD驗收
- use case: Actor對case統一不要箭頭
- Use Case Specification
- 新增一個colume: related to
- value是功能性需求的編號
- usecase的編號
- 討論
- usecase是什麼
- 給user能操作的範圍
- 結論
- No.: 改成 XXX-UC-01
- 圖上標註No.
- Preconditions
- 都需要 login use case 編號
- Extensions要怎麼寫
- description的細節,例如資料類型
- 出生年月日寫法: 出生年月日(跳出年月日選項)
- 
- Exceptions
- 要加上資料庫操作之 存在、不存在、重複 等情形
- Postconditions
- 兩條
- 資料庫新增資料
- 顯示成功
- 不需要寫顯示功能
- ORS
- ~~沒有病患~~
- 線上掛號
- 分兩種種
- 病患可用
- 病患不可用
- Postconditions
- 顯示可供病人查詢的號碼
- 掛號時間設定
- 只能設定每天終止時間
- 跳號
- exception: 超過總號碼不能跳號
- WBS 還沒做
## 第12次專案會議
> 時間: 2019/12/06 15:50 ~ 16:50
> 地點: 宏裕科技大樓 1623 室
### 分工
- 後端
- Done
- loginBlueprint
- MainBlueprint
- 孝忠
- HealthRecordBlueprint
- UserBlueprint
- 兆瑋
- RegistrationBlueprint
- PatientBlueprint
- InvoiceBlueprint
- MedicationBlueprint
- ManagementBlueprint
- 冠穎
- 前端
### 下禮拜分工
遠端到孝忠實驗室電腦?使用vscode live share
## 第13次專案會議
> 時間: 2019/12/13 15:45 ~
> 地點: 宏裕科技大樓 1623 室
### 下禮拜分工
一人做兩個
#### 定義每個表格需要的項目
- 孝忠:
- FHIR
- [healthrecord](#Clinical)
- [patient](#patient)
- 冠穎:
- management
- 要設計time
- [invoice](#Invoice)
- 兆瑋
- registration
- setTime要跟management做操作
- medication
- 俊凱
- 文全
## 第14次專案會議
> 時間: 2020/01/08 15:51 ~ 16:28
> 地點: 宏裕科技大樓 1623 室
### 時程問題
系統測試文件
- 理論時間:
測試
- 理論時間: 12/25
- 實際:
- 跟FHIR相關的整合測試未完成
開發與測試時程太短
- 設計估計時間太長,如果設計時間往前一周實作時間會比較充裕
- SDD繳交時間誤解
時程表工作項目可以切割為很多工期
### 其他問題
能力問題
- 東看西看東湊西湊
在文件的期限要求下,我們產品規模太大
- 小一點比較容易做好
# API
## User
GET /user/all 取全部使用者資料
return
```json
{
"ok": true,
"users": [
{
"email": "madness48596@gmail.com",
"id": "5df0ac327beb154cd0e80f09",
"image": "https://en.gravatar.com/userimage/114454781/cf32b5aa139921a70bd0d1c1ac760d67.jpg",
"introduction": "test",
"name": "Mino",
"role": "Admin"
},
{
"email": "admin@gmail.com",
"id": "5df36085ed7e979f96072156",
"image": "https://tva1.sinaimg.com/large/8f1bd2b1jw1eox8yv9wg9j21kw11u1kx.jpg",
"introduction": "測試123",
"name": "蕭文全123",
"role": "Admin"
}
]
}
```
GET /user/<user_id> 取得單一ID使用者資料
return
```json
{
"ok": true,
"user": {
"email": "admin@gmail.com",
"id": "5df36085ed7e979f96072156",
"image": "https://tva1.sinaimg.com/large/8f1bd2b1jw1eox8yv9wg9j21kw11u1kx.jpg",
"introduction": "測試123",
"name": "蕭文全123",
"role": "Admin"
}
}
```
POST /user/<user_id> 更新單一ID使用者的 role
```json
data = { "role": "<role>" }
// role = Admin|Doctor|Nurse
```
return
```json
{
"ok": true
}
```
PUT /user 更新使用者資料 name, image, introduction
```json
data = {
"name": String,
"image": String,
"introduction": String
}
```
return
```json
{
"ok": true,
"user": {
"email": "madness48596@gmail.com",
"id": "5df0ac327beb154cd0e80f09",
"image": "https://en.gravatar.com/userimage/114454781/cf32b5aa139921a70bd0d1c1ac760d67.jpg",
"introduction": "test",
"name": "Mino",
"role": "Admin"
}
}
```
POST /user 新增一位使用者 email name password role image introduction
```json
data = {
"email": "test@gmail.com",
"image": "https://en.gravatar.com/userimage/114454781/cf32b5aa139921a70bd0d1c1ac760d67.jpg",
"introduction": "test",
"name": "test",
"role": "Nurse" // Admin|Doctor|Nurse
"password": "test"
}
```
return
```json
{
"ok": true,
"user": {
"email": "test@gmail.com",
"id": "5df9ec935d840723168f7786",
"image": "https://en.gravatar.com/userimage/114454781/cf32b5aa139921a70bd0d1c1ac760d67.jpg",
"introduction": "test",
"name": "test",
"role": "Nurse"
}
}
```
POST /user/change_password 要求資料 old_password password
```json
data = {
"old_password": "old_password",
"password": "new_password"
}
```
return
```json
{
"ok": true,
"user": {
"email": "madness48596@gmail.com",
"id": "5df0ac327beb154cd0e80f09",
"image": "https://en.gravatar.com/userimage/114454781/cf32b5aa139921a70bd0d1c1ac760d67.jpg",
"introduction": "test",
"name": "Mino",
"role": "Admin"
}
}
```
DELETE /user/<user_id>
```json
{
"ok": true
}
```
## Patient
GET /patient/all
return
```json
{
"ok": true,
"patients": {
"count": 20,
"entry": [
{
"address": "你家",
"birthDate": "2000-01-01",
"family": "姓氏",
"gender": "male",
"given": "名字",
"id": 56,
"identifier": "H123456789",
"maritalStatus": "未婚",
"phone": "0987654321"
},
{
"address": "你家",
"birthDate": "2000-01-01",
"family": "姓氏",
"gender": "male",
"given": "名字",
"id": 75,
"identifier": "C123456789",
"maritalStatus": "未婚",
"phone": "電話號碼"
},
{
"address": "test address",
"birthDate": "2000-01-01",
"family": "family",
"gender": "female",
"given": "given",
"id": 76,
"identifier": "Z123456789",
"maritalStatus": "已婚",
"phone": "1234567891233"
}
],
"offset": 0,
"total": 3
}
}
```
GET /patient/all?offset=1&count=1
return
```json
{
"ok": true,
"patients": {
"count": 1,
"entry": [
{
"address": "你家",
"birthDate": "2000-01-01",
"family": "姓氏",
"gender": "male",
"given": "名字",
"id": 75,
"identifier": "C123456789",
"maritalStatus": "未婚",
"phone": "電話號碼"
}
],
"offset": 1,
"total": 3
}
}
```
GET /patient/<patient_id>
patient_id = Int or String
for example 56 or H123456789
```json
// GET /patient/H123456789
{
"ok": true,
"patient": {
"address": "你家",
"birthDate": "2000-01-01",
"family": "姓氏",
"gender": "male",
"given": "名字",
"id": 56,
"identifier": "H123456789",
"maritalStatus": "未婚",
"phone": "0987654321"
}
}
// Same as GET /patient/56
{
"ok": true,
"patient": {
"address": "你家",
"birthDate": "2000-01-01",
"family": "姓氏",
"gender": "male",
"given": "名字",
"id": 56,
"identifier": "H123456789",
"maritalStatus": "未婚",
"phone": "0987654321"
}
}
```
POST /patient 新增病人
```json
data = {
"address": "你家",
"birthDate": "2000-01-01",
"family": "姓氏",
"gender": "male",
"given": "名字",
"identifier": "P123456789",
"maritalStatus": "未婚",
"phone": "0987654321"
}
```
return
```json
{
"ok": true,
"patient": {
"address": "你家",
"birthDate": "2000-01-01",
"family": "姓氏",
"gender": "male",
"given": "名字",
"id": 80,
"identifier": "P123456789",
"maritalStatus": "未婚",
"phone": "0987654321"
}
}
```
PUT /patient/<patient_id>
patient_id must be <font color="red"> **Int**</font>
```json
data = {
"address": "home",
"birthDate": "2000-01-01",
"family": "姓氏",
"gender": "male",
"given": "名字",
"identifier": "P123456789",
"maritalStatus": "未婚",
"phone": "0987654321"
}
```
return
```json
{
"ok": true,
"patient": {
"address": "home",
"birthDate": "2000-01-01",
"family": "姓氏",
"gender": "male",
"given": "名字",
"id": 80,
"identifier": "P123456789",
"maritalStatus": "未婚",
"phone": "0987654321"
}
}
```
DELETE /patient/<patient_id>
patient_id = Int or String
return
```json
{
"ok": true
}
```
## HealthRecord
GET /healthrecord/all
offset and count same as patient
return
```json
{
"healthrecords": {
"count": 20,
"entry": [
{
"code": "test code1",
"date": "2010-10-10",
"id": 79,
"identifier": "H123456789",
"medication": "test medication",
"name": "test name11",
"patientId": 56
}
],
"offset": 0,
"total": 1
},
"ok": true
}
```
GET /healthrecord/all?patientId=<patientId>&offset=0&count=20
patient_id must be <font color="red"> **Int**</font>
return
```json
{
"healthrecords": {
"count": 20,
"entry": [
{
"code": "test code1",
"date": "2010-10-10",
"id": 79,
"identifier": "H123456789",
"medication": "test medication",
"name": "test name11",
"patientId": 56
}
],
"offset": 0,
"total": 1
},
"ok": true
}
```
GET /healthrecord/<healthrecord_id>
healthrecord_id must be <font color="red"> **Int**</font>
```json
{
"healthRecord": {
"code": "test code1",
"date": "2010-10-10",
"id": 79,
"identifier": "H123456789",
"medication": "test medication",
"name": "test name11",
"patientId": 56
},
"ok": true
}
```
POST /healthrecord 新增病例
```json
data = {
"code": "test code1",
"date": "2010-10-10",
"identifier": "H123456789",
"medication": "test medication",
"name": "test name11",
"patientId": 56
}
```
return
```json
{
"healthRecord": {
"code": "test code1",
"date": "2019-12-18",
"id": 81,
"identifier": "H123456789",
"medication": "test medication",
"name": "test name11",
"patientId": 56
},
"ok": true
}
```
PUT /healthrecord/<healthrecord_id>
healthrecord_id must be <font color="red"> **Int**</font>
```json
data = {
"code": "123123123 code1",
"identifier": "H123456789",
"medication": "test medication",
"name": "test name11"
}
```
return
```json
{
"healthRecord": {
"code": "123123123 code1",
"date": "2019-12-18",
"id": 81,
"identifier": "H123456789",
"medication": "test medication",
"name": "test name11",
"patientId": 56
},
"ok": true
}
```
DELETE /healthrecord/<healthrecord_id>
healthrecord_id must be <font color="red"> **Int**</font>
return
```json
{
"ok": true
}
```
## Management_Information
GET /management 取得所有information資料
```json
{
"management": {
"URLs": [
"https://google.com",
"https://google.com",
"https://google.com",
"https://google.com"
],
"clinicAddress": "Default_診所位置",
"description": "內容描述",
"doctorDescription": "醫師介紹",
"images": [
"https://cdn.vuetifyjs.com/images/carousel/squirrel.jpg",
"https://cdn.vuetifyjs.com/images/carousel/squirrel.jpg",
"https://cdn.vuetifyjs.com/images/carousel/bird.jpg",
"https://cdn.vuetifyjs.com/images/carousel/planet.jpg"
],
"ourServices": "關於我們",
"time": "19:00",
"title": "網站標題"
},
"ok": true
}
```
PUT /management/information 更新management資料
```json
data = {
images: List
URLs: List
title: String
time: String
description: String
ourServices: String
doctorDescription: String
clinicAddress: String
}
test_data_value = {
"images": [
"https://cdn.vuetifyjs.com/images/carousel/squirrel.jpg",
"https://cdn.vuetifyjs.com/images/carousel/squirrel.jpg",
"https://cdn.vuetifyjs.com/images/carousel/bird.jpg",
"https://cdn.vuetifyjs.com/images/carousel/planet.jpg"
],
"URLs": [
"https://google.com",
"https://google.com",
"https://google.com",
"https://cms.mino.tw"
],
"title": "Default_title",
"time": "test title",
"description": "test description",
"ourServices": "Default_our_services",
"doctorDescription": "Default_doctor_description",
"clinicAddress": "Default_clinic_address"
}
```
return
```json
{
"management": {
"URLs": [
"https://google.com",
"https://google.com",
"https://google.com",
"https://cms.mino.tw"
],
"clinicAddress": "Default_clinic_address",
"description": "test description",
"doctorDescription": "Default_doctor_description",
"images": [
"https://cdn.vuetifyjs.com/images/carousel/squirrel.jpg",
"https://cdn.vuetifyjs.com/images/carousel/squirrel.jpg",
"https://cdn.vuetifyjs.com/images/carousel/bird.jpg",
"https://cdn.vuetifyjs.com/images/carousel/planet.jpg"
],
"ourServices": "Default_our_services",
"time": "test title",
"title": "Default_title"
},
"ok": true
}
```
## Management_Announcement
GET /management/announcements 取得所有announcement資料
```json
{
"announcements": {
"count": 20,
"entry": [
{
"author": "中文",
"context": "內容",
"date": "2010-10-10T00:00:00",
"id": "5dfc7e11b2b644a852c96f3b",
"title": "標題"
},
{
"author": "author",
"context": "context",
"date": "2010-10-10T00:00:00",
"id": "5dfc7e2ab2b644a852c96f3c",
"title": "title"
}
],
"offset": 0,
"total": 2
},
"ok": true
}
```
GET /management/announcement/<announcements_id> 取得單一announcement資料
announcements_id is String
```json
{
"announcement": {
"author": "作者",
"context": "內容",
"date": "2010-10-10T00:00:00",
"id": "5dfc7e2ab2b644a852c96f3c",
"title": "標題"
},
"ok": true
}
```
POST /management/announcement 新增單一announcement資料
```json
data = {
title: String
context: String
author: String
date: Datatime
}
```
return
```json
{
"announcement": {
"id": "5dfcb42c5360146570a3d307",
"title": "標題",
"context": "內容",
"author": "作者",
"date": "2019-11-11T00:00:00"
},
"ok": true
}
```
PUT /management/announcement/<announcements_id> 更新單一announcement資料
announcements_id is String
```json
data = {
title: String
context: String
author: String
date: Datetime
}
```
return
```json
{
"data": {
"mutateAnnouncement": {
"announcement": {
"id": "5dfcb42c5360146570a3d307",
"title": "標題",
"context": "內容",
"author": "作者",
"date": "1990-01-01T00:00:00"
},
"ok": true
}
}
}
```
DELETE /management/announcement/<announcements_id> 刪除單一announcement資料
announcements_id is String
return
```json
{
"ok": true
}
```
## Medication
GET /medication/all 取全部藥品資料
return
```json
"medications": {
"count": 20,
"entry": [
{
"contraindication": "副作用",
"dosage": "投藥指引",
"id": 1,
"ingredient": "成份",
"name": "藥品學名",
"patientCharacteristics": "適用",
"synonym": "藥品別名"
},
{
"contraindication": "副作用",
"dosage": "投藥指引",
"id": 2,
"ingredient": "成份",
"name": "藥品學名",
"patientCharacteristics": "適用",
"synonym": "藥品別名"
}
],
"offset": 1,
"total": 461
},
"ok": true
}
```
GET /medication/all?offset=1&count=2
return
```json
"medications": {
"count": 2,
"entry": [
{
"contraindication": "副作用",
"dosage": "投藥指引",
"id": 1,
"ingredient": "成份",
"name": "藥品學名",
"patientCharacteristics": "適用",
"synonym": "藥品別名"
},
{
"contraindication": "副作用",
"dosage": "投藥指引",
"id": 2,
"ingredient": "成份",
"name": "藥品學名",
"patientCharacteristics": "適用",
"synonym": "藥品別名"
}
],
"offset": 1,
"total": 461
},
"ok": true
}
```
GET /medication/<medication_id>
medication_id = Int
return
```json
{
"medication": {
"contraindication": "副作用",
"dosage": "投藥指引",
"id": 2,
"ingredient": "成份",
"name": "藥品學名",
"patientCharacteristics": "適用",
"synonym": "藥品別名"
},
"ok": true
}
```
PUT /medication/<medication_id> 更新藥品資料 name, contraindication, dosage, ingredient, patientCharacteristics, synonym
medication_id = Int
```json
data = {
"name": String,
"contraindication": String,
"dosage": String
"ingredient": String
"patientCharacteristics": String
"synonym": String
}
```
return
```json
{
"medication": {
"contraindication": "副作用",
"dosage": "投藥指引",
"id": 580101,
"ingredient": "成分",
"name": "藥品2學a名",
"patientCharacteristics": "適用",
"synonym": "藥物別名"
},
"ok": true
}
```
POST /medication 新增藥品 name, contraindication, dosage, ingredient, patientCharacteristics, synonym
```json
data = {
"name": "藥品學名",
"synonym": "藥物別名",
"ingredient": "成分",
"contraindication": "副作用",
"dosage": "投藥指引",
"patientCharacteristics": "適用"
}
```
return
```json
{
"medication": {
"contraindication": "副作用",
"dosage": "投藥指引",
"id": 580102,
"ingredient": "成分",
"name": "藥品學名",
"patientCharacteristics": "適用",
"synonym": "藥物別名"
},
"ok": true
}
```
DELETE /medication/<medication_id>
medication_id = Int
```json
{
"ok": true
}
```
## Invoice
GET /invoice/all 取得所有invoice資料
```json
{
"invoices": {
"count": 20,
"entry": [
{
"date": "2019-10-10",
"id": 115,
"identifier": null,
"name": null,
"patientId": 56,
"text": "Notation"
},
{
"date": "2019-10-10",
"id": 116,
"identifier": null,
"name": null,
"patientId": 56,
"text": "Notation"
},
{
"date": "2011-11-11",
"id": 117,
"identifier": null,
"name": null,
"patientId": 56,
"text": "notation man"
},
{
"date": "2017-12-12",
"id": 118,
"identifier": null,
"name": null,
"patientId": 56,
"text": "text"
},
{
"date": "2017-10-21",
"id": 120,
"identifier": null,
"name": null,
"patientId": 56,
"text": "test test"
},
{
"date": "2002-10-10",
"id": 121,
"identifier": null,
"name": null,
"patientId": 56,
"text": "I am a text. 你好。"
},
{
"date": "2002-10-10",
"id": 122,
"identifier": null,
"name": null,
"patientId": 56,
"text": "I am a text. 你好。"
},
{
"date": "2019-12-17",
"id": 152,
"identifier": "A123456789",
"name": "Name is good",
"patientId": 56,
"text": "I am a text."
}
],
"offset": 0,
"total": 8
},
"ok": true
}
```
GET /<invoice_id> 取得單一invoice資料
invoice_id is Int
```json
{
"invoice": {
"date": "2019-12-17",
"id": 152,
"identifier": "A123456789",
"name": "Name is good",
"patientId": 56,
"text": "I am a text."
},
"ok": true
}
```
GET /invoice?patient=<patient_id> 取得以patient_id做查詢的所有invoice資料
<patient_id> is Int
```json
{
"invoices": {
"count": 20,
"entry": [
{
"date": "2019-10-10",
"id": 115,
"identifier": null,
"name": null,
"patientId": 56,
"text": "Notation"
},
{
"date": "2019-10-10",
"id": 116,
"identifier": null,
"name": null,
"patientId": 56,
"text": "Notation"
},
{
"date": "2011-11-11",
"id": 117,
"identifier": null,
"name": null,
"patientId": 56,
"text": "notation man"
},
{
"date": "2017-12-12",
"id": 118,
"identifier": null,
"name": null,
"patientId": 56,
"text": "text"
},
{
"date": "2017-10-21",
"id": 120,
"identifier": null,
"name": null,
"patientId": 56,
"text": "test test"
},
{
"date": "2002-10-10",
"id": 121,
"identifier": null,
"name": null,
"patientId": 56,
"text": "I am a text. 你好。"
},
{
"date": "2002-10-10",
"id": 122,
"identifier": null,
"name": null,
"patientId": 56,
"text": "I am a text. 你好。"
},
{
"date": "2019-12-17",
"id": 152,
"identifier": "A123456789",
"name": "Name is good",
"patientId": 56,
"text": "I am a text."
}
],
"offset": 0,
"total": 8
},
"ok": true
}
```
POST /invoice 新增單一invoice資料
```json
data = {
date: Datetime
patientId: Int
name: String
identifier: String
text: String
}
```
return
```json
{
"data": {
"createInvoice": {
"ok": true,
"invoice": {
"id": 152,
"date": "2019-12-17",
"patientId": 56,
"name": "姓名 is good",
"identifier": "A123456789",
"text": "I am a 文字."
}
}
}
}
```
## Registration
GET /registration
return
```json
{
"ok": true,
"registrations": [
{
"birthDate": "2018-12-22",
"id": "5dfdc220032560a0e69c2a7d",
"identifier": "H123456789",
"name": "姓氏名字",
"order": 1,
"registrationDate": "2219-12-02"
},
{
"birthDate": "2018-12-22",
"id": "5dfdc377032560a0e69c2a7e",
"identifier": "A123456789",
"name": "姓名",
"order": 2,
"registrationDate": "2219-12-02"
},
{
"birthDate": "2018-12-22",
"id": "5dfdc3dad1bbf15c3a213ac0",
"identifier": "A123456789",
"name": "姓名",
"order": 3,
"registrationDate": "2219-12-02"
}
]
}
```
GET /registration/<registration_id>
return
```json
{
"ok": true,
"registration": {
"birthDate": "2018-12-22",
"identifier": "H123456789",
"name": "姓氏名字",
"order": 9,
"registrationDate": "3019-12-02"
}
}
```
GET /registration?identifier=H123456789
return
```json
{
"ok": true,
"registrations": [
{
"birthDate": "2018-12-22",
"id": "5dfdc220032560a0e69c2a7d",
"identifier": "H123456789",
"name": "姓氏名字",
"order": 1,
"registrationDate": "2219-12-02"
}
]
}
```
GET /registration?date=3019-12-02
date = registrationDate
return
```json
{
"ok": true,
"registrations": [
{
"birthDate": "2018-12-22",
"id": "5dfdc6bf6bea9fca81902c3a",
"identifier": "A123456789",
"name": "姓名",
"order": 2,
"registrationDate": "3019-12-02"
},
{
"birthDate": "2018-12-22",
"id": "5dfdc6c66bea9fca81902c3b",
"identifier": "H123456789",
"name": "姓氏名字",
"order": 3,
"registrationDate": "3019-12-02"
}
]
}
```
POST /registration 新增掛號 birthDate, identifier, registrationDate
需是已經新增的病人的identifier
```json
data = {
"birthDate": "2018-12-22",
"identifier": "A123456789",
"registrationDate": "3019-12-02"
}
```
return
```json
{
{
"ok": true,
"registration": {
"birthDate": "2018-12-22",
"id": "5dfdc7b56bea9fca81902c3c",
"identifier": "H123456789",
"name": "姓氏名字",
"order": 4,
"registrationDate": "3019-12-02"
}
}
}
```
DELETE /registration/<registration_id>
registration_id = String
return
```json
{
"ok": true
}
```
GET /skip
return
```json
{
"ok": true,
"registrations": [
{
"birthDate": "2018-12-22",
"id": "5dfdc6bf6bea9fca81902c3a",
"identifier": "A123456789",
"name": "姓名",
"order": 2,
"registrationDate": "3019-12-02"
},
{
"birthDate": "2018-12-22",
"id": "5dfdc6c66bea9fca81902c3b",
"identifier": "H123456789",
"name": "姓氏名字",
"order": 3,
"registrationDate": "3019-12-02"
}
]
}
```
GET /registration/next
return
```json
{
"ok": true,
"registrations": [
{
"birthDate": "2018-12-22",
"identifier": "H123456789",
"name": "姓氏名字",
"order": 3,
"registrationDate": "3019-12-02"
}
]
}
```
Post /registration/time
```json
data = {
"time": "18:25",
}
```
return
```json
{
"ok": true,
"time": "18:25"
}
```
GET /registration/order
return
```json
{
"ok": true,
"order": 1,
"total": 3
}
```