瀏覽代碼

增加协同门诊和居民导诊的会话类型

huangwenjie 5 年之前
父節點
當前提交
c6596ba28d

+ 3 - 0
readme.md

@ -241,6 +241,9 @@ REST API遵循REST最佳实践,规范命名URL中的每个部分。注意POST
            
            l、type =13 健康咨询
            sessionId: 居民code+"_"+医生code+"_"+咨询类型
            
            m、type = 14 居民-诊间助手聊天会话
            sessionId: 居民code+"_guidance_"+咨询类型

+ 8 - 2
src/server/include/commons.js

@ -34,8 +34,10 @@ const SESSION_TYPES = {
    DISCUSSION: 4,       // 临时讨论组
    SPECIALISTGROUP: 5,       // 专科医生和家庭医生的固定组
    PRESCRIPTION: 8,   // 续方
    PRESCRIPTION_HOSPITAL:9, //医院在线复诊
    ONDOOR_NURSING:11   //上门护理
    PRESCRIPTION_HOSPITAL:9, //互联网医院医院在线复诊
    ONDOOR_NURSING:11,   //上门护理
    COLLABORATION_HOSPITAL:12,   //互联网医院协同门诊
    GUIDANCE_HOSPITAL:14   //互联网医院居民导诊聊天
};
exports.SESSION_TYPES = SESSION_TYPES;
@ -238,6 +240,10 @@ const DB_TABLES = {
            return DB_TABLES.GroupMessages;
        else if (sessionType == SESSION_TYPES.PRESCRIPTION)
            return DB_TABLES.MucMessages;
        else if (sessionType == SESSION_TYPES.COLLABORATION_HOSPITAL)
            return DB_TABLES.MucMessages;
        else if (sessionType == SESSION_TYPES.GUIDANCE_HOSPITAL)
            return DB_TABLES.MucMessages;
        else if (sessionType == SESSION_TYPES.PRESCRIPTION_HOSPITAL)
            return DB_TABLES.MucMessages;
        else if (sessionType == SESSION_TYPES.ONDOOR_NURSING)

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

@ -179,6 +179,8 @@ class AppClient extends RedisModel {
                    session_type==SESSION_TYPES.SPECIALISTGROUP||
                    session_type==SESSION_TYPES.PRESCRIPTION||
                    session_type==SESSION_TYPES.PRESCRIPTION_HOSPITAL||
                    session_type==SESSION_TYPES.COLLABORATION_HOSPITAL||
                    session_type==SESSION_TYPES.GUIDANCE_HOSPITAL||
                    session_type==SESSION_TYPES.ONDOOR_NURSING||
                    message.business_type == MESSAGE_BUSSINESS_TYPE.D_CT_01||
                    message.business_type == MESSAGE_BUSSINESS_TYPE.D_CT_02||

+ 36 - 6
src/server/models/sessions/sessions.js

@ -134,7 +134,12 @@ class Sessions extends RedisModel {
        }
        function callBusinessType(sessionId) {
            if(type == SESSION_TYPES.MUC||type == SESSION_TYPES.PRESCRIPTION || SESSION_TYPES.PRESCRIPTION_HOSPITAL || SESSION_TYPES.ONDOOR_NURSING){
            if(type == SESSION_TYPES.MUC||
                type == SESSION_TYPES.PRESCRIPTION ||
                SESSION_TYPES.PRESCRIPTION_HOSPITAL ||
                SESSION_TYPES.COLLABORATION_HOSPITAL ||
                SESSION_TYPES.GUIDANCE_HOSPITAL ||
                SESSION_TYPES.ONDOOR_NURSING){
                callCreate(sessionId, SESSION_BUSINESS_TYPE.PATIENT);
            }else if(type==SESSION_TYPES.DISCUSSION||type==SESSION_TYPES.GROUP){
                callCreate(sessionId, SESSION_BUSINESS_TYPE.DOCTOR);
@ -149,7 +154,12 @@ class Sessions extends RedisModel {
            let createDate = new Date();
            Participants.saveParticipantsToRedis(sessionId, participantArray, createDate, function (res) {
                let sessionKey = RedisModel.makeRedisKey(REDIS_KEYS.Session, sessionId);
                if (type == SESSION_TYPES.MUC||type == SESSION_TYPES.PRESCRIPTION || SESSION_TYPES.PRESCRIPTION_HOSPITAL || SESSION_TYPES.ONDOOR_NURSING) {
                if (type == SESSION_TYPES.MUC||
                    type == SESSION_TYPES.PRESCRIPTION ||
                    SESSION_TYPES.PRESCRIPTION_HOSPITAL ||
                    SESSION_TYPES.COLLABORATION_HOSPITAL ||
                    SESSION_TYPES.GUIDANCE_HOSPITAL ||
                    SESSION_TYPES.ONDOOR_NURSING) {
                    businessType = 2;
                }
                let session = {
@ -206,7 +216,12 @@ class Sessions extends RedisModel {
        //流程2-判断session的业务类型;
        function callBusinessType() {
            if(type==SESSION_TYPES.MUC||type==SESSION_TYPES.PRESCRIPTION || SESSION_TYPES.PRESCRIPTION_HOSPITAL || SESSION_TYPES.ONDOOR_NURSING){
            if(type==SESSION_TYPES.MUC||
                type==SESSION_TYPES.PRESCRIPTION ||
                SESSION_TYPES.PRESCRIPTION_HOSPITAL ||
                SESSION_TYPES.COLLABORATION_HOSPITAL ||
                SESSION_TYPES.GUIDANCE_HOSPITAL ||
                SESSION_TYPES.ONDOOR_NURSING){
                callCreateSession(SESSION_BUSINESS_TYPE.PATIENT);
            }else if(type==SESSION_TYPES.SPECIALISTGROUP||type==SESSION_TYPES.DISCUSSION){
                callCreateSession(SESSION_BUSINESS_TYPE.DOCTOR);
@ -1236,7 +1251,12 @@ class Sessions extends RedisModel {
                                                if(users[j]==userId)continue;
                                                 WechatClient.sendAllRead(users[j],sessionId);
                                            }
                                        }else if(session.type == SESSION_TYPES.MUC || session.type == SESSION_TYPES.PRESCRIPTION || SESSION_TYPES.PRESCRIPTION_HOSPITAL || SESSION_TYPES.ONDOOR_NURSING){
                                        }else if(session.type == SESSION_TYPES.MUC ||
                                            session.type == SESSION_TYPES.PRESCRIPTION ||
                                            SESSION_TYPES.PRESCRIPTION_HOSPITAL ||
                                            SESSION_TYPES.COLLABORATION_HOSPITAL ||
                                            SESSION_TYPES.GUIDANCE_HOSPITAL ||
                                            SESSION_TYPES.ONDOOR_NURSING){
                                            for(var j in users){
                                                if(users[j]==userId)continue;
                                                WechatClient.sendMucAllRead(users[j],userId,sessionId);
@ -1269,7 +1289,12 @@ class Sessions extends RedisModel {
                                                //通知对方自己已经读取数据
                                                WechatClient.sendAllRead(users[j],sessionId);
                                            }
                                        }else if(session.type == SESSION_TYPES.MUC || session.type == SESSION_TYPES.PRESCRIPTION || SESSION_TYPES.PRESCRIPTION_HOSPITAL || SESSION_TYPES.ONDOOR_NURSING){
                                        }else if(session.type == SESSION_TYPES.MUC ||
                                            session.type == SESSION_TYPES.PRESCRIPTION ||
                                            SESSION_TYPES.PRESCRIPTION_HOSPITAL ||
                                            SESSION_TYPES.COLLABORATION_HOSPITAL ||
                                            SESSION_TYPES.GUIDANCE_HOSPITAL ||
                                            SESSION_TYPES.ONDOOR_NURSING){
                                            for(var j in users){
                                                if(users[j]==userId)continue;
                                                //如果是患者拉取数据告诉在线的医生患者已经读取数据
@ -1549,7 +1574,12 @@ class Sessions extends RedisModel {
                            });
                        });
                    }
                    if(sessionType == SESSION_TYPES.MUC || sessionType == SESSION_TYPES.PRESCRIPTION || SESSION_TYPES.PRESCRIPTION_HOSPITAL || SESSION_TYPES.ONDOOR_NURSING){
                    if(sessionType == SESSION_TYPES.MUC ||
                        sessionType == SESSION_TYPES.PRESCRIPTION ||
                        SESSION_TYPES.PRESCRIPTION_HOSPITAL ||
                        SESSION_TYPES.COLLABORATION_HOSPITAL ||
                        SESSION_TYPES.GUIDANCE_HOSPITAL ||
                        SESSION_TYPES.ONDOOR_NURSING){
                        if(message.content_type == CONTENT_TYPES.PlainText ||
                           message.content_type == CONTENT_TYPES.Image ||
                           message.content_type == CONTENT_TYPES.Audio||

+ 6 - 1
src/server/models/sessions/topics.js

@ -265,7 +265,12 @@ class Topics extends RedisModel {
     */
    createTopic(topicName, topicId, sessionId, users, messages, sessionType) {
        let self = this;
        if (!sessionId && (sessionType == SESSION_TYPES.MUC|| sessionType == SESSION_TYPES.PRESCRIPTION || SESSION_TYPES.PRESCRIPTION_HOSPITAL || SESSION_TYPES.ONDOOR_NURSING)) {
        if (!sessionId && (sessionType == SESSION_TYPES.MUC||
                sessionType == SESSION_TYPES.PRESCRIPTION ||
                SESSION_TYPES.PRESCRIPTION_HOSPITAL ||
                SESSION_TYPES.COLLABORATION_HOSPITAL ||
                SESSION_TYPES.GUIDANCE_HOSPITAL ||
                SESSION_TYPES.ONDOOR_NURSING)) {
            ModelUtil.emitOK(self.eventEmitter, {status: -1, message: "会话ID为空,请先生成会话ID"});
            return;
        }

+ 1 - 1
src/server/repository/mysql/session.repo.js

@ -149,7 +149,7 @@ class SessionRepo {
            }
        }
        let sql = "select session_id from " + DB_TABLES.Participants + " w where w.participant_id = ? group by w.session_id";
        let sql = "select session_id from " + DB_TABLES.Participants + " w where w.participant_id in(?) group by w.session_id";
        let sessionSQL = "select id, name, type, create_date, last_sender_id, last_sender_name, last_content_type, last_content, last_message_time from "
            + DB_TABLES.Sessions + " s where s.id in(" + sql + ") and s.type=? ";