Преглед изворни кода

增加互联网医院全科医生求助专科医生,新增在线复诊视频复诊类型

huangwenjie пре 5 година
родитељ
комит
ef7527ee27

+ 7 - 1
readme.md

@ -227,7 +227,7 @@ REST API遵循REST最佳实践,规范命名URL中的每个部分。注意POST
            g、type =8 续方咨询
            sessionId: 居民code+"_"+咨询code+"_"+咨询类型
            h、type =9 医院在线复诊
            h、type =9 医院在线复诊-图文
            sessionId: 居民code+"_"+咨询code+"_"+咨询类型
            i、type =10 医生发起的求助 (使用率很低)
@ -244,6 +244,12 @@ REST API遵循REST最佳实践,规范命名URL中的每个部分。注意POST
            
            m、type = 14 居民-诊间助手聊天会话
            sessionId: 居民code+"_guidance_"+咨询类型
            
            n、type=15 家医咨询求助互联网医院专科医生:全科医生-专科医生-咨询聊天
            sessionId: 全科医生CODE+"_"+专科医生CODE+"_"+咨询类型
            
            h、type =16 医院在线复诊-视频
            sessionId: 居民code+"_"+咨询code+"_"+咨询类型

+ 19 - 0
src/server/handlers/socket.handler.js

