Files
aso/database/seeders/PractitionerSeeder.php
2022-09-17 00:51:02 +07:00

142 lines
5.8 KiB
PHP

<?php
namespace Database\Seeders;
use App\Models\Organization;
use App\Models\Person;
use App\Models\Practitioner;
use App\Models\PractitionerRole;
use App\Models\Speciality;
use Illuminate\Database\Console\Seeds\WithoutModelEvents;
use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\Http;
class PractitionerSeeder extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
$organizations = Organization::with(['metas'])->get();
$specialities = Speciality::pluck('id', 'name')->toArray();
foreach ($organizations as $organization) {
$response = Http::get('http://localhost:8001/temp/practitioners?code='.$organization->meta->KodeRS);
foreach ($response->json()['practitioners'] as $practitioner) {
$practitioner = json_decode(json_encode($practitioner));
if (!empty($practitioner->meta->NIK)) {
$newPerson = Person::updateOrCreate([
'nik' => $practitioner->meta->NIK
], [
'nik' => $practitioner->meta->NIK,
'name' => $practitioner->doctor->name,
'gender' => $practitioner->doctor->gender,
'birth_date' => !empty($practitioner->meta->TanggalLahir) && $practitioner->meta->TanggalLahir != '0000-00-00' ? $practitioner->meta->TanggalLahir : null,
]);
} else {
$newPerson = Person::create([
'name' => $practitioner->doctor->name,
'gender' => $practitioner->doctor->gender,
'birth_date' => !empty($practitioner->meta->TanggalLahir) && $practitioner->meta->TanggalLahir != '0000-00-00' ? $practitioner->meta->TanggalLahir : null,
]);
}
$newPerson->addresses()->create([
'use' => 'both',
'type' => 'physical',
'text' => $practitioner->doctor->address,
]);
$newPractitioner = Practitioner::updateOrCreate([
'person_id' => $newPerson->id
],[
'person_id' => $newPerson->id
]);
$newPractitioner->metas()->create([
'system' => 'default',
'type' => 'medical_treatment',
'value' => $practitioner->doctor->meta->MedicalTreatment ?? null,
]);
$newPractitioner->metas()->create([
'system' => 'default',
'type' => 'education',
'value' => $practitioner->doctor->meta->Education ?? null,
]);
$newPractitioner->metas()->create([
'system' => 'default',
'type' => 'award',
'value' => $practitioner->doctor->meta->Award ?? null,
]);
$newPractitioner->metas()->create([
'system' => 'default',
'type' => 'work_experience',
'value' => $practitioner->doctor->meta->WorkExperience ?? null,
]);
$newPractitioner->metas()->create([
'system' => 'primaya-his',
'type' => 'alias',
'value' => $practitioner->meta->Sapaan ?? null,
]);
$newPractitioner->metas()->create([
'system' => 'primaya-his',
'type' => 'Keilmuan',
'value' => $practitioner->meta->Keilmuan ?? null,
]);
$newPractitioner->metas()->create([
'system' => 'primaya-his',
'type' => 'description',
'value' => $practitioner->doctor->description ?? null,
]);
$newPractitionerRole = PractitionerRole::create([
'practitioner_id' => $newPractitioner->id,
'organization_id' => $organization->id,
'speciality_id' => $practitioner->speciality ? ($specialities[$practitioner->speciality->name] ?? null) : null,
'active' => 1,
]);
if (empty($newPractitionerRole->speciality_id)) {
$newPractitionerRole->metas()->updateOrCreate([
'type' => 'speciality_code',
],[
'system' => 'default',
'type' => 'speciality_code',
'value' => $practitioner->speciality->code ?? null,
]);
$newPractitionerRole->metas()->updateOrCreate([
'type' => 'speciality',
],[
'system' => 'default',
'type' => 'speciality',
'value' => $practitioner->speciality->name ?? null,
]);
$newPractitionerRole->metas()->updateOrCreate([
'type' => 'speciality_image',
],[
'system' => 'default',
'type' => 'speciality_image',
'value' => $practitioner->speciality->name ?? null,
]);
}
$newPractitionerRole->metas()->updateOrCreate([
'type' => 'primaya-his',
'type' => 'DokterID',
],[
'system' => 'primaya-his',
'type' => 'DokterID',
'value' => $practitioner->meta->DokterID ?? null,
]);
}
}
}
}