42 lines
2.0 KiB
PHP
42 lines
2.0 KiB
PHP
<?php
|
|
|
|
namespace App\Infrastructure\Database\Repositories;
|
|
|
|
use App\Domain\ReportDuty\Contracts\ReportDutyObservablePatientsInterface;
|
|
use App\Domain\ReportDuty\Models\ReportDuty;
|
|
use App\Models\ObservableMedicalHistory;
|
|
use Illuminate\Support\LazyCollection;
|
|
|
|
class ReportDutyObservablePatients implements ReportDutyObservablePatientsInterface
|
|
{
|
|
public function upsertObservations(ReportDuty $report, array $observables): ?LazyCollection
|
|
{
|
|
foreach ($observables as $observable) {
|
|
ObservableMedicalHistory::updateOrCreate([
|
|
'original_id' => $observable['original_id'] ?? $observable['id'],
|
|
'source_type' => $observable['source_type'] ?? 'mis',
|
|
'observable_in' => $observable['observable_in'] ?? $report->period_start,
|
|
], [
|
|
'source_type' => $observable['source_type'] ?? 'mis',
|
|
'original_id' => $observable['original_id'] ?? $observable['id'],
|
|
'observable_in' => $observable['observable_in'] ?? $report->period_start,
|
|
'observable_out' => $observable['observable_out'] ?? null,
|
|
'observable_reason' => $observable['observable_reason'],
|
|
'out_reason' => $observable['out_reason'] ?? null,
|
|
'medical_card_number' => $observable['medical_card_number'],
|
|
'full_name' => $observable['full_name'],
|
|
'birth_date' => $observable['birth_date'],
|
|
'recipient_date' => $observable['recipient_date'],
|
|
'extract_date' => $observable['extract_date'],
|
|
'death_date' => $observable['death_date'],
|
|
'male' => $observable['male'],
|
|
'urgency_id' => $observable['urgency_id'],
|
|
'hospital_result_id' => $observable['hospital_result_id'],
|
|
'visit_result_id' => $observable['visit_result_id'],
|
|
'comment' => $observable['observable_reason'],
|
|
'user_id' => $report->rf_user_id,
|
|
]);
|
|
}
|
|
}
|
|
}
|