@ -66,6 +66,10 @@ class SocketHandler {
                            socket.emit('ack', {});
                        });
                    }else{
                        //原始登陆者ID
                        let original_login_userid = data.userId;
                        if("pc_doctor"===data.clientType){//新增pc端医生登录
                            data.userId = "pc_"+data.userId;
                        }else if("pc_doctor_system"===data.clientType){//新增pc端医生外层-登录类型-20191012-huangnwenjie
@ -96,6 +100,8 @@ class SocketHandler {
                            patientClient.sessionId = data.sessionId||"";
                            clientCache.addClient(patientClient);
                            users.login(data.userId, 10, '', '');
                            //修改居民在线状态
                            users.changUserRedisLoginStatus(original_login_userid,data.clientType,1);
                            socket.emit('ack', {});
                        }else if("pc_patient"===data.clientType || "pc_patient_system"===data.clientType){////新增居民PC外层-登陆类型-20191012-huangnwenjie
                            //用于pcpatient 消息通知
@ -106,6 +112,8 @@ class SocketHandler {
                            pcpatientClient.sessionId = data.sessionId||"";
                            clientCache.addClient(pcpatientClient);
                            users.login(data.userId, 10, '', '');
                            //修改居民在线状态
                            users.changUserRedisLoginStatus(original_login_userid,data.clientType,1);
                            socket.emit('ack', {});
                        //MDT 登陆类型已迁移到上面的分支-20191012-huangnwenjie
                        // }else if("pcim_doctor"===data.clientType){   登
@ -124,6 +132,8 @@ class SocketHandler {
                            doctorClient.clientType = data.clientType;
                            doctorClient.sessionId =  data.sessionId||"";
                            clientCache.addClient(doctorClient);
                            //修改医生在线状态
                            users.changUserRedisLoginStatus(original_login_userid,data.clientType,1);
                            socket.emit('ack', {});
                        }
                    }
@ -296,6 +306,11 @@ class SocketHandler {
            });
            socket.on('error',function(errMsg){
                let client = clientCache.findBySocket(socket);
                if (client) {
                    //修改居民在线状态
                    users.changUserRedisLoginStatus(original_login_userid,client.clientType,0);
                }
                log.info(JSON.stringify(errMsg));
                socket.emit(errMsg);
            });
@ -304,6 +319,8 @@ class SocketHandler {
            socket.on('logout', function (data) {
                let client = clientCache.findBySocket(socket);
                if (client) {
                    //修改居民在线状态
                    users.changUserRedisLoginStatus(original_login_userid,client.clientType,0);
                    log.info('User logout: ' + client.userId);
                    clientCache.removeByUserId(client.userId);
                }
@ -313,6 +330,8 @@ class SocketHandler {
            socket.on('disconnect', function (soc) {
                let patientClient = clientCache.findBySocket(socket);
                if (patientClient) {
                    //修改居民在线状态
                    users.changUserRedisLoginStatus(original_login_userid,client.clientType,0);
                    log.info("User disconnect: ", patientClient.userId);
                    clientCache.removeByUserSocket(socket);
                }

+ 6 - 4
src/server/include/commons.js

@ -34,10 +34,12 @@ const SESSION_TYPES = {
    DISCUSSION: 4,       // 临时讨论组
    SPECIALISTGROUP: 5,       // 专科医生和家庭医生的固定组
    PRESCRIPTION: 8,   // 续方
    PRESCRIPTION_HOSPITAL:9, //互联网医院医院在线复诊
    PRESCRIPTION_HOSPITAL:9, //互联网医院医院在线复诊-图文
    ONDOOR_NURSING:11,   //上门护理
    COLLABORATION_HOSPITAL:12,   //互联网医院协同门诊
    GUIDANCE_HOSPITAL:14   //互联网医院居民导诊聊天
    GUIDANCE_HOSPITAL:14,   //互联网医院居民导诊聊天
    GENERAL_EXPERT:15,   //全科医生发起求助专科医生的专家咨询
    PRESCRIPTION_HOSPITAL_VIDEO:16, //互联网医院医院在线复诊-视频
};
exports.SESSION_TYPES = SESSION_TYPES;
@ -254,9 +256,9 @@ const DB_TABLES = {
            return DB_TABLES.MucMessages;
        else if (sessionType == SESSION_TYPES.SPECIALISTGROUP)
            return DB_TABLES.GroupMessages;
        else if (sessionType == SESSION_TYPES.PRESCRIPTION_HOSPITAL)
        else if (sessionType == SESSION_TYPES.GENERAL_EXPERT)
            return DB_TABLES.MucMessages;
        else if (sessionType == SESSION_TYPES.ONDOOR_NURSING)
        else if (sessionType == SESSION_TYPES.PRESCRIPTION_HOSPITAL_VIDEO)
            return DB_TABLES.MucMessages;
        else throw {message: "Unknown session type"};
    }

+ 2 - 0
src/server/models/client/app.client.js

@ -182,6 +182,8 @@ class AppClient extends RedisModel {
                    session_type==SESSION_TYPES.COLLABORATION_HOSPITAL||
                    session_type==SESSION_TYPES.GUIDANCE_HOSPITAL||
                    session_type==SESSION_TYPES.ONDOOR_NURSING||
                    session_type==SESSION_TYPES.GENERAL_EXPERT||
                    session_type==SESSION_TYPES.PRESCRIPTION_HOSPITAL_VIDEO||
                    message.business_type == MESSAGE_BUSSINESS_TYPE.D_CT_01||
                    message.business_type == MESSAGE_BUSSINESS_TYPE.D_CT_02||
                    message.business_type == MESSAGE_BUSSINESS_TYPE.D_CT_03||

+ 12 - 0
src/server/models/sessions/sessions.js

@ -139,6 +139,8 @@ class Sessions extends RedisModel {
                SESSION_TYPES.PRESCRIPTION_HOSPITAL ||
                SESSION_TYPES.COLLABORATION_HOSPITAL ||
                SESSION_TYPES.GUIDANCE_HOSPITAL ||
                SESSION_TYPES.GENERAL_EXPERT ||
                SESSION_TYPES.PRESCRIPTION_HOSPITAL_VIDEO ||
                SESSION_TYPES.ONDOOR_NURSING){
                callCreate(sessionId, SESSION_BUSINESS_TYPE.PATIENT);
            }else if(type==SESSION_TYPES.DISCUSSION||type==SESSION_TYPES.GROUP){
@ -159,6 +161,8 @@ class Sessions extends RedisModel {
                    SESSION_TYPES.PRESCRIPTION_HOSPITAL ||
                    SESSION_TYPES.COLLABORATION_HOSPITAL ||
                    SESSION_TYPES.GUIDANCE_HOSPITAL ||
                    SESSION_TYPES.GENERAL_EXPERT ||
                    SESSION_TYPES.PRESCRIPTION_HOSPITAL_VIDEO ||
                    SESSION_TYPES.ONDOOR_NURSING) {
                    businessType = 2;
                }
@ -221,6 +225,8 @@ class Sessions extends RedisModel {
                SESSION_TYPES.PRESCRIPTION_HOSPITAL ||
                SESSION_TYPES.COLLABORATION_HOSPITAL ||
                SESSION_TYPES.GUIDANCE_HOSPITAL ||
                SESSION_TYPES.GENERAL_EXPERT ||
                SESSION_TYPES.PRESCRIPTION_HOSPITAL_VIDEO ||
                SESSION_TYPES.ONDOOR_NURSING){
                callCreateSession(SESSION_BUSINESS_TYPE.PATIENT);
            }else if(type==SESSION_TYPES.SPECIALISTGROUP||type==SESSION_TYPES.DISCUSSION){
@ -1256,6 +1262,8 @@ class Sessions extends RedisModel {
                                            SESSION_TYPES.PRESCRIPTION_HOSPITAL ||
                                            SESSION_TYPES.COLLABORATION_HOSPITAL ||
                                            SESSION_TYPES.GUIDANCE_HOSPITAL ||
                                            SESSION_TYPES.GENERAL_EXPERT ||
                                            SESSION_TYPES.PRESCRIPTION_HOSPITAL_VIDEO ||
                                            SESSION_TYPES.ONDOOR_NURSING){
                                            for(var j in users){
                                                if(users[j]==userId)continue;
@ -1294,6 +1302,8 @@ class Sessions extends RedisModel {
                                            SESSION_TYPES.PRESCRIPTION_HOSPITAL ||
                                            SESSION_TYPES.COLLABORATION_HOSPITAL ||
                                            SESSION_TYPES.GUIDANCE_HOSPITAL ||
                                            SESSION_TYPES.GENERAL_EXPERT ||
                                            SESSION_TYPES.PRESCRIPTION_HOSPITAL_VIDEO ||
                                            SESSION_TYPES.ONDOOR_NURSING){
                                            for(var j in users){
                                                if(users[j]==userId)continue;
@ -1579,6 +1589,8 @@ class Sessions extends RedisModel {
                        SESSION_TYPES.PRESCRIPTION_HOSPITAL ||
                        SESSION_TYPES.COLLABORATION_HOSPITAL ||
                        SESSION_TYPES.GUIDANCE_HOSPITAL ||
                        SESSION_TYPES.GENERAL_EXPERT ||
                        SESSION_TYPES.PRESCRIPTION_HOSPITAL_VIDEO ||
                        SESSION_TYPES.ONDOOR_NURSING){
                        if(message.content_type == CONTENT_TYPES.PlainText ||
                           message.content_type == CONTENT_TYPES.Image ||

+ 2 - 0
src/server/models/sessions/topics.js

@ -270,6 +270,8 @@ class Topics extends RedisModel {
                SESSION_TYPES.PRESCRIPTION_HOSPITAL ||
                SESSION_TYPES.COLLABORATION_HOSPITAL ||
                SESSION_TYPES.GUIDANCE_HOSPITAL ||
                SESSION_TYPES.GENERAL_EXPERT ||
                SESSION_TYPES.PRESCRIPTION_HOSPITAL_VIDEO ||
                SESSION_TYPES.ONDOOR_NURSING)) {
            ModelUtil.emitOK(self.eventEmitter, {status: -1, message: "会话ID为空,请先生成会话ID"});
            return;

+ 9 - 0
src/server/models/user/users.js

@ -344,6 +344,15 @@ class Users extends RedisModel {
        );
    }
    /**
     * 改变登陆者的在线状态
     * @param userid 居民 patient_userid, 医生 doctor_userid
     * @param status 0离线 1在线
     */
    changUserRedisLoginStatus(userid,clientType,status){
    }
    /**
     * 用户ID是否属于患者。
     *

+ 1 - 1
src/server/start.sh

@ -14,4 +14,4 @@ ps -ef | grep node | grep -v grep | awk '{print $2}' | xargs kill -9
#互联网医院测试环境
#nohup /data/ichat/src/server/node app.armour.js > log.txt &
#互联网医院正式环境
#nohup /usr/local/ichat/src/server/node app.armour.js > log.txt &
nohup /usr/local/ichat/src/server/node app.armour.js > log.txt &