|
@@ -1,285 +1,363 @@
|
|
|
-import type {InjectionKey} from "vue";
|
|
|
import XEUtils from "xe-utils";
|
|
|
import moment from "moment/moment";
|
|
|
-import {useEventListener} from "@vueuse/core";
|
|
|
-import {documentVisibilityEnum} from "@/utils/cy-use/useChangeToken";
|
|
|
-import {getServerDate} from "@/utils/moment-utils";
|
|
|
-import {selectInpatientBriefsV2} from "@/api/dashboard";
|
|
|
+import { useEventListener, useWebSocket } from "@vueuse/core";
|
|
|
+import { documentVisibilityEnum } from "@/utils/cy-use/useChangeToken";
|
|
|
+import { getServerDate } from "@/utils/moment-utils";
|
|
|
+import { selectInpatientBriefsV2 } from "@/api/dashboard";
|
|
|
import router from "@/router";
|
|
|
-import {getAllWards} from "@/api/login";
|
|
|
+import { getAllWards } from "@/api/login";
|
|
|
import sleep from "@/utils/sleep";
|
|
|
-
|
|
|
-
|
|
|
-function getWeek(date: any): string { // 参数时间戳
|
|
|
- let week = moment(new Date(date)).day()
|
|
|
- switch (week) {
|
|
|
- case 1:
|
|
|
- return '星期一'
|
|
|
- case 2:
|
|
|
- return '星期二'
|
|
|
- case 3:
|
|
|
- return '星期三'
|
|
|
- case 4:
|
|
|
- return '星期四'
|
|
|
- case 5:
|
|
|
- return '星期五'
|
|
|
- case 6:
|
|
|
- return '星期六'
|
|
|
- case 0:
|
|
|
- return '星期日'
|
|
|
- default:
|
|
|
- return '';
|
|
|
- }
|
|
|
+import env from "@/utils/setting";
|
|
|
+import { isDev } from "@/utils/public";
|
|
|
+
|
|
|
+function getWeek(date: any): string {
|
|
|
+ // 参数时间戳
|
|
|
+ let week = moment(new Date(date)).day();
|
|
|
+ switch (week) {
|
|
|
+ case 1:
|
|
|
+ return "星期一";
|
|
|
+ case 2:
|
|
|
+ return "星期二";
|
|
|
+ case 3:
|
|
|
+ return "星期三";
|
|
|
+ case 4:
|
|
|
+ return "星期四";
|
|
|
+ case 5:
|
|
|
+ return "星期五";
|
|
|
+ case 6:
|
|
|
+ return "星期六";
|
|
|
+ case 0:
|
|
|
+ return "星期日";
|
|
|
+ default:
|
|
|
+ return "";
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
export function anonymizeName(name: string) {
|
|
|
- if (!name) return ''
|
|
|
- let prefix = ''
|
|
|
- // 如果是婴儿
|
|
|
- if (name.startsWith('(')) {
|
|
|
- const index = name.indexOf('(')
|
|
|
- const end = name.lastIndexOf(')');
|
|
|
- prefix = name.substring(index, end + 1)
|
|
|
- name = name.substring(end + 1, name.length)
|
|
|
- }
|
|
|
-
|
|
|
- if (name.length == 2) {
|
|
|
- name = name.substring(0, 1) + '*';
|
|
|
- return prefix + name;
|
|
|
- } else if (name.length == 3) {
|
|
|
- name = name.substring(0, 1) + '*' + name.substring(2, 3);
|
|
|
- return prefix + name;
|
|
|
- } else if (name.length > 3) {
|
|
|
- name = name.substring(0, 1) + '*' + '*' + name.substring(3, name.length);
|
|
|
- return prefix + name;
|
|
|
- }
|
|
|
- return ''
|
|
|
+ if (!name) return "";
|
|
|
+ let prefix = "";
|
|
|
+ // 如果是婴儿
|
|
|
+ if (name.startsWith("(")) {
|
|
|
+ const index = name.indexOf("(");
|
|
|
+ const end = name.lastIndexOf(")");
|
|
|
+ prefix = name.substring(index, end + 1);
|
|
|
+ name = name.substring(end + 1, name.length);
|
|
|
+ }
|
|
|
+
|
|
|
+ if (name.length == 2) {
|
|
|
+ name = name.substring(0, 1) + "*";
|
|
|
+ return prefix + name;
|
|
|
+ } else if (name.length == 3) {
|
|
|
+ name = name.substring(0, 1) + "*" + name.substring(2, 3);
|
|
|
+ return prefix + name;
|
|
|
+ } else if (name.length > 3) {
|
|
|
+ name = name.substring(0, 1) + "*" + "*" + name.substring(3, name.length);
|
|
|
+ return prefix + name;
|
|
|
+ }
|
|
|
+ return "";
|
|
|
}
|
|
|
|
|
|
const huloColor = {
|
|
|
- '病重': '#E21606',
|
|
|
- '病危': '#f89898',
|
|
|
- 'Ⅰ级护理': '#79bbff',
|
|
|
- 'Ⅱ级护理': '#12D4F9',
|
|
|
- 'Ⅲ级护理': '#30C8A0',
|
|
|
-}
|
|
|
+ 病重: "#E21606",
|
|
|
+ 病危: "#f89898",
|
|
|
+ Ⅰ级护理: "#79bbff",
|
|
|
+ Ⅱ级护理: "#12D4F9",
|
|
|
+ Ⅲ级护理: "#30C8A0",
|
|
|
+};
|
|
|
|
|
|
export function getHuloColor(value: string) {
|
|
|
- return XEUtils.get(huloColor, value, '#b1b3b8')
|
|
|
+ return XEUtils.get(huloColor, value, "#b1b3b8");
|
|
|
}
|
|
|
|
|
|
export type InpatientBrief = {
|
|
|
- bedNo: string;
|
|
|
- name: string;
|
|
|
- gender: number;
|
|
|
- indays: number;
|
|
|
- patNo: string;
|
|
|
- birthDate: string;
|
|
|
- admissDate: string;
|
|
|
- convertAdmissDate: string;
|
|
|
- physician: string;
|
|
|
- medType: string;
|
|
|
- medTypeName: string;
|
|
|
- surgery: string;
|
|
|
- // 护理级别
|
|
|
- nursingLevel: string;
|
|
|
- // 病情医嘱:null,病重,病危
|
|
|
- sickLevelOrderName: string;
|
|
|
- // 患者状态: 0-正常,1-病重,2-病危
|
|
|
- sickLevel: number;
|
|
|
- leaveHospital: number
|
|
|
+ bedNo: string;
|
|
|
+ name: string;
|
|
|
+ gender: number;
|
|
|
+ indays: number;
|
|
|
+ patNo: string;
|
|
|
+ birthDate: string;
|
|
|
+ admissDate: string;
|
|
|
+ convertAdmissDate: string;
|
|
|
+ physician: string;
|
|
|
+ medType: string;
|
|
|
+ medTypeName: string;
|
|
|
+ surgery: string;
|
|
|
+ // 护理级别
|
|
|
+ nursingLevel: string;
|
|
|
+ // 病情医嘱:null,病重,病危
|
|
|
+ sickLevelOrderName: string;
|
|
|
+ // 患者状态: 0-正常,1-病重,2-病危
|
|
|
+ sickLevel: number;
|
|
|
+ leaveHospital: number;
|
|
|
+};
|
|
|
+
|
|
|
+interface CallData {
|
|
|
+ ward: string;
|
|
|
+ bedNo: string;
|
|
|
+ emergency: boolean;
|
|
|
+ state: "call" | string; // 可以更精确地定义可能的字符串值
|
|
|
+ call: boolean;
|
|
|
+ group: string;
|
|
|
}
|
|
|
|
|
|
-export function useInpatientBoard() {
|
|
|
- const bedCount = ref(0)
|
|
|
- const selectRef = ref()
|
|
|
-
|
|
|
- const urlQuery = reactive({
|
|
|
- speedBarDisplay: 5,
|
|
|
- refresh: 30,
|
|
|
- ward: '',
|
|
|
- wardName: '',
|
|
|
- })
|
|
|
-
|
|
|
- let refreshTimeOut;
|
|
|
-
|
|
|
- const data = ref<InpatientBrief[]>([])
|
|
|
- const allWards = ref<{ code: string, name: string }[]>([])
|
|
|
- const huliData = ref({})
|
|
|
- const time = reactive({
|
|
|
- now: moment().format('YYYY-MM-DD HH:mm:ss'),
|
|
|
- weekName: ''
|
|
|
- })
|
|
|
- const infoEl = ref<HTMLDivElement | null>(null)
|
|
|
- const dvTableData = reactive({
|
|
|
- operation: {
|
|
|
- config: {
|
|
|
- align: 'left',
|
|
|
- columnWidth: [60, 100],
|
|
|
- header: ['姓名', '床号', '手术'],
|
|
|
- data: [],
|
|
|
- },
|
|
|
- },
|
|
|
- huli: {
|
|
|
- config: {
|
|
|
- align: 'left',
|
|
|
- columnWidth: [200],
|
|
|
- rowNum: 8,
|
|
|
- header: ['名称', '数量'],
|
|
|
- data: [],
|
|
|
- },
|
|
|
- }
|
|
|
- })
|
|
|
-
|
|
|
- function setDvTableData(res: any) {
|
|
|
- dvTableData.operation.config.data = []
|
|
|
- dvTableData.huli.config.data = res.huli || []
|
|
|
-
|
|
|
- data.value.forEach(item => {
|
|
|
- if (item.surgery) {
|
|
|
- // @ts-ignore
|
|
|
- dvTableData.operation.config.data.push([anonymizeName(item.name), item.bedNo, item.surgery])
|
|
|
- }
|
|
|
-
|
|
|
- })
|
|
|
- }
|
|
|
-
|
|
|
- function changeRouterQuery() {
|
|
|
- const {wardName, ...tmp} = urlQuery
|
|
|
- router.replace({
|
|
|
- query: {
|
|
|
- ...tmp
|
|
|
- }
|
|
|
- }).then(XEUtils.noop)
|
|
|
- }
|
|
|
-
|
|
|
- async function handleWardChange(code: string) {
|
|
|
- clearTimeout(refreshTimeOut)
|
|
|
- if (code) {
|
|
|
- urlQuery.ward = code
|
|
|
- selectInpatientBriefsV2(code).then((res) => {
|
|
|
- // @ts-ignore
|
|
|
- setData(res.data, res)
|
|
|
- bedCount.value = res.bedCount
|
|
|
- changeRouterQuery()
|
|
|
- })
|
|
|
- await nextTick()
|
|
|
- urlQuery.wardName = selectRef.value.states.selectedLabel;
|
|
|
- }
|
|
|
- await nextTick();
|
|
|
- refreshTimeOut = setTimeout(() => {
|
|
|
- handleWardChange(urlQuery.ward)
|
|
|
- }, (60 * 1000) * urlQuery.refresh)
|
|
|
- }
|
|
|
-
|
|
|
- async function setData(value: InpatientBrief[], res) {
|
|
|
- if (XEUtils.isArray(value)) {
|
|
|
- data.value = value;
|
|
|
- 滚动分组()
|
|
|
- 护理分组()
|
|
|
- setDvTableData(res);
|
|
|
- } else {
|
|
|
- data.value = [];
|
|
|
- }
|
|
|
- time.now = await getServerDate()
|
|
|
- time.weekName = getWeek(time.now)
|
|
|
- }
|
|
|
+function openSocket(callStore) {
|
|
|
+ const url = ref("");
|
|
|
+ let socket = null;
|
|
|
|
|
|
- async function 滚动分组() {
|
|
|
- mutation.boardStart(data.value)
|
|
|
+ function open(code: string) {
|
|
|
+ if (socket != null) {
|
|
|
+ socket.close();
|
|
|
}
|
|
|
-
|
|
|
- let interval = setInterval(() => {
|
|
|
- time.now = moment(time.now).add(1, 'seconds').format('YYYY-MM-DD HH:mm:ss')
|
|
|
- }, 1000)
|
|
|
-
|
|
|
- useEventListener(document, "visibilitychange", async (val) => {
|
|
|
- if (document.visibilityState === documentVisibilityEnum.hidden) {
|
|
|
- clearInterval(interval)
|
|
|
- } else {
|
|
|
- // @ts-ignore
|
|
|
- time.now = await getServerDate()
|
|
|
- interval = setInterval(() => {
|
|
|
- time.now = moment(time.now).add(1, 'seconds').format('YYYY-MM-DD HH:mm:ss')
|
|
|
- }, 1000)
|
|
|
+ url.value = isDev
|
|
|
+ ? `ws://172.16.32.160:20922/websocket/nursingRecordBoard/${code}`
|
|
|
+ : `${env.VITE_SOCKET_V2}/nursingRecordBoard/${code}`;
|
|
|
+
|
|
|
+ socket = useWebSocket(url, {
|
|
|
+ autoReconnect: true,
|
|
|
+ immediate: true,
|
|
|
+ onMessage: (ws, message) => {
|
|
|
+ try {
|
|
|
+ const data = JSON.parse(message.data);
|
|
|
+ callStore[data.code](data.data);
|
|
|
+ } catch (e) {
|
|
|
+ console.error(e);
|
|
|
}
|
|
|
+ },
|
|
|
+ heartbeat: {
|
|
|
+ message: "ping",
|
|
|
+ interval: 1000 * 60 * 3,
|
|
|
+ pongTimeout: 1000,
|
|
|
+ },
|
|
|
});
|
|
|
+ }
|
|
|
|
|
|
+ return {
|
|
|
+ open,
|
|
|
+ };
|
|
|
+}
|
|
|
|
|
|
- function 护理分组() {
|
|
|
- huliData.value = {}
|
|
|
- data.value.forEach((value) => {
|
|
|
- let name = ''
|
|
|
-
|
|
|
- if (value.nursingLevel) {
|
|
|
- name = value.nursingLevel
|
|
|
- }
|
|
|
-
|
|
|
- if (value.sickLevelOrderName) {
|
|
|
- name = value.sickLevelOrderName
|
|
|
- }
|
|
|
-
|
|
|
- if (name) {
|
|
|
- // @ts-ignore
|
|
|
- huliData.value[name] = (huliData.value[name] ?? 0) + 1;
|
|
|
- }
|
|
|
- })
|
|
|
+export function useInpatientBoard() {
|
|
|
+ const bedCount = ref(0);
|
|
|
+ const selectRef = ref();
|
|
|
+
|
|
|
+ const urlQuery = reactive({
|
|
|
+ speedBarDisplay: 5,
|
|
|
+ refresh: 30,
|
|
|
+ ward: "",
|
|
|
+ wardName: "",
|
|
|
+ });
|
|
|
+
|
|
|
+ const callStore = reactive({
|
|
|
+ call: new Map<string, CallData>(),
|
|
|
+ urgentCallForHelp: new Map<string, CallData>(),
|
|
|
+ dialogVisible: true,
|
|
|
+ });
|
|
|
+
|
|
|
+ // for (let i = 0; i < 1; i++) {
|
|
|
+ // callStore.call.set(`00${i}`, {
|
|
|
+ // ward: "8000006",
|
|
|
+ // bedNo: `00${i}`,
|
|
|
+ // emergency: false,
|
|
|
+ // state: "call",
|
|
|
+ // call: true,
|
|
|
+ // });
|
|
|
+ // callStore.urgentCallForHelp.set(`00${i}`, {
|
|
|
+ // ward: "8000006",
|
|
|
+ // bedNo: `00${i}`,
|
|
|
+ // emergency: false,
|
|
|
+ // state: "call",
|
|
|
+ // call: true,
|
|
|
+ // });
|
|
|
+ // }
|
|
|
+
|
|
|
+ const socketOnMessage = {
|
|
|
+ call: (data: CallData) => {
|
|
|
+ const group = data.group;
|
|
|
+ if (data.call) {
|
|
|
+ callStore[group].set(data.bedNo, data);
|
|
|
+ } else {
|
|
|
+ callStore[group].delete(data.bedNo);
|
|
|
+ }
|
|
|
+ },
|
|
|
+ empty: data => {
|
|
|
+ callStore[data.group].clear();
|
|
|
+ },
|
|
|
+ };
|
|
|
+ const socket = openSocket(socketOnMessage);
|
|
|
+
|
|
|
+ let refreshTimeOut;
|
|
|
+
|
|
|
+ const data = ref<InpatientBrief[]>([]);
|
|
|
+ const allWards = ref<{ code: string; name: string }[]>([]);
|
|
|
+ const huliData = ref({});
|
|
|
+ const time = reactive({
|
|
|
+ now: moment().format("YYYY-MM-DD HH:mm:ss"),
|
|
|
+ weekName: "",
|
|
|
+ });
|
|
|
+ const infoEl = ref<HTMLDivElement | null>(null);
|
|
|
+ const dvTableData = reactive({
|
|
|
+ operation: {
|
|
|
+ config: {
|
|
|
+ align: "left",
|
|
|
+ columnWidth: [60, 100],
|
|
|
+ header: ["姓名", "床号", "手术"],
|
|
|
+ data: [],
|
|
|
+ },
|
|
|
+ },
|
|
|
+ huli: {
|
|
|
+ config: {
|
|
|
+ align: "left",
|
|
|
+ columnWidth: [200],
|
|
|
+ rowNum: 8,
|
|
|
+ header: ["名称", "数量"],
|
|
|
+ data: [],
|
|
|
+ },
|
|
|
+ },
|
|
|
+ });
|
|
|
+
|
|
|
+ function setDvTableData(res: any) {
|
|
|
+ dvTableData.operation.config.data = [];
|
|
|
+ dvTableData.huli.config.data = res.huli || [];
|
|
|
+
|
|
|
+ data.value.forEach(item => {
|
|
|
+ if (item.surgery) {
|
|
|
+ // @ts-ignore
|
|
|
+ dvTableData.operation.config.data.push([
|
|
|
+ anonymizeName(item.name),
|
|
|
+ item.bedNo,
|
|
|
+ item.surgery,
|
|
|
+ ]);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ function changeRouterQuery() {
|
|
|
+ const { wardName, ...tmp } = urlQuery;
|
|
|
+ router
|
|
|
+ .replace({
|
|
|
+ query: {
|
|
|
+ ...tmp,
|
|
|
+ },
|
|
|
+ })
|
|
|
+ .then(XEUtils.noop);
|
|
|
+ }
|
|
|
+
|
|
|
+ async function handleWardChange(code: string) {
|
|
|
+ clearTimeout(refreshTimeOut);
|
|
|
+ if (code) {
|
|
|
+ urlQuery.ward = code;
|
|
|
+ selectInpatientBriefsV2(code).then(res => {
|
|
|
+ // @ts-ignore
|
|
|
+ setData(res.data, res);
|
|
|
+ bedCount.value = res.bedCount;
|
|
|
+ changeRouterQuery();
|
|
|
+ });
|
|
|
+ await nextTick();
|
|
|
+ urlQuery.wardName = selectRef.value.states.selectedLabel;
|
|
|
}
|
|
|
-
|
|
|
- function changeInterval() {
|
|
|
- 滚动分组()
|
|
|
- changeRouterQuery()
|
|
|
+ await nextTick();
|
|
|
+ refreshTimeOut = setTimeout(
|
|
|
+ () => {
|
|
|
+ handleWardChange(urlQuery.ward);
|
|
|
+ },
|
|
|
+ 60 * 1000 * urlQuery.refresh
|
|
|
+ );
|
|
|
+ socket.open(code);
|
|
|
+ }
|
|
|
+
|
|
|
+ async function setData(value: InpatientBrief[], res) {
|
|
|
+ if (XEUtils.isArray(value)) {
|
|
|
+ data.value = value;
|
|
|
+ 滚动分组();
|
|
|
+ 护理分组();
|
|
|
+ setDvTableData(res);
|
|
|
+ } else {
|
|
|
+ data.value = [];
|
|
|
}
|
|
|
-
|
|
|
- function handleRefresh() {
|
|
|
- clearTimeout(refreshTimeOut);
|
|
|
- changeRouterQuery()
|
|
|
- refreshTimeOut = setTimeout(() => {
|
|
|
- handleWardChange(urlQuery.ward)
|
|
|
- }, (60 * 1000) * urlQuery.refresh)
|
|
|
+ time.now = await getServerDate();
|
|
|
+ time.weekName = getWeek(time.now);
|
|
|
+ }
|
|
|
+
|
|
|
+ async function 滚动分组() {
|
|
|
+ mutation.boardStart(data.value);
|
|
|
+ }
|
|
|
+
|
|
|
+ let interval = setInterval(() => {
|
|
|
+ time.now = moment(time.now).add(1, "seconds").format("YYYY-MM-DD HH:mm:ss");
|
|
|
+ }, 1000);
|
|
|
+
|
|
|
+ useEventListener(document, "visibilitychange", async val => {
|
|
|
+ if (document.visibilityState === documentVisibilityEnum.hidden) {
|
|
|
+ clearInterval(interval);
|
|
|
+ } else {
|
|
|
+ // @ts-ignore
|
|
|
+ time.now = await getServerDate();
|
|
|
+ interval = setInterval(() => {
|
|
|
+ time.now = moment(time.now)
|
|
|
+ .add(1, "seconds")
|
|
|
+ .format("YYYY-MM-DD HH:mm:ss");
|
|
|
+ }, 1000);
|
|
|
}
|
|
|
+ });
|
|
|
|
|
|
- const mutation = {
|
|
|
- boardStart: (value: any[]): Promise<void> | number => 0
|
|
|
- }
|
|
|
+ function 护理分组() {
|
|
|
+ huliData.value = {};
|
|
|
+ data.value.forEach(value => {
|
|
|
+ let name = "";
|
|
|
|
|
|
- onMounted(async () => {
|
|
|
- const query = router.currentRoute.value.query
|
|
|
- urlQuery.speedBarDisplay = XEUtils.toNumber(XEUtils.get(query, 'speedBarDisplay', 3));
|
|
|
- urlQuery.refresh = XEUtils.toNumber(XEUtils.get(query, 'refresh', 30));
|
|
|
- allWards.value = await getAllWards() as any
|
|
|
- await sleep(500)
|
|
|
- const ward = XEUtils.get(query, 'ward', '') as string
|
|
|
- handleWardChange(ward)
|
|
|
- })
|
|
|
-
|
|
|
- return {
|
|
|
- data,
|
|
|
- allWards,
|
|
|
- huliData,
|
|
|
- handleWardChange,
|
|
|
- selectRef,
|
|
|
- time,
|
|
|
- infoEl,
|
|
|
- dvTableData,
|
|
|
- changeInterval,
|
|
|
- urlQuery,
|
|
|
- handleRefresh,
|
|
|
- bedCount,
|
|
|
- mutation
|
|
|
- }
|
|
|
-}
|
|
|
+ if (value.nursingLevel) {
|
|
|
+ name = value.nursingLevel;
|
|
|
+ }
|
|
|
|
|
|
+ if (value.sickLevelOrderName) {
|
|
|
+ name = value.sickLevelOrderName;
|
|
|
+ }
|
|
|
|
|
|
-class InpatientBoardClass {
|
|
|
- Return = useInpatientBoard()
|
|
|
+ if (name) {
|
|
|
+ // @ts-ignore
|
|
|
+ huliData.value[name] = (huliData.value[name] ?? 0) + 1;
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ function changeInterval() {
|
|
|
+ 滚动分组();
|
|
|
+ changeRouterQuery();
|
|
|
+ }
|
|
|
+
|
|
|
+ const mutation = {
|
|
|
+ boardStart: (value: any[]): Promise<void> | number => 0,
|
|
|
+ };
|
|
|
+
|
|
|
+ onMounted(async () => {
|
|
|
+ const query = router.currentRoute.value.query;
|
|
|
+ urlQuery.speedBarDisplay = XEUtils.toNumber(
|
|
|
+ XEUtils.get(query, "speedBarDisplay", 3)
|
|
|
+ );
|
|
|
+ urlQuery.refresh = XEUtils.toNumber(XEUtils.get(query, "refresh", 30));
|
|
|
+ allWards.value = (await getAllWards()) as any;
|
|
|
+ await sleep(500);
|
|
|
+ const ward = XEUtils.get(query, "ward", "") as string;
|
|
|
+ handleWardChange(ward);
|
|
|
+ });
|
|
|
+
|
|
|
+ return {
|
|
|
+ data,
|
|
|
+ allWards,
|
|
|
+ huliData,
|
|
|
+ handleWardChange,
|
|
|
+ selectRef,
|
|
|
+ time,
|
|
|
+ infoEl,
|
|
|
+ dvTableData,
|
|
|
+ changeInterval,
|
|
|
+ urlQuery,
|
|
|
+ bedCount,
|
|
|
+ mutation,
|
|
|
+ callStore,
|
|
|
+ };
|
|
|
}
|
|
|
|
|
|
-export type InpatientBoardType = InpatientBoardClass['Return']
|
|
|
-
|
|
|
-interface Key {
|
|
|
- store: InpatientBoardType
|
|
|
-}
|
|
|
+export type InpatientBoardType = ReturnType<typeof useInpatientBoard>;
|
|
|
|
|
|
-export const InpatientBoardKey: InjectionKey<Key> =
|
|
|
- Symbol('systemConfigKey')
|
|
|
+export const InpatientBoardKey = "inpatientBoardV2";
|