'json']; protected static function booted() { self::language(); static::saved(function (Prescription $prescription) { Recipels::query()->where('prescription_id', $prescription->id)->delete(); $data = []; $prescription->load(['patient', 'medical_record']); foreach ($prescription->drugs as $drug) { $d = [ 'patient_id' => $prescription->patient_id, 'name' => $prescription->patient->name, 'sex' => $prescription->patient->sex, 'age' => $prescription->patient->age, 'medical_record_id' => $prescription->medical_record_id, 'chinese_tra_diagnosis' => $prescription->medical_record ? $prescription->medical_record->chinese_tra_diagnosis : '--', 'prescription_id' => $prescription->id, 'drug_id' => isset($drug['drug']) ? $drug['drug']['id'] : 0, 'drug' => $drug['name'], 'dose' => $drug['dose'], 'unit' => $drug['unit'], 'use' => isset($drug['use']) ? (int)$drug['use'] : 0, 'use_name' => isset($drug['use_name']) ? $drug['use_name'] : '', 'admin_id' => $prescription->admin_id ]; $data[] = $d; } Recipels::query()->insert($data); //组合分析 Combinations::query()->where('prescription_id', $prescription->id)->delete(); $names = array_column($prescription->drugs, 'name'); $combinations = CombinationService::combinationALL($names); $cd = []; foreach ($combinations as $combination) { $cd[] = [ 'name' => '-' . arr2str($combination, '-') . '-', 'count' => count($combination), 'prescription_id' => $prescription->id, 'admin_id' => $prescription->admin_id ]; } Combinations::query()->insert($cd); }); static::deleted(function (Prescription $prescription) { Recipels::query()->where('prescription_id', $prescription->id)->delete(); Combinations::query()->where('prescription_id', $prescription->id)->delete(); }); } const EAT_TJ = 0; const EAT_WJ = 1; public static $eatMap = [ self::EAT_TJ => '汤剂', self::EAT_WJ => '丸剂' ]; const USE_XJ = 0; const USE_HX = 1; const USE_BJ = 2; const USE_LJ = 3; const USE_BK = 4; const USE_DS = 5; const USE_YH = 6; const USE_PF = 7; const USE_CF = 8; const USE_JTDS = 9; const USE_WY = 10; const USE_DSXJ = 11; const USE_YMCF = 12; const USE_BXJ = 13; const USE_BHX = 14; const USE_D = 15; const USE_TJ = 16; const USE_SX = 17; const USE_JX = 18; const USE_Z = 19; const USE_XX = 20; const USE_ZY = 21; const USE_JF = 22; const USE_GC = 23; const USE_SXHF = 24; const USE_SQF = 25; public static $useMap = [ self::USE_XJ => '先煎', self::USE_HX => '后下', self::USE_BJ => '包煎', self::USE_LJ => '另煎', self::USE_BK => '避开', self::USE_DS => '打碎', self::USE_YH => '烊化', self::USE_PF => '泡服', self::USE_CF => '冲服', self::USE_JTDS => '煎汤代水', self::USE_WY => '外用', self::USE_DSXJ => '打碎先煎', self::USE_YMCF => '研磨冲服', self::USE_BXJ => '包先煎', self::USE_BHX => '包后下', self::USE_D => '捣', self::USE_TJ => '同煎', self::USE_SX => '水洗', self::USE_JX => '酒洗', self::USE_Z => '炙', self::USE_XX => '熏洗', self::USE_ZY => '坐浴', self::USE_JF => '嚼服', self::USE_GC => '灌肠', self::USE_SXHF => '舌下含服', self::USE_SQF => '睡前服', ]; const DRUG_TYPE_YP = 0; const DRUG_TYPE_KL = 1; public static $drugTypeMap = [ self::DRUG_TYPE_YP => '饮片', self::DRUG_TYPE_KL => "颗粒" ]; const ADVICE_TYPE_NF = 0; const ADVICE_TYPE_WF = 1; const ADVICE_TYPE_GC = 2; public static $adviceTypeMap = [ self::ADVICE_TYPE_NF => '内服', self::ADVICE_TYPE_WF => '外付', self::ADVICE_TYPE_GC => '灌肠', ]; const FREQUENCY_d1_1 = 0; const FREQUENCY_d1_2 = 1; const FREQUENCY_d1_3 = 2; const FREQUENCY_gd1_1 = 3; const FREQUENCY_w1_1 = 4; const FREQUENCY_b = 5; const FREQUENCY_gw1_1 = 6; const FREQUENCY_mw_1 = 7; const FREQUENCY_lj = 8; const FREQUENCY_h6_1 = 9; const FREQUENCY_h8_1 = 10; const FREQUENCY_h12_1 = 11; const FREQUENCY_d1_6 = 12; const FREQUENCY_z1_1 = 13; public static $frequencyMap = [ self::FREQUENCY_d1_1 => '每天一次', self::FREQUENCY_d1_2 => '每天二次', self::FREQUENCY_d1_3 => '每天三次', self::FREQUENCY_gd1_1 => '隔日一次', self::FREQUENCY_w1_1 => '每周一次', self::FREQUENCY_b => '必要时', self::FREQUENCY_gw1_1 => '隔周一次', self::FREQUENCY_mw_1 => '每晚一次', self::FREQUENCY_lj => '立即', self::FREQUENCY_h6_1 => '每6小时一次', self::FREQUENCY_h8_1 => '每8小时一次', self::FREQUENCY_h12_1 => '每12小时一次', self::FREQUENCY_d1_6 => '每天六次', self::FREQUENCY_z1_1 => '每早一次', ]; const USE_UNIT_ML = 0; const USE_UNIT_G = 1; public static $useUnitMap = [ self::USE_UNIT_ML => 'ml', self::USE_UNIT_G => 'g' ]; protected $table = 'tcm_prescriptions'; /** * The attributes that are mass assignable. * * @var array */ protected $guarded = []; public function medical_record() { return $this->belongsTo(MedicalRecord::class); } public function patient() { return $this->belongsTo(Patient::class); } }