wip new rules engine
This commit is contained in:
parent
4c68b3626a
commit
21b24fe542
@ -2,21 +2,14 @@
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use App\Domain\Rule\MatchCondition;
|
||||
use App\Models\Traits\Active;
|
||||
use Illuminate\Database\Eloquent\Relations\BelongsTo;
|
||||
use Illuminate\Database\Eloquent\Relations\HasMany;
|
||||
use Illuminate\Database\Eloquent\Relations\HasOne;
|
||||
|
||||
class DicomRoutingRule extends BaseModel
|
||||
{
|
||||
use Active;
|
||||
|
||||
public function conditions(): HasMany
|
||||
{
|
||||
return $this->hasMany(DicomRuleCondition::class);
|
||||
}
|
||||
|
||||
public function organization(): BelongsTo
|
||||
{
|
||||
return $this->belongsTo(Organization::class);
|
||||
@ -41,7 +34,6 @@ protected function casts(): array
|
||||
{
|
||||
return [
|
||||
'is_active' => 'boolean',
|
||||
'match_condition' => MatchCondition::class,
|
||||
];
|
||||
}
|
||||
}
|
||||
|
@ -1,22 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use App\Domain\Rule\MatchMode;
|
||||
use Illuminate\Database\Eloquent\Relations\BelongsTo;
|
||||
|
||||
class DicomRuleCondition extends BaseModel
|
||||
{
|
||||
public function rule(): BelongsTo
|
||||
{
|
||||
return $this->belongsTo(DicomRoutingRule::class);
|
||||
}
|
||||
|
||||
protected function casts(): array
|
||||
{
|
||||
return [
|
||||
'case_sensitive' => 'boolean',
|
||||
'match_mode' => MatchMode::class,
|
||||
];
|
||||
}
|
||||
}
|
@ -29,6 +29,7 @@
|
||||
"sentry/sentry-laravel": "^4.10",
|
||||
"spatie/laravel-medialibrary": "^11.11",
|
||||
"spatie/laravel-permission": "^6.10",
|
||||
"symfony/expression-language": "^7.2",
|
||||
"vinkla/hashids": "^12.0",
|
||||
"yajra/laravel-datatables": "^11.0"
|
||||
},
|
||||
|
@ -1,6 +1,5 @@
|
||||
<?php
|
||||
|
||||
use App\Domain\Rule\MatchCondition;
|
||||
use App\Models\AssignmentPanel;
|
||||
use App\Models\Department;
|
||||
use App\Models\Organization;
|
||||
@ -21,7 +20,7 @@ public function up(): void
|
||||
$table->foreignIdFor(User::class)->nullable()->constrained()->nullOnDelete();
|
||||
$table->foreignIdFor(AssignmentPanel::class)->nullable()->constrained()->nullOnDelete();
|
||||
$table->string('name')->nullable();
|
||||
$table->string('match_condition')->default(MatchCondition::ANY->value);
|
||||
$table->string('condition');
|
||||
$table->unsignedTinyInteger('priority')->default(0);
|
||||
$table->timestamps();
|
||||
|
||||
|
@ -1,31 +0,0 @@
|
||||
<?php
|
||||
|
||||
use App\Domain\Rule\MatchMode;
|
||||
use App\Models\DicomRoutingRule;
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
|
||||
return new class extends Migration
|
||||
{
|
||||
public function up(): void
|
||||
{
|
||||
Schema::create('dicom_rule_conditions', function (Blueprint $table) {
|
||||
$table->id();
|
||||
$table->foreignIdFor(DicomRoutingRule::class)->constrained()->cascadeOnDelete();
|
||||
$table->string('dicom_tag');
|
||||
$table->string('search_pattern');
|
||||
$table->boolean('case_sensitive')->default(false);
|
||||
$table->string('match_mode')->default(MatchMode::Exact->value);
|
||||
$table->unsignedTinyInteger('priority')->default(0);
|
||||
$table->timestamps();
|
||||
|
||||
$table->index(['dicom_routing_rule_id', 'priority']);
|
||||
});
|
||||
}
|
||||
|
||||
public function down(): void
|
||||
{
|
||||
Schema::dropIfExists('dicom_rule_conditions');
|
||||
}
|
||||
};
|
Loading…
Reference in New Issue
Block a user