diff --git a/app/Http/Controllers/Api/ReportController.php b/app/Http/Controllers/Api/ReportController.php index 7371c22..9bc96c1 100644 --- a/app/Http/Controllers/Api/ReportController.php +++ b/app/Http/Controllers/Api/ReportController.php @@ -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) { diff --git a/app/Http/Controllers/Web/StatisticController.php b/app/Http/Controllers/Web/StatisticController.php index 8234a8b..5524471 100644 --- a/app/Http/Controllers/Web/StatisticController.php +++ b/app/Http/Controllers/Web/StatisticController.php @@ -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) { diff --git a/app/Http/Resources/Mis/FormattedPatientResource.php b/app/Http/Resources/Mis/FormattedPatientResource.php index 402ebaf..a2ac102 100644 --- a/app/Http/Resources/Mis/FormattedPatientResource.php +++ b/app/Http/Resources/Mis/FormattedPatientResource.php @@ -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")), diff --git a/app/Models/MisMedicalHistory.php b/app/Models/MisMedicalHistory.php index e2ba687..8cdf51d 100644 --- a/app/Models/MisMedicalHistory.php +++ b/app/Models/MisMedicalHistory.php @@ -40,6 +40,14 @@ class MisMedicalHistory extends Model return $this->where('rf_EmerSignID', 2); } + /* + * Истории с результатом - Умер + */ + public function scopeDeceased() + { + return $this->where('rf_kl_VisitResultID', 5); + } + /* * Движения истории */ diff --git a/app/Models/ObservationPatient.php b/app/Models/ObservationPatient.php index 21f3c18..8fdd51e 100644 --- a/app/Models/ObservationPatient.php +++ b/app/Models/ObservationPatient.php @@ -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'); + } } diff --git a/database/seeders/TestDepartmentDataSeeder.php b/database/seeders/TestDepartmentDataSeeder.php index f8fac02..ad5a574 100644 --- a/database/seeders/TestDepartmentDataSeeder.php +++ b/database/seeders/TestDepartmentDataSeeder.php @@ -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, diff --git a/resources/js/Pages/Index.vue b/resources/js/Pages/Index.vue index 34ae1d1..fce6d5d 100644 --- a/resources/js/Pages/Index.vue +++ b/resources/js/Pages/Index.vue @@ -41,7 +41,7 @@ const currentDate = computed(() => { :icon="TbArticle" /> diff --git a/resources/js/Pages/Report/Components/ReportFormInput.vue b/resources/js/Pages/Report/Components/ReportFormInput.vue index 3e930f9..fb2ebfc 100644 --- a/resources/js/Pages/Report/Components/ReportFormInput.vue +++ b/resources/js/Pages/Report/Components/ReportFormInput.vue @@ -1,5 +1,5 @@ diff --git a/resources/js/Stores/report.js b/resources/js/Stores/report.js index 99290ee..9d6aa3c 100644 --- a/resources/js/Stores/report.js +++ b/resources/js/Stores/report.js @@ -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) => { - reportInfo.value = res.data - }) + 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,