* добавил исход спец контингенту
* оптимизация обновления при редактировании спец контингента * добавил поддержку заключительных диагнозов * изменил определение законченной операции * добавил поддержку исхода операции * добавил определение отмены для операции через назначение * работа над диапазонами календарей, подсчет статистики * добавил статусы отчетов и подкорректировал привязку спец контингента к отчету * добавил новые сервисы для будущего кеширования * частичное разделение логики подсчета пациентов
This commit is contained in:
@@ -27,6 +27,8 @@ const form = reactive({
|
||||
birth_date: null,
|
||||
admitted_at: null,
|
||||
patient_kind: 'plan',
|
||||
manual_status: 'current',
|
||||
outcome_at: null,
|
||||
diagnosis_code: '',
|
||||
diagnosis_name: '',
|
||||
})
|
||||
@@ -56,6 +58,12 @@ const patientKindOptions = [
|
||||
{label: 'Экстренно', value: 'emergency'},
|
||||
]
|
||||
|
||||
const manualStatusOptions = [
|
||||
{label: 'Состоит', value: 'current'},
|
||||
{label: 'Выписан', value: 'discharged'},
|
||||
{label: 'Умер', value: 'deceased'},
|
||||
]
|
||||
|
||||
const normalizeSpaces = (value) => value.replace(/\s+/g, ' ').trim()
|
||||
const pad = (value) => String(value).padStart(2, '0')
|
||||
const formatLocalDate = (timestamp) => {
|
||||
@@ -76,6 +84,11 @@ const parseDateToTimestamp = (value) => {
|
||||
}
|
||||
const parseDateTimeToTimestamp = (value) => {
|
||||
if (!value) return null
|
||||
const nativeDate = new Date(value)
|
||||
if (!Number.isNaN(nativeDate.getTime())) {
|
||||
return nativeDate.getTime()
|
||||
}
|
||||
|
||||
const [datePart, timePart] = String(value).split(' ')
|
||||
const dateTimestamp = parseDateToTimestamp(datePart)
|
||||
if (!dateTimestamp) return null
|
||||
@@ -90,6 +103,8 @@ const hydrateForm = () => {
|
||||
form.birth_date = parseDateToTimestamp(props.patient?.birth_date)
|
||||
form.admitted_at = parseDateTimeToTimestamp(props.patient?.admitted_at)
|
||||
form.patient_kind = props.patient?.patient_kind ?? 'plan'
|
||||
form.manual_status = props.patient?.outcome_type ?? 'current'
|
||||
form.outcome_at = parseDateTimeToTimestamp(props.patient?.outcome_date)
|
||||
form.diagnosis_code = props.patient?.mkb?.ds ?? ''
|
||||
form.diagnosis_name = props.patient?.mkb?.name ?? ''
|
||||
|
||||
@@ -179,11 +194,21 @@ const submit = async () => {
|
||||
birth_date: formatLocalDate(form.birth_date),
|
||||
admitted_at: form.admitted_at ? formatLocalDateTime(form.admitted_at) : null,
|
||||
patient_kind: form.patient_kind,
|
||||
manual_status: form.manual_status,
|
||||
outcome_at: form.manual_status === 'current'
|
||||
? null
|
||||
: (form.outcome_at ? formatLocalDateTime(form.outcome_at) : null),
|
||||
diagnosis_code: form.diagnosis_code ? normalizeSpaces(form.diagnosis_code).toUpperCase() : null,
|
||||
diagnosis_name: form.diagnosis_name ? normalizeSpaces(form.diagnosis_name) : null,
|
||||
},
|
||||
{
|
||||
reloadStatuses: [props.sourceStatus, `special-${form.patient_kind}`],
|
||||
reloadStatuses: [
|
||||
props.sourceStatus,
|
||||
`special-${form.patient_kind}`,
|
||||
'special-outcome-discharged',
|
||||
'special-outcome-deceased',
|
||||
'special-outcome-transferred',
|
||||
],
|
||||
}
|
||||
)
|
||||
|
||||
@@ -204,12 +229,18 @@ const submit = async () => {
|
||||
<NFormItem label="Тип пациента" path="patient_kind">
|
||||
<NSelect v-model:value="form.patient_kind" :options="patientKindOptions" />
|
||||
</NFormItem>
|
||||
<NFormItem label="Статус">
|
||||
<NSelect v-model:value="form.manual_status" :options="manualStatusOptions" />
|
||||
</NFormItem>
|
||||
<NFormItem label="Дата рождения" path="birth_date">
|
||||
<NDatePicker v-model:value="form.birth_date" type="date" class="w-full" />
|
||||
</NFormItem>
|
||||
<NFormItem label="Дата и время поступления">
|
||||
<NDatePicker v-model:value="form.admitted_at" type="datetime" class="w-full" clearable />
|
||||
</NFormItem>
|
||||
<NFormItem v-if="form.manual_status !== 'current'" label="Дата и время исхода">
|
||||
<NDatePicker v-model:value="form.outcome_at" type="datetime" class="w-full" clearable />
|
||||
</NFormItem>
|
||||
<NFormItem label="Диагноз (МКБ)">
|
||||
<NSelect
|
||||
v-model:value="form.diagnosis_code"
|
||||
|
||||
Reference in New Issue
Block a user