Merge branch 'master' of https://gitee.com/v_cms/zyt
This commit is contained in:
@@ -436,6 +436,110 @@ class PrescriptionLogic
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 仅修正处方笺展示用患者姓名、手机号与性别(zyt_tcm_prescription),不改变审核状态与其它字段
|
||||
*/
|
||||
public static function patchPatientContact(int $rxId, string $patientName, string $phone, int $gender, int $adminId, array $adminInfo): bool
|
||||
{
|
||||
self::$error = '';
|
||||
$prescription = Prescription::find($rxId);
|
||||
if (!$prescription) {
|
||||
self::setError('处方不存在');
|
||||
|
||||
return false;
|
||||
}
|
||||
if (!self::canViewPrescription($prescription, $adminId, $adminInfo)) {
|
||||
self::setError('无权限修改此处方');
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
$patientName = trim($patientName);
|
||||
$phone = trim($phone);
|
||||
if ($patientName === '') {
|
||||
self::setError('患者姓名不能为空');
|
||||
|
||||
return false;
|
||||
}
|
||||
if (mb_strlen($patientName) > 50) {
|
||||
self::setError('患者姓名过长');
|
||||
|
||||
return false;
|
||||
}
|
||||
if ($phone === '') {
|
||||
self::setError('手机号不能为空');
|
||||
|
||||
return false;
|
||||
}
|
||||
if (strlen($phone) > 20) {
|
||||
self::setError('手机号过长');
|
||||
|
||||
return false;
|
||||
}
|
||||
if (!in_array($gender, [0, 1], true)) {
|
||||
self::setError('性别无效');
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
$oldName = trim((string) ($prescription->patient_name ?? ''));
|
||||
$oldPhone = trim((string) ($prescription->phone ?? ''));
|
||||
$oldGender = (int) ($prescription->gender ?? 0);
|
||||
|
||||
if ($oldName === $patientName && $oldPhone === $phone && $oldGender === $gender) {
|
||||
self::setError('信息未变更');
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
$genderText = static function (int $g): string {
|
||||
if ($g === 1) {
|
||||
return '男';
|
||||
}
|
||||
if ($g === 0) {
|
||||
return '女';
|
||||
}
|
||||
|
||||
return '未知';
|
||||
};
|
||||
|
||||
try {
|
||||
$prescription->save([
|
||||
'patient_name' => $patientName,
|
||||
'phone' => $phone,
|
||||
'gender' => $gender,
|
||||
]);
|
||||
|
||||
$latestPo = PrescriptionOrder::where('prescription_id', $rxId)
|
||||
->whereNull('delete_time')
|
||||
->order('id', 'desc')
|
||||
->find();
|
||||
$logOrderId = $latestPo ? (int) $latestPo->id : 0;
|
||||
|
||||
$nameFrom = $oldName === '' ? '—' : $oldName;
|
||||
$phoneFrom = $oldPhone === '' ? '—' : $oldPhone;
|
||||
$genderFrom = $genderText($oldGender);
|
||||
$genderTo = $genderText($gender);
|
||||
$summary = sprintf(
|
||||
'处方 #%d:患者姓名「%s」→「%s」,手机「%s」→「%s」,性别「%s」→「%s」',
|
||||
$rxId,
|
||||
$nameFrom,
|
||||
$patientName,
|
||||
$phoneFrom,
|
||||
$phone,
|
||||
$genderFrom,
|
||||
$genderTo
|
||||
);
|
||||
PrescriptionOrderLogic::appendRxPatientPatchLog($logOrderId, $adminId, $adminInfo, $summary);
|
||||
|
||||
return true;
|
||||
} catch (\Throwable $e) {
|
||||
self::setError($e->getMessage());
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除处方
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user