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 } }