wip
This commit is contained in:
parent
dd7c59498b
commit
0593602452
@ -8,5 +8,6 @@ enum MatchMode: string
|
|||||||
case Contains = 'CONTAINS';
|
case Contains = 'CONTAINS';
|
||||||
case StartsWith = 'STARTS_WITH';
|
case StartsWith = 'STARTS_WITH';
|
||||||
case EndsWith = 'ENDS_WITH';
|
case EndsWith = 'ENDS_WITH';
|
||||||
|
case InArray = 'IN_ARRAY';
|
||||||
case Regex = 'REGEX';
|
case Regex = 'REGEX';
|
||||||
}
|
}
|
||||||
|
@ -8,7 +8,7 @@
|
|||||||
{
|
{
|
||||||
public function up(): void
|
public function up(): void
|
||||||
{
|
{
|
||||||
Schema::create('institutes', static function (Blueprint $table) {
|
Schema::create('organizations', static function (Blueprint $table) {
|
||||||
$table->id();
|
$table->id();
|
||||||
$table->string('guid', 40)->unique()->index()->default(DB::raw("concat('INS-', gen_random_uuid())"));
|
$table->string('guid', 40)->unique()->index()->default(DB::raw("concat('INS-', gen_random_uuid())"));
|
||||||
$table->string('name')->unique();
|
$table->string('name')->unique();
|
||||||
@ -21,6 +21,6 @@ public function up(): void
|
|||||||
|
|
||||||
public function down(): void
|
public function down(): void
|
||||||
{
|
{
|
||||||
Schema::dropIfExists('institutes');
|
Schema::dropIfExists('organizations');
|
||||||
}
|
}
|
||||||
};
|
};
|
@ -1,5 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
|
use App\Models\Organization;
|
||||||
use Illuminate\Database\Migrations\Migration;
|
use Illuminate\Database\Migrations\Migration;
|
||||||
use Illuminate\Database\Schema\Blueprint;
|
use Illuminate\Database\Schema\Blueprint;
|
||||||
use Illuminate\Support\Facades\Schema;
|
use Illuminate\Support\Facades\Schema;
|
||||||
@ -8,20 +9,21 @@
|
|||||||
{
|
{
|
||||||
public function up(): void
|
public function up(): void
|
||||||
{
|
{
|
||||||
Schema::create('facilities', static function (Blueprint $table) {
|
Schema::create('departments', static function (Blueprint $table) {
|
||||||
$table->id();
|
$table->id();
|
||||||
$table->string('guid', 40)->unique()->index()->default(DB::raw("concat('FAC-', gen_random_uuid())"));
|
$table->string('guid', 40)->unique()->index()->default(DB::raw("concat('FAC-', gen_random_uuid())"));
|
||||||
$table->boolean('is_active')->default(false);
|
$table->boolean('is_active')->default(false)->index();
|
||||||
$table->foreignId('institute_id')->constrained('institutes')->cascadeOnDelete();
|
$table->foreignIdFor(Organization::class)->constrained()->cascadeOnDelete();
|
||||||
$table->string('name');
|
$table->string('name');
|
||||||
$table->timestamps();
|
$table->timestamps();
|
||||||
|
|
||||||
$table->unique(['institute_id', 'name']);
|
$table->unique(['organization_id', 'name']);
|
||||||
|
$table->index(['organization_id', 'is_active']);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
public function down(): void
|
public function down(): void
|
||||||
{
|
{
|
||||||
Schema::dropIfExists('facilities');
|
Schema::dropIfExists('departments');
|
||||||
}
|
}
|
||||||
};
|
};
|
@ -20,7 +20,7 @@ public function up(): void
|
|||||||
$table->foreignIdFor(Department::class)->nullable()->constrained()->cascadeOnDelete();
|
$table->foreignIdFor(Department::class)->nullable()->constrained()->cascadeOnDelete();
|
||||||
$table->foreignIdFor(User::class)->nullable()->constrained()->nullOnDelete();
|
$table->foreignIdFor(User::class)->nullable()->constrained()->nullOnDelete();
|
||||||
$table->foreignIdFor(AssignmentPanel::class)->nullable()->constrained()->nullOnDelete();
|
$table->foreignIdFor(AssignmentPanel::class)->nullable()->constrained()->nullOnDelete();
|
||||||
$table->string('description')->nullable();
|
$table->string('name')->nullable();
|
||||||
$table->string('match_condition')->default(MatchCondition::ANY->value);
|
$table->string('match_condition')->default(MatchCondition::ANY->value);
|
||||||
$table->unsignedTinyInteger('priority')->default(0);
|
$table->unsignedTinyInteger('priority')->default(0);
|
||||||
$table->timestamps();
|
$table->timestamps();
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
use App\Domain\Rule\MatchMode;
|
use App\Domain\Rule\MatchMode;
|
||||||
|
use App\Models\DicomRoutingRule;
|
||||||
use Illuminate\Database\Migrations\Migration;
|
use Illuminate\Database\Migrations\Migration;
|
||||||
use Illuminate\Database\Schema\Blueprint;
|
use Illuminate\Database\Schema\Blueprint;
|
||||||
use Illuminate\Support\Facades\Schema;
|
use Illuminate\Support\Facades\Schema;
|
||||||
@ -11,7 +12,7 @@ public function up(): void
|
|||||||
{
|
{
|
||||||
Schema::create('dicom_rule_conditions', function (Blueprint $table) {
|
Schema::create('dicom_rule_conditions', function (Blueprint $table) {
|
||||||
$table->id();
|
$table->id();
|
||||||
$table->foreignId('dicom_routing_rule_id')->constrained()->cascadeOnDelete();
|
$table->foreignIdFor(DicomRoutingRule::class)->constrained()->cascadeOnDelete();
|
||||||
$table->string('dicom_tag');
|
$table->string('dicom_tag');
|
||||||
$table->string('search_pattern');
|
$table->string('search_pattern');
|
||||||
$table->boolean('case_sensitive')->default(false);
|
$table->boolean('case_sensitive')->default(false);
|
||||||
@ -19,7 +20,7 @@ public function up(): void
|
|||||||
$table->unsignedTinyInteger('priority')->default(0);
|
$table->unsignedTinyInteger('priority')->default(0);
|
||||||
$table->timestamps();
|
$table->timestamps();
|
||||||
|
|
||||||
$table->index(['dicom_mapping_rules_id', 'priority']);
|
$table->index(['dicom_routing_rule_id', 'priority']);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2,12 +2,15 @@
|
|||||||
|
|
||||||
namespace Database\Seeders;
|
namespace Database\Seeders;
|
||||||
|
|
||||||
|
use App\Domain\Rule\MatchCondition;
|
||||||
use App\Domain\Rule\MatchMode;
|
use App\Domain\Rule\MatchMode;
|
||||||
use App\Models\Department;
|
use App\Models\Department;
|
||||||
|
use App\Models\DicomRoutingRule;
|
||||||
|
use App\Models\DicomRuleCondition;
|
||||||
use App\Models\DicomServer;
|
use App\Models\DicomServer;
|
||||||
use App\Models\Organization;
|
use App\Models\Organization;
|
||||||
|
use App\Services\StudyRouter\DicomTagIdentifiers;
|
||||||
use Illuminate\Database\Seeder;
|
use Illuminate\Database\Seeder;
|
||||||
use Illuminate\Support\Facades\DB;
|
|
||||||
|
|
||||||
class InstituteSeeder extends Seeder
|
class InstituteSeeder extends Seeder
|
||||||
{
|
{
|
||||||
@ -34,28 +37,81 @@ public function run(): void
|
|||||||
[
|
[
|
||||||
'is_active' => true,
|
'is_active' => true,
|
||||||
'name' => 'Chevron XR',
|
'name' => 'Chevron XR',
|
||||||
'institute_id' => $chev->id,
|
'organization_id' => $chev->id,
|
||||||
|
]
|
||||||
|
);
|
||||||
|
$chev_dep_ct_mr = Department::create(
|
||||||
|
[
|
||||||
|
'is_active' => true,
|
||||||
|
'name' => 'Chevron CT/MR',
|
||||||
|
'organization_id' => $chev->id,
|
||||||
]
|
]
|
||||||
);
|
);
|
||||||
$cmch_mr = Department::create(
|
$cmch_mr = Department::create(
|
||||||
[
|
[
|
||||||
'is_active' => false,
|
'is_active' => false,
|
||||||
'name' => 'CMCH MR',
|
'name' => 'CMCH MR',
|
||||||
'institute_id' => $cmch->id,
|
'organization_id' => $cmch->id,
|
||||||
]
|
]
|
||||||
);
|
);
|
||||||
|
|
||||||
DB::table('dicom_mapping_rules')->insert([
|
$rul_chev_mr = DicomRoutingRule::create(
|
||||||
'dicom_tag' => 'InstitutionName',
|
[
|
||||||
'name' => 'CHEVRON CLINICAL LABORATORY , PANCHLAISH,CTG',
|
'is_active' => true,
|
||||||
'search_pattern' => $chev->id,
|
'name' => 'Chevron MR',
|
||||||
'match_mode' => MatchMode::Exact->value,
|
'organization_id' => $chev->id,
|
||||||
|
'department_id' => $chev_dep_ct_mr->id,
|
||||||
|
'match_condition' => MatchCondition::ALL->value,
|
||||||
|
]
|
||||||
|
);
|
||||||
|
$rul_chev_ct = DicomRoutingRule::create(
|
||||||
|
[
|
||||||
|
'is_active' => true,
|
||||||
|
'name' => 'Chevron CT',
|
||||||
|
'organization_id' => $chev->id,
|
||||||
|
'department_id' => $chev_dep_ct_mr->id,
|
||||||
|
'match_condition' => MatchCondition::ALL->value,
|
||||||
|
]
|
||||||
|
);
|
||||||
|
|
||||||
|
$rul_chev_xr = DicomRoutingRule::create(
|
||||||
|
[
|
||||||
|
'is_active' => true,
|
||||||
|
'name' => 'Chevron XR',
|
||||||
|
'organization_id' => $chev->id,
|
||||||
|
'department_id' => $chev_dep_ct_mr->id,
|
||||||
|
'match_condition' => MatchCondition::ALL->value,
|
||||||
|
]
|
||||||
|
);
|
||||||
|
|
||||||
|
DicomRuleCondition::create([
|
||||||
|
'dicom_tag' => DicomTagIdentifiers::InstitutionName->value,
|
||||||
|
'search_pattern' => 'chevron',
|
||||||
|
'dicom_routing_rule_id' => $rul_chev_mr->id,
|
||||||
|
'match_mode' => MatchMode::Contains->value,
|
||||||
|
'case_sensitive' => false,
|
||||||
]);
|
]);
|
||||||
DB::table('dicom_mapping_rules')->insert([
|
DicomRuleCondition::create([
|
||||||
'dicom_tag' => 'InstitutionName',
|
'dicom_tag' => DicomTagIdentifiers::Modality->value,
|
||||||
'search_pattern' => 'CHEVRON CLINICAL',
|
'search_pattern' => 'MR,CT',
|
||||||
'institute_id' => $chev->id,
|
'dicom_routing_rule_id' => $rul_chev_mr->id,
|
||||||
'match_mode' => MatchMode::StartsWith->value,
|
'match_mode' => MatchMode::InArray->value,
|
||||||
|
'case_sensitive' => true,
|
||||||
|
]);
|
||||||
|
|
||||||
|
DicomRuleCondition::create([
|
||||||
|
'dicom_tag' => DicomTagIdentifiers::InstitutionName->value,
|
||||||
|
'search_pattern' => 'chevron',
|
||||||
|
'dicom_routing_rule_id' => $rul_chev_xr->id,
|
||||||
|
'match_mode' => MatchMode::Contains->value,
|
||||||
|
'case_sensitive' => false,
|
||||||
|
]);
|
||||||
|
DicomRuleCondition::create([
|
||||||
|
'dicom_tag' => DicomTagIdentifiers::Modality->value,
|
||||||
|
'search_pattern' => 'CR,DX',
|
||||||
|
'dicom_routing_rule_id' => $rul_chev_xr->id,
|
||||||
|
'match_mode' => MatchMode::InArray->value,
|
||||||
|
'case_sensitive' => true,
|
||||||
]);
|
]);
|
||||||
|
|
||||||
DicomServer::create(
|
DicomServer::create(
|
||||||
@ -82,8 +138,8 @@ public function run(): void
|
|||||||
'wado_path' => 'dicom-web',
|
'wado_path' => 'dicom-web',
|
||||||
'stone_viewer_path' => 'stone-webviewer/index.html',
|
'stone_viewer_path' => 'stone-webviewer/index.html',
|
||||||
'ohif_viewer_path' => 'ohif/viewer',
|
'ohif_viewer_path' => 'ohif/viewer',
|
||||||
'institute_id' => $chev->id,
|
'organization_id' => $chev->id,
|
||||||
'facility_id' => $chev_xr->id,
|
'department_id' => $chev_xr->id,
|
||||||
]
|
]
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user