You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

182 lines
9.0 KiB
PHP

<?php
namespace App\Http\Controllers\API\His;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\DB;
class DrugController extends Controller
{
public function SyncDrugList()
{
set_time_limit(0);
DB::table('s_drug_list')->truncate();
$pageSize = 1000;
$pageNum = 1;
$total = 0;
while (true) {
$res = HisController::Get('查询药品列表', [
'pageSize' => $pageSize,
'pageNum' => $pageNum,
'pageFlag' => 1,
]);
if ($res['code'] != 200) {
return \Yz::JsonError('同步失败:' . $res['message']);
}
$list = $res['data']['list'] ?? [];
if (empty($list)) {
break;
}
$insertData = [];
foreach ($list as $item) {
$insertData[] = [
'drugtermId' => $item['drugtermId'] ?? null,
'tradeName' => $item['tradeName'] ?? null,
'spellCode' => $item['spellCode'] ?? null,
'wbCode' => $item['wbCode'] ?? null,
'englishName' => $item['englishName'] ?? null,
'regularName' => $item['regularName'] ?? null,
'regularSpellCode' => $item['regularSpellCode'] ?? null,
'regularWbCode' => $item['regularWbCode'] ?? null,
'englishFormal' => $item['englishFormal'] ?? null,
'englishRegular' => $item['englishRegular'] ?? null,
'gbCode' => $item['gbCode'] ?? null,
'internationalCode' => $item['internationalCode'] ?? null,
'producerName' => $item['producerName'] ?? null,
'drugQuality' => $item['drugQuality'] ?? null,
'specs' => $item['specs'] ?? null,
'priceRef' => $item['priceRef'] ?? null,
'doseModel' => $item['doseModel'] ?? null,
'doseModelName' => $item['doseModelName'] ?? null,
'hypoTestFlag' => $item['hypoTestFlag'] ?? null,
'hypoReagentFlag' => $item['hypoReagentFlag'] ?? null,
'reagentCode' => $item['reagentCode'] ?? null,
'hypoKindCode' => $item['hypoKindCode'] ?? null,
'hypoKindName' => $item['hypoKindName'] ?? null,
'useTip' => $item['useTip'] ?? null,
'antibioticsFlag' => $item['antibioticsFlag'] ?? null,
'antibioticsLv' => $item['antibioticsLv'] ?? null,
'weightFactor' => $item['weightFactor'] ?? null,
'surfaceFactor' => $item['surfaceFactor'] ?? null,
'doseUnit' => $item['doseUnit'] ?? null,
'baseDose' => $item['baseDose'] ?? null,
'bakDoseUnit' => $item['bakDoseUnit'] ?? null,
'bakBaseDose' => $item['bakBaseDose'] ?? null,
'minUnit' => $item['minUnit'] ?? null,
'midUnit' => $item['midUnit'] ?? null,
'midQty' => $item['midQty'] ?? null,
'packUnit' => $item['packUnit'] ?? null,
'packQty' => $item['packQty'] ?? null,
'pefDoseUnitLv' => $item['pefDoseUnitLv'] ?? null,
'putDrugUnitLv' => $item['putDrugUnitLv'] ?? null,
'inDrugUnitLv' => $item['inDrugUnitLv'] ?? null,
'herbProcCode' => $item['herbProcCode'] ?? null,
'herbProcName' => $item['herbProcName'] ?? null,
'defUsageCode' => $item['defUsageCode'] ?? null,
'defUsageName' => $item['defUsageName'] ?? null,
'defFreqCode' => $item['defFreqCode'] ?? null,
'phaFunCode' => $item['phaFunCode'] ?? null,
'phaFunPath' => $item['phaFunPath'] ?? null,
'termClassId' => $item['termClassId'] ?? null,
'termClassName' => $item['termClassName'] ?? null,
'defOnceDose' => $item['defOnceDose'] ?? null,
'maxOnceDose' => $item['maxOnceDose'] ?? null,
'maxDays' => $item['maxDays'] ?? null,
'additiveDays' => $item['additiveDays'] ?? null,
'additiveQty' => $item['additiveQty'] ?? null,
'maxDayDose' => $item['maxDayDose'] ?? null,
'maxFrequency' => $item['maxFrequency'] ?? null,
'splitType' => $item['splitType'] ?? null,
'siGrade' => $item['siGrade'] ?? null,
'siMark' => $item['siMark'] ?? null,
'importFlag' => $item['importFlag'] ?? null,
'nostrumFlag' => $item['nostrumFlag'] ?? null,
'gmpFlag' => $item['gmpFlag'] ?? null,
'otcFlag' => $item['otcFlag'] ?? null,
'liquidFlag' => $item['liquidFlag'] ?? null,
'preciousFlag' => $item['preciousFlag'] ?? null,
'dangerFlag' => $item['dangerFlag'] ?? null,
'stimulantFlag' => $item['stimulantFlag'] ?? null,
'sexClass' => $item['sexClass'] ?? null,
'childFlag' => $item['childFlag'] ?? null,
'familyplanFlag' => $item['familyplanFlag'] ?? null,
'defFreqName' => $item['defFreqName'] ?? null,
];
}
foreach (array_chunk($insertData, 200) as $chunk) {
DB::table('s_drug_list')->insert($chunk);
}
$total += count($list);
if (count($list) < $pageSize) {
break;
}
$pageNum++;
}
return \Yz::JsonReturn(true, '同步完成', ['total' => $total]);
}
public function SyncUndrugList()
{
set_time_limit(0);
DB::table('s_undrug_list')->truncate();
$res = HisController::Get('查询非药品列表', []);
if ($res['code'] != 200) {
return \Yz::JsonError('同步失败:' . $res['message']);
}
$list = $res['data']['list'] ?? $res['data'] ?? [];
if (empty($list)) {
return \Yz::JsonReturn(true, '无数据', ['total' => 0]);
}
$insertData = [];
foreach ($list as $item) {
$insertData[] = [
'undrugId' => $item['undrugId'] ?? null,
'termClassId' => $item['termClassId'] ?? null,
'termName' => $item['termName'] ?? null,
'englishName' => $item['englishName'] ?? null,
'visitType' => $item['visitType'] ?? null,
'spellCode' => $item['spellCode'] ?? null,
'wbCode' => $item['wbCode'] ?? null,
'customCode' => $item['customCode'] ?? null,
'specs' => $item['specs'] ?? null,
'nurseGrade' => $item['nurseGrade'] ?? null,
'criticalState' => $item['criticalState'] ?? null,
'sexLimit' => $item['sexLimit'] ?? null,
'priceRef' => $item['priceRef'] ?? null,
'execDepts' => isset($item['execDepts']) ? json_encode($item['execDepts'], JSON_UNESCAPED_UNICODE) : null,
'labSpecimens' => isset($item['labSpecimens']) ? json_encode($item['labSpecimens'], JSON_UNESCAPED_UNICODE) : null,
'mappingCode' => $item['mappingCode'] ?? null,
'memo' => $item['memo'] ?? null,
'chargeFlag' => $item['chargeFlag'] ?? null,
'pricingFlag' => $item['pricingFlag'] ?? null,
'confirmFlag' => $item['confirmFlag'] ?? null,
'fincheckFlag' => $item['fincheckFlag'] ?? null,
'consentFlag' => $item['consentFlag'] ?? null,
'sheetType' => $item['sheetType'] ?? null,
'examClass' => $item['examClass'] ?? null,
'examMethod' => $item['examMethod'] ?? null,
'examPart' => $item['examPart'] ?? null,
'defaultExecDepts' => $item['defaultExecDepts'] ?? null,
'docmoTip' => $item['docmoTip'] ?? null,
];
}
foreach (array_chunk($insertData, 200) as $chunk) {
DB::table('s_undrug_list')->insert($chunk);
}
return \Yz::JsonReturn(true, '同步完成', ['total' => count($list)]);
}
}