add parent to discipline
This commit is contained in:
parent
41d6963d96
commit
d9f9768074
@ -8,8 +8,10 @@ class Organization extends Migration {
|
||||
public function up() {
|
||||
$this->forge->addField([
|
||||
'DisciplineID' => ['type' => 'int', 'unsigned' => true, 'auto_increment'=> true],
|
||||
'SiteID' => ['type' => 'int', 'null'=> false],
|
||||
'DisciplineCode' => ['type' => 'varchar', 'constraint'=> 10, 'null'=> false],
|
||||
'DisciplineName' => ['type' => 'varchar', 'constraint'=> 150, 'null'=> true],
|
||||
'Parent' => ['type' => 'int', 'null'=> true],
|
||||
'CreateDate' => ['type'=>'DATETIME', 'null' => true],
|
||||
'EndDate' => ['type'=>'DATETIME', 'null' => true]
|
||||
]);
|
||||
|
||||
@ -33,16 +33,19 @@ class OrganizationSeeder extends Seeder {
|
||||
$this->db->table('site')->insertBatch($data);
|
||||
|
||||
$data = [
|
||||
['DisciplineID' => '1','DisciplineCode' => 'HEMA', 'DisciplineName' =>'Hematology', 'CreateDate' => "$now"],
|
||||
['DisciplineID' => '2','DisciplineCode' => 'CHEM', 'DisciplineName' =>'Clinical Chemistry', 'CreateDate' => "$now"],
|
||||
['DisciplineID' => '3','DisciplineCode' => 'IMSR', 'DisciplineName' =>'Immunology/Serology', 'CreateDate' => "$now"],
|
||||
['DisciplineID' => '4','DisciplineCode' => 'URIN', 'DisciplineName' =>'Urinalysis', 'CreateDate' => "$now"],
|
||||
['DisciplineID' => '5','DisciplineCode' => 'FECAL', 'DisciplineName' =>'Fecal Analysis', 'CreateDate' => "$now"],
|
||||
['DisciplineID' => '6','DisciplineCode' => 'HC', 'DisciplineName' =>'Pathology/Cytology', 'CreateDate' => "$now"],
|
||||
['DisciplineID' => '7','DisciplineCode' => 'MICRO', 'DisciplineName' =>'Microbiology', 'CreateDate' => "$now"],
|
||||
['DisciplineID' => '8','DisciplineCode' => 'TXC', 'DisciplineName' =>'Toxicology', 'CreateDate' => "$now"],
|
||||
['DisciplineID' => '9','DisciplineCode' => 'LF', 'DisciplineName' =>'Life Sciences', 'CreateDate' => "$now"],
|
||||
['DisciplineID' => '10','DisciplineCode' => 'ND', 'DisciplineName' =>'Non-discipline', 'CreateDate' => "$now"]
|
||||
['DisciplineID' => '1','DisciplineCode' => 'HEMA', 'DisciplineName' =>'Hematology', 'Parent' => null, 'CreateDate' => "$now"],
|
||||
['DisciplineID' => '2','DisciplineCode' => 'CHEM', 'DisciplineName' =>'Clinical Chemistry', 'Parent' => null, 'CreateDate' => "$now"],
|
||||
['DisciplineID' => '3','DisciplineCode' => 'IMSR', 'DisciplineName' =>'Immunology/Serology', 'Parent' => null, 'CreateDate' => "$now"],
|
||||
['DisciplineID' => '4','DisciplineCode' => 'URIN', 'DisciplineName' =>'Urinalysis', 'Parent' => null, 'CreateDate' => "$now"],
|
||||
['DisciplineID' => '5','DisciplineCode' => 'FECAL', 'DisciplineName' =>'Fecal Analysis', 'Parent' => null, 'CreateDate' => "$now"],
|
||||
['DisciplineID' => '6','DisciplineCode' => 'HC', 'DisciplineName' =>'Pathology/Cytology', 'Parent' => null, 'CreateDate' => "$now"],
|
||||
['DisciplineID' => '7','DisciplineCode' => 'MICRO', 'DisciplineName' =>'Microbiology', 'Parent' => null, 'CreateDate' => "$now"],
|
||||
['DisciplineID' => '8','DisciplineCode' => 'TXC', 'DisciplineName' =>'Toxicology', 'Parent' => null, 'CreateDate' => "$now"],
|
||||
['DisciplineID' => '9','DisciplineCode' => 'LF', 'DisciplineName' =>'Life Sciences', 'Parent' => null, '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);
|
||||
|
||||
|
||||
@ -5,7 +5,7 @@ use App\Models\BaseModel;
|
||||
class DisciplineModel extends BaseModel {
|
||||
protected $table = 'discipline';
|
||||
protected $primaryKey = 'DisciplineID';
|
||||
protected $allowedFields = ['DisciplineCode', 'DisciplineName', 'CreateDate', 'EndDate'];
|
||||
protected $allowedFields = ['DisciplineCode', 'DisciplineName', 'SiteID', 'Parent', 'CreateDate', 'EndDate'];
|
||||
|
||||
protected $useTimestamps = true;
|
||||
protected $createdField = 'CreateDate';
|
||||
@ -14,7 +14,9 @@ class DisciplineModel extends BaseModel {
|
||||
protected $deletedField = 'EndDate';
|
||||
|
||||
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'])) {
|
||||
$builder->like('DisciplineCode', $filter['DisciplineCode'], 'both');
|
||||
@ -23,7 +25,25 @@ class DisciplineModel extends BaseModel {
|
||||
$builder->like('DisciplineName', $filter['DisciplineName'], 'both');
|
||||
}
|
||||
|
||||
$rows = $builder->findAll();
|
||||
return $rows;
|
||||
$rows = $builder->findAll();
|
||||
// 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