# drug-server **Repository Path**: iseri27/drug-server ## Basic Information - **Project Name**: drug-server - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: release - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2021-05-15 - **Last Updated**: 2021-07-08 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README [TOC] # 任务说明 > **任务**: > > 1. [医生界面(药品预览,写就诊记录,并开出处方和药方)后端](#医生界面后端) > 2. [柜员界面(显示待处理处方,完成取药后点一个√,相应的药品数量自动减少,同时扣费)后端](#柜员界面后端) ## 医生界面后端 ### 实现的功能 #### part1:药品预览 属性包括M_id,药品名称,药品单位,药品类别,药品禁忌症,以及药品使用方式。 提供以下三种检索方式: 1. 药品全集 2. 根据关键词搜索药品 3. 根据M_id选择药品 #### part2:写诊断记录 此过程向Visit表、Ricipe表、Prescription表中插入数据。 #### part3:开处方和药方 此过程先向Ricipe表中插入数据,再向Prescription表中插入数据,并修改之前插入的记录的部分属性。 ### 前后端交互数据 #### for part1 **前端发送Get请求** ##### 药品全集获取 请求路径示例: ```http http://localhost:8888/drug_server_war_exploded/doctor/preview-all ``` 前端无需传输数据 反馈数据示例: ```json { "code": 200, "data": [ { "m_id": "M1", "m_kind": "胶囊", "m_name": "阿莫西林", "m_unit": "粒", "m_usage": "口服" }, { "m_CI": "不要配酒喝", "m_id": "M2", "m_kind": "胶囊", "m_name": "头孢", "m_unit": "粒", "m_usage": "口服" }, { "m_id": "M3", "m_kind": "胶囊", "m_name": "阿莫西风", "m_unit": "粒", "m_usage": "口服" }, { "m_id": "M4", "m_kind": "胶囊", "m_name": "阿莫西火", "m_unit": "粒", "m_usage": "口服" }, { "m_id": "M5", "m_kind": "胶囊", "m_name": "阿莫西山", "m_unit": "粒", "m_usage": "口服" } ], "message": "成功得到药品全集!", "success": true } ``` ##### 根据关键词搜索 请求路径示例: ```http http://localhost:8888/drug_server_war_exploded/doctor/preview-search ``` 传来json格式的字符串,数据包括: M_name_like(模糊搜索) 下图为一个示例: ![](https://gitee.com/rCasablanca/image-bed/raw/master/img/Get%E7%A4%BA%E4%BE%8B1.png) 相应的反馈数据: ```json { "code": 200, "data": [ { "m_id": "M1", "m_kind": "胶囊", "m_name": "阿莫西林", "m_unit": "粒", "m_usage": "口服" }, { "m_id": "M3", "m_kind": "胶囊", "m_name": "阿莫西风", "m_unit": "粒", "m_usage": "口服" }, { "m_id": "M4", "m_kind": "胶囊", "m_name": "阿莫西火", "m_unit": "粒", "m_usage": "口服" }, { "m_id": "M5", "m_kind": "胶囊", "m_name": "阿莫西山", "m_unit": "粒", "m_usage": "口服" } ], "message": "搜索药品信息成功!", "success": true } ``` ##### 根据M_id选择 请求路径示例: ```http http://localhost:8888/drug_server_war_exploded/doctor/preview-get ``` 传来json格式的字符串,数据包括: M_id 下图为一个示例: ![](https://gitee.com/rCasablanca/image-bed/raw/master/img/Get%E7%A4%BA%E4%BE%8B2.png) 相应的反馈数据: ```json { "code": 200, "data": { "m_id": "M1", "m_kind": "胶囊", "m_unit": "阿莫西林", "m_usage": "口服" }, "message": "选择药品成功!", "success": true } ``` #### for part2&part3 **前端发送Post请求** 请求路径示例: ```http http://localhost:8888/drug_server_war_exploded/doctor/write_result ``` 传来json格式的字符串,数据包括: 1. V_result(诊断结果) 2. Doc_User_id(医生编号) 3. Reg_User_id(病人编号) 4. M_name_List(药品名称)(列表形式) 5. PI_M_amountList(药品数量)(列表形式,注意要与4. 中的药品按顺序对应) 下图为一个示例: ![](https://gitee.com/rCasablanca/image-bed/raw/master/img/%E5%8C%BB%E7%94%9F%E7%95%8C%E9%9D%A2%E4%BA%A4%E4%BA%92%E6%95%B0%E6%8D%AE%E7%A4%BA%E4%BE%8B.png) 反馈数据示例: ![](https://gitee.com/rCasablanca/image-bed/raw/master/img/%E5%8C%BB%E7%94%9F%E5%90%8E%E7%AB%AF%E5%8F%8D%E9%A6%88%E5%89%8D%E7%AB%AF%E6%95%B0%E6%8D%AE.png) ## 柜员界面后端 ### 实现的功能 #### part4:待办列表获取 获得在处方表中处理状态为`false`的处方以及与之关联的信息。 详见视图[to_do_list](#to_do_list) 提供两种检索方式: 1. 列表全集 2. 根据R_id搜索所得列表(病人在诊断后拿到了处方单,故可以提供R_id给柜台) #### part5:完成取药后发送更新指令 在柜台取药完成后,修改相应的处方的受理状态`R_status = true`,并修改该处方下所有药方对应的药品库存数,即使得`M_amount = M_amount-PI_M_amount` ### 前后端交互数据 #### for part4 **前端发送Get请求** ##### 列表全集获取 请求路径示例: ```http http://localhost:8888/drug_server_war_exploded/dispensary/display-all ``` 前端无需传输数据 反馈数据示例: ```json { "code": 200, "data": [ { "m_name": "头孢", "pI_M_amount": 6, "r_id": "R2" }, { "m_name": "阿莫西林", "pI_M_amount": 6, "r_id": "R2" }, { "m_name": "头孢", "pI_M_amount": 6, "r_id": "R3" }, { "m_name": "阿莫西林", "pI_M_amount": 6, "r_id": "R3" } ], "message": "查询待办列表成功!", "success": true } ``` ##### 根据R_id选择 请求路径示例: ```http http://localhost:8888/drug_server_war_exploded/dispensary/display-get ``` 传来json格式的字符串,数据包括: R_id 下图为一个示例: ![](https://gitee.com/rCasablanca/image-bed/raw/master/img/Get3.png) 相应的反馈数据: ```json { "code": 200, "data": [ { "m_name": "头孢", "pI_M_amount": 6, "r_id": "R2" }, { "m_name": "阿莫西林", "pI_M_amount": 6, "r_id": "R2" } ], "message": "按M_id搜索列表成功!", "success": true } ``` #### for part5 **前端发送Post请求** 请求路径示例: ```http http://localhost:8888/drug_server_war_exploded/complete-get ``` 传来json格式的字符串,数据包括: R_id 下图为一个示例: ![](https://gitee.com/rCasablanca/image-bed/raw/master/img/20210604104203.png) 相应的反馈数据: ```json { "code": 200, "message": "成功发送取药完成指令!", "success": true } ``` ## 药品管理员后端 ### 功能1: 查询药品信息 地址:`/DrugManager/medicineList/select` 功能:返回数据库中所有药品记录 参数: | 参数 | 含义 | 当传入的参数不为空时添加的查询条件 | | -------------- | ---------------------- | -------------------------------------- | | `m_id` | | `M_id = m_id` | | `w_id` | | `W_id = w_id` | | `m_unit` | 药品单位(如:粒、瓶) | `M_unit = unit` | | `m_kind` | 药品种类(如:胶囊) | `M_kind = m_kind` | | `m_pin_min` | 最低进价 | `M_pin >= m_pin_min` | | `m_pin_max` | 最高进价 | `M_pin <= m_pin_max` | | `m_pout_min` | 最低售价 | `M_pout >= m_pout_min` | | `m_pout_max` | 最高售价 | `M_pout <= m_pout_max` | | `m_dout_min` | 最早出厂日期 | `M_dout >= m_dout_min` | | `m_dout_max` | 最晚出厂日期 | `M_dout <= m_dout_max` | | `m_life_min` | 最早过期时间 | `M_life >= m_life_min` | | `m_life_max` | 最晚过期时间 | `M_life <= m_life_max` | | `m_amount_min` | 最小库存数量 | `M_amount >= m_amount_min` | | `m_amount_max` | 最大库存数量 | `M_amount <= m_amount_max` | | `m_usage` | 使用方式 | `M_usage = m_usage` | | `m_name` | | `M_name LIKE CONCAT('%', m_name, '%')` | | `m_CI` | 禁忌事项 | `M_CI LIKE CONCAT('%', m_CI, '%')` | ### 功能2:更新药品信息 地址:`/DrugManager/medicineList/update` 功能: ```mysql UPDATE Medicine SET [PARAMETER_NAME] = [NEW_VALUE] [WHERE CONDITION1,[CONDITION2,[...]]] ``` 参数: 1. 传入的要更新的字段的新值 | 参数 | 当传入的参数不为空时SET语句中添加的更新操作 | | -------------- | ------------------------------------------- | | `m_name_new` | `M_name = m_name_new` | | `m_unit_new` | `M_unit = m_unit_new` | | `m_kind_new` | `M_kind = m_kind_new` | | `m_pin_new` | `M_pin = m_pin_new` | | `m_pout_new` | `M_pout = m_pout_new` | | `m_dout_new` | `M_dout = m_dout_new` | | `m_CI_new` | `M_CI = m_CI_new` | | `m_anount_new` | `M_anount = m_anount_new` | | `m_usage_new` | `M_usage = m_usage_new` | 2. 传入的更新条件(`WHERE`子句中的条件) 该部分的参数与`SELECT`语句中的参数及操作相同。 ### 功能3:新增药品信息 地址:`/DrugManager/medicineList/insert` 直接传入`M_id`、`W_id`等字段的新值,为空时即插入空值。 ### 功能4:删除药品信息 地址:`/DrugManager/medicineList/delete` 功能: ```mysql DELETE FROM Mdicine [WHERE CONDITION1, [CONDITION2, ...]] ``` 传入的更新条件(`WHERE`子句中的条件)的参数与`SELECT`语句中的参数及操作相同。 ### 功能5:查询所有药品进货订单 地址:`/DrugManager/contractList/select` 功能: ```mysql SELECT * FROM Contract [WHERE CONDITION1, [CONDITION2, ...]] ``` 传入的查询条件(`WHERE`子句中的条件)的参数及相关操作如下: | 参数 | 当传入的参数不为空时`SELECT`语句执行的操作 | | ------------- | ------------------------------------------ | | `c_id` | `C_id = c_id` | | `s_id` | `S_id = s_id` | | `c_price_min` | `C_price >= c_price_min` | | `c_price_max` | `C_price <= c_price_max` | | `c_time_min` | `C_time >= c_time_min` | | `c_time_max` | `C_time <= c_time_max` | | `c_status` | `C_status = c_status` | # 数据库说明 ## Visit > 就诊记录表 | 属性名 | 含义 | 类型 | | ----------- | ----------------------------- | ------------ | | V_time | 诊断时间 | datetime | | V_result | 诊断结果 | varchar(100) | | V_id | 主键 | varchar(20) | | Doc_User_id | 外键,参照[Doctor表](#Doctor) | varchar(20) | | Reg_user_id | 外键,参照病人表 | varchar(20) | | V_dept | 就诊科室 | varchar(20) | ## Doctor > 医生表 | 属性名 | 含义 | 类型 | | :---------- | -------- | :---------- | | User_id | 编号 | varchar(20) | | User_name | 姓名 | varchar(20) | | User_pwd | 登录密码 | varchar(20) | | User_awatar | 头像地址 | varchar(20) | | D_id2 | 身份证号 | varchar(20) | | D_dept | 所在科室 | varchar(20) | > 注:在参照表中,此表的主键User_id名为Doc_User_id ## Recipe > 处方表,一个处方可能包含多种药方 | 属性名 | 含义 | 类型 | | -------- | --------------------------- | ----------- | | R_price | 药方价格总和 | float | | R_status | 受理状态 | boolean | | R_id | 主键 | varchar(20) | | V_id | 外键,参照[Visit表](#Visit) | varchar(20) | ## Prescription > 药方表,每种药方对应一种药 | 属性名 | 含义 | 类型 | | ----------- | --------------------------------- | ----------- | | M_id | 外键,参照[Medicine表](#Medicine) | varchar(20) | | R_id | 外键,参照[Recipe表](#Recipe) | varchar(20) | | PI_M_amount | 该种药的数量 | int | | PI_price | 价格,即M_pout*PI_M_amount | float | ## DrugManager > 仓库管理员/药品管理员 | 属性名 | 含义 | 类型 | | ----------- | ------------ | ----------- | | User_id | 用户ID | varchar(20) | | User_name | 用户名 | varchar(20) | | User_pwd | 用户密码 | varchar(20) | | User_avatar | 头像存放地址 | varchar(50) | | User_sex | 性别 | varchar(10) | ## Medicine > 药品表 | 属性名 | 含义 | 类型 | | -------- | ---------------------- | ----------- | | M_id | 主键 | varchar(20) | | W_id | 外键,存储仓库号 | varchar(20) | | M_name | 药品名称 | varchar(40) | | M_unit | 药品单位(如:"粒") | varchar(20) | | M_kind | 药品种类(如:"胶囊") | varchar(20) | | M_pin | 进价 | float | | M_pout | 售价 | float | | M_dout | 出厂日期 | datetime | | M_life | 过期时间 | datetime | | M_CI | 禁忌症(如:不要口服) | varchar(60) | | M_amount | 库存数 | int | | M_usage | 使用方式(如:"口服") | 口服 | ## to_do_list > 柜台看到的**待处理的**取药信息视图 | 属性名 | 含义 | 类型 | | ----------- | ----------------------------- | ----------- | | R_id | 外键,参照[Recipe表](#Recipe) | varchar(20) | | M_name | 药品名称 | varchar(40) | | PI_M_amount | 该种药的数量 | int |