commons.js 11 KB

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