commons.js 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364
  1. /**
  2. * 此文件内容为常用的系统枚举及变量。
  3. */
  4. /**
  5. * 系统部署时的配置文件。
  6. *
  7. * @type {string}
  8. */
  9. "use strict";
  10. let configFile = "config.";
  11. if (process.env.IM_PROFILE === "prod") {
  12. configFile += "prod";
  13. } else if (process.env.IM_PROFILE === "local") {
  14. configFile += "local";
  15. } else if (process.env.IM_PROFILE === "test") {
  16. configFile += "test";
  17. } else if (process.env.IM_PROFILE === "ystest") {
  18. configFile += "ystest";
  19. } else if (process.env.IM_PROFILE === "hzprod") {
  20. configFile += "hzprod";
  21. } else if (process.env.IM_PROFILE === "dsyy") {
  22. configFile += "dsyy";
  23. } else {
  24. configFile += "test";
  25. }
  26. exports.CONFIG_FILE = configFile;
  27. /**
  28. * 会话类型
  29. */
  30. const SESSION_TYPES = {
  31. SYSTEM: 0, // 系统会话
  32. MUC: 1, // MUC会话
  33. P2P: 2, // P2P
  34. GROUP: 3, // 固定组
  35. DISCUSSION: 4, // 临时讨论组
  36. SPECIALISTGROUP: 5, // 专科医生和家庭医生的固定组
  37. PRESCRIPTION: 8, // 续方
  38. PRESCRIPTION_HOSPITAL:9, //互联网医院医院在线复诊-图文
  39. ONDOOR_NURSING:11, //上门护理
  40. COLLABORATION_HOSPITAL:12, //互联网医院协同门诊
  41. GUIDANCE_HOSPITAL:14, //互联网医院居民导诊聊天
  42. GENERAL_EXPERT:15, //全科医生发起求助专科医生的专家咨询
  43. PRESCRIPTION_HOSPITAL_VIDEO:16, //互联网医院医院在线复诊-视频
  44. MUC_VIDEO:17, //视频咨询
  45. GUIDANCE_ASSISTANT: 18,//导诊助手
  46. EMERGENCY_ASSISTANCE: 20,//紧急救助
  47. DOOR_COACH:21, //上门预约
  48. SECURITY_WARN:22, //安防咨询
  49. ONLINE:23, //新生儿在线咨询
  50. ONLINEAged:24, //老人在线咨询
  51. HEALTHAged:25, //老人健康咨询
  52. VIP_GUIDANCE_ASSISTANT:26, //专属服务导诊(专属候诊室)
  53. ONLINE_WAITING_ROOM:27, //在线候诊室
  54. contantsType: function (session_type) {
  55. if( session_type==SESSION_TYPES.MUC||
  56. session_type==SESSION_TYPES.P2P||
  57. session_type==SESSION_TYPES.GROUP||
  58. session_type==SESSION_TYPES.DISCUSSION||
  59. session_type==SESSION_TYPES.SPECIALISTGROUP||
  60. session_type==SESSION_TYPES.PRESCRIPTION||
  61. session_type==SESSION_TYPES.PRESCRIPTION_HOSPITAL||
  62. session_type==SESSION_TYPES.COLLABORATION_HOSPITAL||
  63. session_type==SESSION_TYPES.GUIDANCE_HOSPITAL||
  64. session_type==SESSION_TYPES.ONDOOR_NURSING||
  65. session_type==SESSION_TYPES.GENERAL_EXPERT||
  66. session_type==SESSION_TYPES.PRESCRIPTION_HOSPITAL_VIDEO||
  67. session_type==SESSION_TYPES.MUC_VIDEO||
  68. session_type==SESSION_TYPES.GUIDANCE_ASSISTANT||
  69. session_type==SESSION_TYPES.VIP_GUIDANCE_ASSISTANT||
  70. session_type==SESSION_TYPES.ONLINE_WAITING_ROOM||
  71. session_type==SESSION_TYPES.EMERGENCY_ASSISTANCE||
  72. session_type==SESSION_TYPES.DOOR_COACH||
  73. session_type==SESSION_TYPES.ONLINE||
  74. session_type==SESSION_TYPES.ONLINEAged||
  75. session_type==SESSION_TYPES.HEALTHAged||
  76. session_type==SESSION_TYPES.SECURITY_WARN){
  77. return true;
  78. }
  79. return false;
  80. },
  81. contantsTopticType: function (sessionType) {
  82. if( sessionType == SESSION_TYPES.MUC||
  83. sessionType == SESSION_TYPES.PRESCRIPTION ||
  84. sessionType == SESSION_TYPES.PRESCRIPTION_HOSPITAL ||
  85. sessionType == SESSION_TYPES.COLLABORATION_HOSPITAL ||
  86. sessionType == SESSION_TYPES.GUIDANCE_HOSPITAL ||
  87. sessionType == SESSION_TYPES.GENERAL_EXPERT ||
  88. sessionType == SESSION_TYPES.PRESCRIPTION_HOSPITAL_VIDEO ||
  89. sessionType == SESSION_TYPES.MUC_VIDEO ||
  90. sessionType == SESSION_TYPES.ONDOOR_NURSING||
  91. sessionType == SESSION_TYPES.GUIDANCE_ASSISTANT||
  92. sessionType == SESSION_TYPES.VIP_GUIDANCE_ASSISTANT||
  93. sessionType == SESSION_TYPES.ONLINE_WAITING_ROOM||
  94. sessionType == SESSION_TYPES.EMERGENCY_ASSISTANCE||
  95. sessionType == SESSION_TYPES.DOOR_COACH||
  96. sessionType == SESSION_TYPES.ONLINE||
  97. sessionType == SESSION_TYPES.ONLINEAged||
  98. sessionType == SESSION_TYPES.HEALTHAged||
  99. sessionType == SESSION_TYPES.SECURITY_WARN){
  100. return true;
  101. }
  102. return false;
  103. }
  104. };
  105. exports.SESSION_TYPES = SESSION_TYPES;
  106. /**
  107. * 会话状态
  108. */
  109. const TOPIC_STATUS = {
  110. NEW: 0, // 新建
  111. PROCEEDINGS: 1, // 进行中
  112. ENDED: 10 // 结束
  113. };
  114. exports.SESSION_STATUS = {
  115. PROCEEDINGS: 0, // 进行中
  116. ENDED:1 // 结束
  117. };
  118. /**
  119. * 会话业务类型
  120. */
  121. exports.SESSION_BUSINESS_TYPE = {
  122. PATIENT: 2,//针对患者
  123. DOCTOR: 1//针对医生
  124. };
  125. exports.TOPIC_STATUS = TOPIC_STATUS;
  126. /**
  127. * 会话参与者角色
  128. */
  129. const PARTICIPANT_ROLES = {
  130. HOST: 0,//主持者
  131. REGULAR: 1,//普通参与者
  132. BYSTANDER: 10//旁听者
  133. };
  134. exports.PARTICIPANT_ROLES = PARTICIPANT_ROLES;
  135. /**
  136. * 消息内容类型。
  137. */
  138. const CONTENT_TYPES = {
  139. PlainText: 1, // 文本信息
  140. Image: 2, // 图片信息
  141. Audio: 3, // 语音信息
  142. Article: 4, // 文章信息
  143. GoTo: 5, // 跳转信息,求组其他医生或者邀请其他医生发送的推送消息
  144. TopicBegin: 6, // 议题开始
  145. TopicEnd: 7, // 议题结束 10 11 系统发送的会话消息
  146. PersonalCard: 18, // 个人名片
  147. MessageForward: 19, // 消息转发
  148. TopicInto: 14, // 进入议题 系统发送的会话消息
  149. Video:12,//视频
  150. System:13,//系统消息
  151. PrescriptionCheck:15,//续方审核消息消息
  152. PrescriptionBloodStatus:16,//续方咨询血糖血压咨询消息
  153. PrescriptionFollowupContent:17,//续方咨询随访问卷消息
  154. Rehabilitation: 20, //康复计划发送
  155. PrescriptionDiagnosis: 24,//诊断发送
  156. PrescriptionInfo: 27,//药品消息
  157. VideoAnswerStatus: 29, //视屏请求
  158. HospiatlForward: 30, //互联网医院转发
  159. PrescriptionSuggest: 31, //会诊建议
  160. Screening: 32, //疾病筛查卡片消息
  161. PrescriptionReject: 33, //处方驳回消息
  162. ConsultSuggest: 34, //咨询建议
  163. PayMessage: 35, //支付消息
  164. surveyMessage: 36, //患者答完问卷
  165. VideoAnswerAck: 39, //视屏请求确认
  166. ReservationDoorCardInfo: 2101,//上门服务-预约工单卡片信息
  167. ChangeDoorCardInfo: 2102,//上门服务-修改工单卡片信息
  168. ChangeDoorDoctor: 2103,//上门服务-变更工单医生信息
  169. ChangeDoorPackageItems:2104, //上门服务-变更工单服务项信息
  170. InformedConsent:2105,//知情通知书
  171. ReservationDoorCoachCardInfo: 2201,//上门辅导服务-预约工单卡片信息
  172. ChangeDoorCoachCardInfo: 2202,//上门辅导服务-修改工单卡片信息
  173. ChangeDoorCoachDoctor: 2203,//上门辅导服务-变更工单医生信息
  174. ChangeDoorCoachPackageItems:2204, //上门辅导服务-变更工单服务项信息
  175. CoachInformedConsent:2205,//上门辅导服务 知情通知书
  176. emergencyAssistance:40,//医疗云-紧急预警弹框
  177. BirthdayToPatientAssistance:41,//医疗云-人文关怀(生日祝福)
  178. HealthIndexToPatientAssistance:42,//医疗云-设备体征测量弹框
  179. SystemMessagePushAssistance:999,// 系统推送消息统一 999 Pad 使用
  180. DeviceMessagePushAssistance:991,// 设备消息统一推送 991 Pad 使用
  181. EmergencyAssistanceMessage:43,//云招呼-预警消息
  182. KnowCommonQuestion:3001,//知识库-常见问题
  183. KnowCommonQuestions:3002,//知识库-常见问题集
  184. KnowCommonDict:3003,//知识库-字典
  185. KnowDeptDoctor:3004,//知识库-科室医生
  186. KnowSymptomsDisease:3005,//知识库-疾病症状
  187. KnowSymptomsDiseaseQ:3006,//知识库-疾病症状问题
  188. KnowSymptomsDiseaseA:3007,//知识库-疾病症状回答
  189. KnowCommonCustomer:3008,//知识库-客服欢迎
  190. ForwardChat:3009,//转发聊天
  191. typeToDescription: function (type, defaultDescription) {
  192. if (CONTENT_TYPES.Image == type) {
  193. return '[图片]';
  194. } else if (CONTENT_TYPES.Audio == type) {
  195. return '[语音]';
  196. }
  197. else if (CONTENT_TYPES.Video == type) {
  198. return '[视频]';
  199. }
  200. else if (type > 3) {
  201. return defaultDescription;
  202. }
  203. return false;
  204. }
  205. };
  206. exports.CONTENT_TYPES = CONTENT_TYPES;
  207. exports.SOCKET_TYPES={
  208. PATIENT:"patient",//居民微信
  209. PATIENT_SYSTEM:"patient_system",//居民微信外层
  210. PC_PATIENT:"pc_patient",//居民PC
  211. PC_PATIENT_SYSTEM:"pc_patient_system",//居民PC外层
  212. DOCTOR:"doctor",//医生APP
  213. DOCTOR_SYSTEM:"doctor_system",//医生APP外层
  214. PC_DOCTOR:"pc_doctor",//医生PC
  215. PC_DOCTOR_SYSTEM:"pc_doctor_system",//医生PC外层
  216. CloudCarePcManage:"cloudCare_pcManage",//医养pc管理
  217. PCIM_DOCTOR:"pcim_doctor",//中山医院医生MDT
  218. DEMO:"demo"
  219. }
  220. /**
  221. * 客户端平台。
  222. */
  223. exports.PLATFORM = {
  224. iOS: 0,
  225. Android: 1,
  226. PC: 4,
  227. Wechat: 10
  228. };
  229. /**
  230. * 组类型。
  231. */
  232. exports.GROUP_TYPE = {
  233. AdminTeam: 1,
  234. DiscussionGroup: 2
  235. };
  236. /**
  237. * 模型事件。
  238. *
  239. * @type {{Error: string, DataNotFound: string, OK: string}}
  240. */
  241. exports.MODEL_EVENTS = {
  242. Error: "error", // 数据库访问出错
  243. DataNotFound: "no_data", // 找不到指定的数据
  244. OK: "ok", // 操作结束或有数据返回
  245. Exists: "exists" // 数据已存在
  246. };
  247. /**
  248. * 整型最大值。
  249. */
  250. exports.MAX_INT = 9007199254740992;
  251. /**
  252. * 置顶会话基础分值,以此为下限向上递增。
  253. */
  254. exports.STICKY_SESSION_BASE_SCORE = 9000000000000;
  255. /**
  256. * 默认分页大小。
  257. */
  258. exports.DEFAULT_PAGE_SIZE = 100;
  259. /**
  260. * Redis Key列表与占位符。
  261. */
  262. const REDIS_KEY_REPLACER = "{id}";
  263. exports.REDIS_KEY_REPLACER = REDIS_KEY_REPLACER;
  264. exports.SESSION_USER_STATUS = {
  265. ONLINE: 0,
  266. OTHER: 1
  267. };
  268. exports.REDIS_KEYS = {
  269. Users: "users:",
  270. User: "users:" + REDIS_KEY_REPLACER,
  271. UserAppStatus: "users:" + REDIS_KEY_REPLACER + ":app_status",
  272. UserPcStatus: "users:" + REDIS_KEY_REPLACER + ":pc_status",
  273. UserWechatStatus: "users:" + REDIS_KEY_REPLACER + ":wechat_status",
  274. UserSessions: "users:" + REDIS_KEY_REPLACER + ":sessions",
  275. Sessions: "sessions:",
  276. Session: "sessions:" + REDIS_KEY_REPLACER,
  277. SessionParticipants: "participants:" + REDIS_KEY_REPLACER,
  278. SessionParticipantsRole: "participants:" + REDIS_KEY_REPLACER + ":role",
  279. Topics: "sessions:" + REDIS_KEY_REPLACER + ":topics",
  280. Topic: "topics:" + REDIS_KEY_REPLACER,
  281. Messages: "sessions:" + REDIS_KEY_REPLACER + ":messages",
  282. MessagesByTimestamp: "sessions:" + REDIS_KEY_REPLACER + ":messages_by_timestamp"
  283. };
  284. const DB_TABLES = {
  285. Doctors: "doctors",
  286. Patients: "patients",
  287. P2pMessages: "p2p_messages",
  288. MucMessages: "muc_messages",
  289. GroupMessages: "group_messages",
  290. SystemMessages: "system_messages",
  291. Participants: "participants",
  292. Sessions: "sessions",
  293. Topics: "topics",
  294. StickySessions: "sticky_sessions",
  295. WlyyConsult:"wlyy_consults",
  296. WlyyConsultTeam:"base.wlyy_consult_team",
  297. WlyyConsultS:"base.wlyy_consult",
  298. WlyyMessage:"base.wlyy_message",
  299. MessageNoticeSetting:"base.wlyy_message_notice_setting",
  300. SignFamily:"base.wlyy_sign_family",
  301. sessionTypeToTableName: function (sessionType) {
  302. if (sessionType == SESSION_TYPES.SYSTEM)
  303. return DB_TABLES.SystemMessages;
  304. else if (sessionType == SESSION_TYPES.MUC)
  305. return DB_TABLES.MucMessages;
  306. else if (sessionType == SESSION_TYPES.P2P)
  307. return DB_TABLES.P2pMessages;
  308. else if (sessionType == SESSION_TYPES.GROUP
  309. ||sessionType == SESSION_TYPES.SPECIALISTGROUP
  310. ||sessionType == SESSION_TYPES.DISCUSSION)
  311. return DB_TABLES.GroupMessages;
  312. else
  313. return DB_TABLES.MucMessages;
  314. }
  315. };
  316. exports.DB_TABLES = DB_TABLES;
  317. const MESSAGE_BUSSINESS_TYPE = {
  318. D_CT_01: "D_CT_01",//指定咨询, 您有新的指定咨询
  319. D_CT_02: "D_CT_02",//指定咨询, 您有新的消息
  320. D_CT_03: "D_CT_03",//名医咨询, 您有新的名医咨询
  321. D_CT_04: "D_CT_04",//名医咨询, 您有新的名医咨询
  322. D_CT_05: "D_CT_05",//续方咨询, 您有新的续方咨询
  323. D_CT_06: "D_CT_06",//在线复诊咨询, 您有新的复诊咨询
  324. D_CT_07: "D_CT_07"//上门服务咨询, 您有新的上门服务咨询回复
  325. };
  326. exports.MESSAGE_BUSSINESS_TYPE = MESSAGE_BUSSINESS_TYPE;