Update Formularium

This commit is contained in:
2022-08-15 12:42:49 +07:00
parent 8319331d26
commit a3b53ea334
65 changed files with 3218 additions and 52 deletions

11
app/Models/Brand.php Normal file
View File

@@ -0,0 +1,11 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Brand extends Model
{
use HasFactory;
}

18
app/Models/Category.php Normal file
View File

@@ -0,0 +1,18 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Category extends Model
{
use HasFactory;
protected $fillable = [
'parent_id',
'code',
'name',
'type',
];
}

View File

@@ -0,0 +1,30 @@
<?php
namespace App\Models;
use App\Traits\Blameable;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
class CorporateFormularium extends Model
{
use HasFactory, SoftDeletes, Blameable;
protected $table = 'corporate_formulariums';
protected $fillable = [
'corporate_id',
'formularium_id'
];
public function corporate()
{
return $this->belongsTo(Corporate::class);
}
public function formularium()
{
return $this->belongsTo(Formularium::class);
}
}

66
app/Models/Drug.php Normal file
View File

@@ -0,0 +1,66 @@
<?php
namespace App\Models;
use App\Traits\Blameable;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
class Drug extends Model
{
use HasFactory, SoftDeletes, Blameable;
protected $fillable = [
'name',
'generic_name',
'code',
'description',
'brand_id',
'mims_class',
'indication',
'atc_code',
'segmentation',
'type',
'dosage',
'remark',
'selling_unit_id',
'status'
];
public function categories()
{
return $this->hasMany(DrugCategories::class, 'drug_id');
}
// public function externalIdentifiers()
// {
// return $this->hasMany(DrugExternalIdentifier::class, 'drug_id');
// }
public function brand()
{
return $this->belongsTo(Brand::class, 'brand_id');
}
public function identifiers()
{
return $this->morphMany(Identifier::class, 'identifiable');
}
public function manufacturers()
{
return $this->belongsToMany(Organization::class, 'drug_manufacturers', 'drug_id', 'organization_id');
}
public function scopeFilter($query, Array $filters)
{
$query->when($filters['search'] ?? false, function ($query, $search) {
return $query
->where('code', 'like', "%" . $search . "%")
->orWhere('name', 'like', "%" . $search . "%")
->orWhere('type', 'like', "%" . $search . "%")
;
});
}
}

11
app/Models/DrugAtc.php Normal file
View File

@@ -0,0 +1,11 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class DrugAtc extends Model
{
use HasFactory;
}

View File

@@ -0,0 +1,26 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class DrugCategory extends Model
{
use HasFactory;
protected $fillable = [
'drug_id',
'category_id'
];
public function drug()
{
return $this->belongsTo(Drug::class, 'drug_id');
}
public function category()
{
return $this->belongsTo(Category::class, 'category_id');
}
}

View File

@@ -0,0 +1,11 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class DrugComposition extends Model
{
use HasFactory;
}

View File

@@ -0,0 +1,17 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class DrugExternalIdentifier extends Model
{
use HasFactory;
protected $fillable = [
'drug_id',
'identifier',
'identifier_type'
];
}

View File

@@ -0,0 +1,11 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class DrugIdentifier extends Model
{
use HasFactory;
}

View File

@@ -0,0 +1,11 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class DrugSellingUnit extends Model
{
use HasFactory;
}

11
app/Models/DrugUnit.php Normal file
View File

@@ -0,0 +1,11 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class DrugUnit extends Model
{
use HasFactory;
}

View File

@@ -0,0 +1,46 @@
<?php
namespace App\Models;
use App\Traits\Blameable;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
use Illuminate\Support\Str;
class Formularium extends Model
{
use HasFactory, SoftDeletes, Blameable;
protected $table = 'formulariums';
protected $fillable = [
'code',
'name',
];
public function setCodeAttribute($value)
{
$this->attributes['code'] = !empty($value) ? $value : Str::upper(Str::random('6'));
}
public function corporateFormulariums()
{
return $this->hasMany(CorporateFormularium::class);
}
public function items()
{
return $this->belongsToMany(Drug::class, 'formularium_items', 'formularium_id', 'item_id');
}
public function scopeFilter($query, Array $filters)
{
$query->when($filters['search'] ?? false, function ($query, $search) {
return $query
->where('code', 'like', "%" . $search . "%")
->orWhere('name', 'like', "%" . $search . "%")
;
});
}
}

View File

@@ -0,0 +1,11 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class FormulariumItem extends Model
{
use HasFactory;
}

26
app/Models/Identifier.php Normal file
View File

@@ -0,0 +1,26 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Identifier extends Model
{
use HasFactory;
protected $fillable = [
'use',
'type',
'system',
'value',
'period_start',
'period_end',
'assigner',
];
public function identifiable()
{
return $this->morphTo();
}
}

11
app/Models/Ingredient.php Normal file
View File

@@ -0,0 +1,11 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Ingredient extends Model
{
use HasFactory;
}

View File

@@ -0,0 +1,15 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Organization extends Model
{
use HasFactory;
protected $fillable = [
'name',
];
}

11
app/Models/Unit.php Normal file
View File

@@ -0,0 +1,11 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Unit extends Model
{
use HasFactory;
}