123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212 |
- <?php
- namespace App\Repositories\Models\TCM;
- use App\Repositories\Models\Model;
- use App\Services\CombinationService;
- use Prettus\Repository\Contracts\Transformable;
- use Prettus\Repository\Traits\TransformableTrait;
- /**
- * Class Prescription.
- *
- * @package namespace App\Repositories\Models\TCM;
- */
- class Prescription extends Model implements Transformable
- {
- use TransformableTrait;
- protected $casts = ['drugs' => '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);
- }
- }
|