add parent to discipline
This commit is contained in:
parent
41d6963d96
commit
d9f9768074
@ -8,8 +8,10 @@ class Organization extends Migration {
|
|||||||
public function up() {
|
public function up() {
|
||||||
$this->forge->addField([
|
$this->forge->addField([
|
||||||
'DisciplineID' => ['type' => 'int', 'unsigned' => true, 'auto_increment'=> true],
|
'DisciplineID' => ['type' => 'int', 'unsigned' => true, 'auto_increment'=> true],
|
||||||
|
'SiteID' => ['type' => 'int', 'null'=> false],
|
||||||
'DisciplineCode' => ['type' => 'varchar', 'constraint'=> 10, 'null'=> false],
|
'DisciplineCode' => ['type' => 'varchar', 'constraint'=> 10, 'null'=> false],
|
||||||
'DisciplineName' => ['type' => 'varchar', 'constraint'=> 150, 'null'=> true],
|
'DisciplineName' => ['type' => 'varchar', 'constraint'=> 150, 'null'=> true],
|
||||||
|
'Parent' => ['type' => 'int', 'null'=> true],
|
||||||
'CreateDate' => ['type'=>'DATETIME', 'null' => true],
|
'CreateDate' => ['type'=>'DATETIME', 'null' => true],
|
||||||
'EndDate' => ['type'=>'DATETIME', 'null' => true]
|
'EndDate' => ['type'=>'DATETIME', 'null' => true]
|
||||||
]);
|
]);
|
||||||
|
|||||||
@ -33,16 +33,19 @@ class OrganizationSeeder extends Seeder {
|
|||||||
$this->db->table('site')->insertBatch($data);
|
$this->db->table('site')->insertBatch($data);
|
||||||
|
|
||||||
$data = [
|
$data = [
|
||||||
['DisciplineID' => '1','DisciplineCode' => 'HEMA', 'DisciplineName' =>'Hematology', 'CreateDate' => "$now"],
|
['DisciplineID' => '1','DisciplineCode' => 'HEMA', 'DisciplineName' =>'Hematology', 'Parent' => null, 'CreateDate' => "$now"],
|
||||||
['DisciplineID' => '2','DisciplineCode' => 'CHEM', 'DisciplineName' =>'Clinical Chemistry', 'CreateDate' => "$now"],
|
['DisciplineID' => '2','DisciplineCode' => 'CHEM', 'DisciplineName' =>'Clinical Chemistry', 'Parent' => null, 'CreateDate' => "$now"],
|
||||||
['DisciplineID' => '3','DisciplineCode' => 'IMSR', 'DisciplineName' =>'Immunology/Serology', 'CreateDate' => "$now"],
|
['DisciplineID' => '3','DisciplineCode' => 'IMSR', 'DisciplineName' =>'Immunology/Serology', 'Parent' => null, 'CreateDate' => "$now"],
|
||||||
['DisciplineID' => '4','DisciplineCode' => 'URIN', 'DisciplineName' =>'Urinalysis', 'CreateDate' => "$now"],
|
['DisciplineID' => '4','DisciplineCode' => 'URIN', 'DisciplineName' =>'Urinalysis', 'Parent' => null, 'CreateDate' => "$now"],
|
||||||
['DisciplineID' => '5','DisciplineCode' => 'FECAL', 'DisciplineName' =>'Fecal Analysis', 'CreateDate' => "$now"],
|
['DisciplineID' => '5','DisciplineCode' => 'FECAL', 'DisciplineName' =>'Fecal Analysis', 'Parent' => null, 'CreateDate' => "$now"],
|
||||||
['DisciplineID' => '6','DisciplineCode' => 'HC', 'DisciplineName' =>'Pathology/Cytology', 'CreateDate' => "$now"],
|
['DisciplineID' => '6','DisciplineCode' => 'HC', 'DisciplineName' =>'Pathology/Cytology', 'Parent' => null, 'CreateDate' => "$now"],
|
||||||
['DisciplineID' => '7','DisciplineCode' => 'MICRO', 'DisciplineName' =>'Microbiology', 'CreateDate' => "$now"],
|
['DisciplineID' => '7','DisciplineCode' => 'MICRO', 'DisciplineName' =>'Microbiology', 'Parent' => null, 'CreateDate' => "$now"],
|
||||||
['DisciplineID' => '8','DisciplineCode' => 'TXC', 'DisciplineName' =>'Toxicology', 'CreateDate' => "$now"],
|
['DisciplineID' => '8','DisciplineCode' => 'TXC', 'DisciplineName' =>'Toxicology', 'Parent' => null, 'CreateDate' => "$now"],
|
||||||
['DisciplineID' => '9','DisciplineCode' => 'LF', 'DisciplineName' =>'Life Sciences', 'CreateDate' => "$now"],
|
['DisciplineID' => '9','DisciplineCode' => 'LF', 'DisciplineName' =>'Life Sciences', 'Parent' => null, 'CreateDate' => "$now"],
|
||||||
['DisciplineID' => '10','DisciplineCode' => 'ND', 'DisciplineName' =>'Non-discipline', 'CreateDate' => "$now"]
|
['DisciplineID' => '10','DisciplineCode' => 'ND', 'DisciplineName' =>'Non-discipline', 'Parent' => null, 'CreateDate' => "$now"],
|
||||||
|
['DisciplineID' => '11','DisciplineCode' => 'HEMO', 'DisciplineName' =>'Hemostasis', 'Parent' => '1', 'CreateDate' => "$now"],
|
||||||
|
['DisciplineID' => '12','DisciplineCode' => 'BLGLU', 'DisciplineName' =>'Blood Glucose', 'Parent' => '2', 'CreateDate' => "$now"],
|
||||||
|
['DisciplineID' => '13','DisciplineCode' => 'KIDF', 'DisciplineName' =>'Kidney Function', 'Parent' => '2', 'CreateDate' => "$now"],
|
||||||
];
|
];
|
||||||
$this->db->table('discipline')->insertBatch($data);
|
$this->db->table('discipline')->insertBatch($data);
|
||||||
|
|
||||||
|
|||||||
@ -5,7 +5,7 @@ use App\Models\BaseModel;
|
|||||||
class DisciplineModel extends BaseModel {
|
class DisciplineModel extends BaseModel {
|
||||||
protected $table = 'discipline';
|
protected $table = 'discipline';
|
||||||
protected $primaryKey = 'DisciplineID';
|
protected $primaryKey = 'DisciplineID';
|
||||||
protected $allowedFields = ['DisciplineCode', 'DisciplineName', 'CreateDate', 'EndDate'];
|
protected $allowedFields = ['DisciplineCode', 'DisciplineName', 'SiteID', 'Parent', 'CreateDate', 'EndDate'];
|
||||||
|
|
||||||
protected $useTimestamps = true;
|
protected $useTimestamps = true;
|
||||||
protected $createdField = 'CreateDate';
|
protected $createdField = 'CreateDate';
|
||||||
@ -14,7 +14,9 @@ class DisciplineModel extends BaseModel {
|
|||||||
protected $deletedField = 'EndDate';
|
protected $deletedField = 'EndDate';
|
||||||
|
|
||||||
public function getDisciplines($filter) {
|
public function getDisciplines($filter) {
|
||||||
$builder = $this->select('*');
|
$builder = $this->select('discipline.DisciplineID, discipline.DisciplineCode, discipline.DisciplineName, discipline.SiteID,
|
||||||
|
discipline.Parent, d.DisciplineCode as ParentCode,d.DisciplineName as ParentName')
|
||||||
|
->join('discipline as d', 'd.DisciplineID = discipline.Parent', 'left');
|
||||||
|
|
||||||
if (!empty($filter['DisciplineCode'])) {
|
if (!empty($filter['DisciplineCode'])) {
|
||||||
$builder->like('DisciplineCode', $filter['DisciplineCode'], 'both');
|
$builder->like('DisciplineCode', $filter['DisciplineCode'], 'both');
|
||||||
@ -23,7 +25,25 @@ class DisciplineModel extends BaseModel {
|
|||||||
$builder->like('DisciplineName', $filter['DisciplineName'], 'both');
|
$builder->like('DisciplineName', $filter['DisciplineName'], 'both');
|
||||||
}
|
}
|
||||||
|
|
||||||
$rows = $builder->findAll();
|
$rows = $builder->findAll();
|
||||||
return $rows;
|
// Build nested structure: parent with children
|
||||||
|
$parents = [];
|
||||||
|
$children = [];
|
||||||
|
foreach ($rows as $row) {
|
||||||
|
if (empty($row['Parent'])) {
|
||||||
|
$parents[$row['DisciplineID']] = $row;
|
||||||
|
$parents[$row['DisciplineID']]['children'] = [];
|
||||||
|
} else {
|
||||||
|
$children[$row['Parent']][] = $row;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// Attach children to parents
|
||||||
|
foreach ($children as $parentId => $childList) {
|
||||||
|
if (isset($parents[$parentId])) {
|
||||||
|
$parents[$parentId]['children'] = $childList;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// Return as indexed array
|
||||||
|
return array_values($parents);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user