Обновление отчета
This commit is contained in:
@@ -136,9 +136,20 @@ class ReportController extends Controller
|
||||
->map(function ($item, $index) {
|
||||
$item->num = $index + 1;
|
||||
return $item;
|
||||
});;
|
||||
});
|
||||
} else if ($status === 'observation') {
|
||||
$patients = ObservationPatient::with(['history'])
|
||||
->where('rf_department_id', $misDepartmentId)
|
||||
->history;
|
||||
} else if ($status === 'deceased') {
|
||||
|
||||
$patients = MisMedicalHistory::select(...$model->getFillable())
|
||||
->deceased()
|
||||
->inDepartment($misDepartmentId, $startDate, $endDate)
|
||||
->get()
|
||||
->map(function ($item, $index) {
|
||||
$item->num = $index + 1;
|
||||
return $item;
|
||||
});
|
||||
}
|
||||
|
||||
$patients->load(['migrations' => function ($query) use ($startDate, $endDate, $misStationarBranchId) {
|
||||
|
||||
@@ -26,7 +26,8 @@ class StatisticController extends Controller
|
||||
|
||||
$data = [];
|
||||
|
||||
$departments = Department::select('department_id', 'name_short')->get();
|
||||
$departments = Department::select('department_id', 'name_short')
|
||||
->orderBy('name_short')->get();
|
||||
|
||||
foreach ($departments as $department) {
|
||||
$allCount = MetrikaResult::whereHas('report', function ($query) use ($userDepartment, $department) {
|
||||
|
||||
@@ -21,8 +21,8 @@ class FormattedPatientResource extends JsonResource
|
||||
'num' => $this->num,
|
||||
'mkb' => $this->whenLoaded('migrations', function () {
|
||||
return [
|
||||
'ds' => $this->migrations()->first()->diagnosis()->first()->mkb()->first()->DS ?? null,
|
||||
'name' => $this->migrations()->first()->diagnosis()->first()->mkb()->first()->NAME ?? null,
|
||||
'ds' => $this->migrations()->first()->diagnosis()->first()?->mkb()->first()->DS ?? null,
|
||||
'name' => $this->migrations()->first()->diagnosis()->first()?->mkb()->first()->NAME ?? null,
|
||||
];
|
||||
}),
|
||||
'fullname' => Str::ucwords(Str::lower("$this->FAMILY $this->Name $this->OT")),
|
||||
|
||||
@@ -40,6 +40,14 @@ class MisMedicalHistory extends Model
|
||||
return $this->where('rf_EmerSignID', 2);
|
||||
}
|
||||
|
||||
/*
|
||||
* Истории с результатом - Умер
|
||||
*/
|
||||
public function scopeDeceased()
|
||||
{
|
||||
return $this->where('rf_kl_VisitResultID', 5);
|
||||
}
|
||||
|
||||
/*
|
||||
* Движения истории
|
||||
*/
|
||||
|
||||
@@ -15,4 +15,9 @@ class ObservationPatient extends Model
|
||||
'rf_department_id',
|
||||
'rf_report_id',
|
||||
];
|
||||
|
||||
public function history()
|
||||
{
|
||||
return $this->belongsTo(MisMedicalHistory::class, 'rf_medicalhistory_id', 'MedicalHistoryID');
|
||||
}
|
||||
}
|
||||
|
||||
@@ -105,7 +105,7 @@ class TestDepartmentDataSeeder extends Seeder
|
||||
DepartmentMetrikaDefault::create([
|
||||
'rf_department_id' => 2,
|
||||
'rf_metrika_item_id' => 1,
|
||||
'value' => '45'
|
||||
'value' => '42'
|
||||
]);
|
||||
DepartmentMetrikaDefault::create([
|
||||
'rf_department_id' => 3,
|
||||
@@ -135,17 +135,17 @@ class TestDepartmentDataSeeder extends Seeder
|
||||
DepartmentMetrikaDefault::create([
|
||||
'rf_department_id' => 8,
|
||||
'rf_metrika_item_id' => 1,
|
||||
'value' => '50'
|
||||
'value' => '48'
|
||||
]);
|
||||
DepartmentMetrikaDefault::create([
|
||||
'rf_department_id' => 9,
|
||||
'rf_metrika_item_id' => 1,
|
||||
'value' => '50'
|
||||
'value' => '27'
|
||||
]);
|
||||
DepartmentMetrikaDefault::create([
|
||||
'rf_department_id' => 10,
|
||||
'rf_metrika_item_id' => 1,
|
||||
'value' => '55'
|
||||
'value' => '58'
|
||||
]);
|
||||
DepartmentMetrikaDefault::create([
|
||||
'rf_department_id' => 11,
|
||||
|
||||
@@ -41,7 +41,7 @@ const currentDate = computed(() => {
|
||||
:icon="TbArticle"
|
||||
/>
|
||||
<StartButton title="Статистика моего отделения"
|
||||
:description="`Ваше отделение в системе: ${authStore.user.current_department.departmentname}`"
|
||||
:description="`Ваше отделение в системе: ${authStore.userDepartment.name_short}`"
|
||||
:href="`/statistic?sent_at=${reportStore.timestampCurrentRange}&groupId=1`"
|
||||
:icon="TbChartTreemap"
|
||||
/>
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<script setup>
|
||||
import {NCard, NFlex, NFormItem, NForm, NInputNumber} from "naive-ui";
|
||||
import {NCard, NSkeleton, NFlex, NFormItem, NForm, NInputNumber} from "naive-ui";
|
||||
import {useReportStore} from "../../../Stores/report.js";
|
||||
|
||||
const reportStore = useReportStore()
|
||||
@@ -9,6 +9,11 @@ const reportStore = useReportStore()
|
||||
<NCard>
|
||||
<NForm>
|
||||
<NFlex>
|
||||
<template v-if="reportStore.isLoadReportInfo">
|
||||
<NSkeleton class="w-[246px]! h-[60px]!" />
|
||||
<NSkeleton class="w-[246px]! h-[60px]!" />
|
||||
<NSkeleton class="w-[246px]! h-[60px]!" />
|
||||
</template>
|
||||
<template v-for="metrikaItem in reportStore.reportInfo?.metrikaItems">
|
||||
<NFormItem :label="metrikaItem.name" :show-feedback="false">
|
||||
<NInputNumber v-model:value="reportStore.reportForm[`metrika_item_${metrikaItem.metrika_item_id}`]"
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<script setup>
|
||||
import {NStatistic, NRow, NCol, NCard, NButton, NTag, NDatePicker, NFlex, NSelect, NText, NH2} from "naive-ui";
|
||||
import {NSkeleton, NStatistic, NRow, NCol, NCard, NButton, NTag, NDatePicker, NFlex, NSelect, NText, NH2} from "naive-ui";
|
||||
import {computed, ref} from "vue";
|
||||
import {format} from "date-fns";
|
||||
import {useNow} from "@vueuse/core";
|
||||
@@ -65,10 +65,20 @@ const currentDate = computed(() => {
|
||||
<NFlex justify="space-between" align="center" :wrap="false">
|
||||
<NRow class="grow">
|
||||
<NCol :span="4">
|
||||
<NStatistic label="Коек" :value="reportStore.reportInfo?.department.beds" />
|
||||
<NStatistic label="Коек">
|
||||
<template #default>
|
||||
<NSkeleton v-if="reportStore.isLoadReportInfo" round class="w-[70px]! mt-2 h-[29px]!" />
|
||||
<span v-else>{{ reportStore.reportInfo?.department.beds }}</span>
|
||||
</template>
|
||||
</NStatistic>
|
||||
</NCol>
|
||||
<NCol :span="5">
|
||||
<NStatistic label="Загруженность" :value="`${reportStore.reportInfo?.department.percentLoadedBeds}%`" />
|
||||
<NStatistic label="Загруженность">
|
||||
<template #default>
|
||||
<NSkeleton v-if="reportStore.isLoadReportInfo" round class="w-[70px]! mt-2 h-[29px]!" />
|
||||
<span v-else>{{ reportStore.reportInfo?.department.percentLoadedBeds }}%</span>
|
||||
</template>
|
||||
</NStatistic>
|
||||
</NCol>
|
||||
</NRow>
|
||||
|
||||
|
||||
@@ -107,7 +107,6 @@ const handleDrop = (e) => {
|
||||
}
|
||||
|
||||
const fetchPatients = async () => {
|
||||
if (props.status === 'plan' || props.status === 'emergency') {
|
||||
isLoading.value = true
|
||||
await axios.post('/api/mis/patients', {
|
||||
status: props.status
|
||||
@@ -116,9 +115,6 @@ const fetchPatients = async () => {
|
||||
}).finally(() => {
|
||||
isLoading.value = false
|
||||
})
|
||||
} else {
|
||||
isLoading.value = false
|
||||
}
|
||||
}
|
||||
|
||||
function rowProps(row) {
|
||||
|
||||
@@ -26,7 +26,7 @@ const columns = ref([
|
||||
},
|
||||
{
|
||||
title: 'Состояло',
|
||||
key: 'beds',
|
||||
key: '',
|
||||
width: 84,
|
||||
titleAlign: 'center',
|
||||
align: 'center'
|
||||
@@ -129,7 +129,6 @@ const columns = ref([
|
||||
<style scoped>
|
||||
:deep(.n-data-table-th),
|
||||
:deep(.n-data-table-td) {
|
||||
//white-space: nowrap !important;
|
||||
font-size: var(--n-font-size);
|
||||
}
|
||||
</style>
|
||||
|
||||
@@ -24,6 +24,7 @@ export const useReportStore = defineStore('reportStore', () => {
|
||||
const dataOnReport = ref(null)
|
||||
|
||||
const reportInfo = ref(null)
|
||||
const isLoadReportInfo = ref(false)
|
||||
|
||||
const patientColumns = [
|
||||
{
|
||||
@@ -94,9 +95,14 @@ export const useReportStore = defineStore('reportStore', () => {
|
||||
}
|
||||
|
||||
const getReportInfo = async () => {
|
||||
await axios.get('/api/report').then((res) => {
|
||||
isLoadReportInfo.value = true
|
||||
await axios.get('/api/report')
|
||||
.then((res) => {
|
||||
reportInfo.value = res.data
|
||||
})
|
||||
.finally(() => {
|
||||
isLoadReportInfo.value = false
|
||||
})
|
||||
}
|
||||
|
||||
const getDataOnReportDate = async () => {
|
||||
@@ -114,6 +120,7 @@ export const useReportStore = defineStore('reportStore', () => {
|
||||
timestampNow,
|
||||
timestampCurrent,
|
||||
timestampCurrentRange,
|
||||
isLoadReportInfo,
|
||||
dataOnReport,
|
||||
patientColumns,
|
||||
patientsData,
|
||||
|
||||
Reference in New Issue
Block a user