Files
onboard/resources/js/Composables/usePatientColumns.js
brusnitsyn 739168d427 Обновлен стартовый экран
Переписаны запросы для статистики, отчетов
Добавлена интеграция отчета сестры
2026-05-28 22:10:00 +09:00

180 lines
5.5 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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 = {}, options = {}) => {
const { onMisClick, onAddObservable, onAddObservableComment, onRemoveObservable, onShowOperationModal } = actionHandlers
const { canEditObservable } = options
const getCanEditObservable = () => {
if (canEditObservable == null) return true
if (typeof canEditObservable === 'object' && 'value' in canEditObservable) return canEditObservable.value
return Boolean(canEditObservable)
}
const defaultColumns = [
{
title: 'ФИО',
key: 'full_name',
width: 280,
ellipsis: {
tooltip: {
arrow: false
}
}
},
{
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.migrations[0].ingoing_date), 'dd.MM.yyyy HH:mm')
},
{
title: 'Диагноз',
key: 'latest_migration.diagnosis_code',
width: 75,
resizable: false,
render: (row) => h(TooltipColumn, { triggerText: row.migrations[0].diagnosis_code, contentText: row.migrations[0].diagnosis_name })
},
{
title: 'Операции',
key: 'latest_migration.operations',
width: 140,
className: 'relative',
render: (row) => h(OperationsColumn, { patient: row, operations: row.operations, onClick: (patient, operations) => onShowOperationModal(patient, operations) })
},
]
const planOrEmergencyColumns = [
...defaultColumns,
{
title: '',
key: 'actions',
align: 'end',
render: (row) => {
const canEdit = getCanEditObservable()
return h(
ActionsColumn,
{
row: row,
isMis: true,
isAddObservable: canEdit && row.in_observable === false,
onMisClick,
onAddObservable,
onAddObservableComment,
onRemoveObservable,
}
)
}
}
]
const observableColumns = [
...defaultColumns,
{
title: '',
key: 'actions',
align: 'end',
render: (row) => {
const canEdit = getCanEditObservable()
return h(
ActionsColumn,
{
row: row,
isMis: true,
isAddObservableComment: canEdit,
isRemoveObservable: canEdit,
onMisClick,
onAddObservable,
onAddObservableComment,
onRemoveObservable,
}
)
}
}
]
const reanimationColumns = [
...defaultColumns,
{
title: '',
key: 'actions',
align: 'end',
render: (row) => {
const canEdit = getCanEditObservable()
return h(
ActionsColumn,
{
row: row,
isMis: true,
isAddObservable: canEdit && row.in_observable === false,
onMisClick,
onAddObservable,
onAddObservableComment,
onRemoveObservable,
}
)
}
}
]
const deceasedColumns = [
...defaultColumns,
{
title: '',
key: 'actions',
align: 'end',
render: (row) => h(ActionsColumn, { row, isMis: true, onMisClick })
}
]
const dischargedColumns = [
...defaultColumns,
{
title: '',
key: 'actions',
align: 'end',
render: (row) => h(ActionsColumn, { row, isMis: true, onMisClick })
}
]
const transferredColumns = [
...defaultColumns,
{
title: '',
key: 'actions',
align: 'end',
render: (row) => h(ActionsColumn, { row, isMis: true, onMisClick })
}
]
return {
planOrEmergencyColumns,
observableColumns,
reanimationColumns,
dischargedColumns,
deceasedColumns,
transferredColumns
}
}