* оптимизировал запросы выдачи пациентов, сохранения снапшотов

* доработал страницу отчета дежурного
* переделал "действия" над пациентом
* подключил виджеты на странице отчета дежурного
This commit is contained in:
brusnitsyn
2026-05-08 17:04:56 +09:00
parent 6cf1ffbb2b
commit 90e0d04dfd
17 changed files with 818 additions and 292 deletions

View File

@@ -0,0 +1,200 @@
import {format, formatDistanceStrict} from "date-fns";
import {ru} from "date-fns/locale";
import {h} from "vue";
import TooltipColumn from "../Pages/Report/Components/DataTableColumns/TooltipColumn.vue";
import OperationsColumn from "../Pages/Report/Components/DataTableColumns/OperationsColumn.vue";
import ActionsColumn from "../Pages/Report/Components/DataTableColumns/ActionsColumn.vue";
export const usePatientColumns = (actionHandlers = {}) => {
const { onMisClick, onAddObservable, onAddObservableComment, onRemoveObservable, onShowOperationModal } = actionHandlers
const defaultColumns = [
{
title: 'ФИО',
key: 'full_name',
width: 280
},
{
title: 'Возраст',
key: 'birth_date',
render: (row) => formatDistanceStrict(new Date(row.birth_date), new Date(), { locale: ru }),
width: 75,
},
{
title: 'Д/р',
key: 'birth_date',
minWidth: 94,
maxWidth: 100,
width: 94,
resizable: false,
render: (row) => format(new Date(row.birth_date), 'dd.MM.yyyy')
},
{
title: 'Д/п',
key: 'latest_migration.ingoing_date',
minWidth: 134,
maxWidth: 144,
width: 134,
resizable: false,
render: (row) => format(new Date(row.latest_migration.ingoing_date), 'dd.MM.yyyy HH:mm')
},
{
title: 'Диагноз',
key: 'latest_migration.diagnosis_code',
width: 75,
resizable: false,
render: (row) => h(TooltipColumn, { triggerText: row.latest_migration.diagnosis_code, contentText: row.latest_migration.diagnosis_name })
},
{
title: 'Операции',
key: 'latest_migration.operations',
width: 140,
className: 'relative',
render: (row) => h(OperationsColumn, { operations: row.latest_migration.operations, onClick: (operations) => onShowOperationModal(operations) })
},
]
const planOrEmergencyColumns = [
...defaultColumns,
{
title: '',
key: 'actions',
align: 'end',
render: (row) => {
return h(
ActionsColumn,
{
row: row,
isMis: true,
isAddObservable: true,
onMisClick,
onAddObservable,
onAddObservableComment,
onRemoveObservable,
}
)
}
}
]
const observableColumns = [
...defaultColumns,
{
title: '',
key: 'actions',
align: 'end',
render: (row) => {
return h(
ActionsColumn,
{
row: row,
isMis: true,
isAddObservableComment: true,
isRemoveObservable: true,
onMisClick,
onAddObservable,
onAddObservableComment,
onRemoveObservable,
}
)
}
}
]
const reanimationColumns = [
...defaultColumns,
{
title: '',
key: 'actions',
align: 'end',
render: (row) => {
return h(
ActionsColumn,
{
row: row,
isMis: true,
onMisClick,
onAddObservable,
onAddObservableComment,
onRemoveObservable,
}
)
}
}
]
const deceasedColumns = [
...defaultColumns,
{
title: '',
key: 'actions',
align: 'end',
render: (row) => {
return h(
ActionsColumn,
{
row: row,
isMis: true,
onMisClick,
onAddObservable,
onAddObservableComment,
onRemoveObservable,
}
)
}
}
]
const dischargedColumns = [
...defaultColumns,
{
title: '',
key: 'actions',
align: 'end',
render: (row) => {
return h(
ActionsColumn,
{
row: row,
isMis: true,
onMisClick,
onAddObservable,
onAddObservableComment,
onRemoveObservable,
}
)
}
}
]
const transferredColumns = [
...defaultColumns,
{
title: '',
key: 'actions',
align: 'end',
render: (row) => {
return h(
ActionsColumn,
{
row: row,
isMis: true,
onMisClick,
onAddObservable,
onAddObservableComment,
onRemoveObservable,
}
)
}
}
]
return {
planOrEmergencyColumns,
observableColumns,
reanimationColumns,
dischargedColumns,
deceasedColumns,
transferredColumns
}
}