Commit d1222654 by lujunyi
parents f436988d 6fe6a9fe
<?php
namespace App\Api\Controllers;
use App\Http\Controllers\BaseApiController;
use App\Models\DiagnosiModel;
use Illuminate\Http\Request;
// 诊断控制器
class DiagnosisController extends BaseApiController
{
public function test()
{
return $this->success(['a' => 1, 'b' => 2, 'c' => 3]);
}
// 获取诊断列表
public function diagnosisList(Request $request)
{
$search_input = $request->input('search_input');
$query = DiagnosiModel::query();
if ($search_input) {
$query->where('name', 'like', "%{$search_input}%")
->orWhere('code', 'like', "%{$search_input}%");
}
$data = $query->paginate(10);
return $this->success($data);
}
}
<?php
namespace App\Api\Controllers;
use App\Http\Controllers\BaseApiController;
use App\Models\DrugModel;
use Illuminate\Http\Request;
// 药品控制器
class DrugController extends BaseApiController
{
public function test()
{
return $this->success(['a' => 1, 'b' => 2, 'c' => 3]);
}
// 药品列表
public function drugList(Request $request)
{
// $code = $request->input('code');
$data = DrugModel::query()->paginate(10);
// $total = DrugModel::query()->count();
// $data = [
// 'data'=>$drugList,
// 'total'=>$total
// ];
return $this->success($data);
}
}
<?php
namespace App\Api\Controllers;
use App\Common\Util;
use App\Http\Controllers\BaseApiController;
use App\Models\PatientModel;
use Illuminate\Http\Request;
// 问诊人控制器
class PatientController extends BaseApiController
{
public function test()
{
return $this->success(['a' => 1, 'b' => 2, 'c' => 3]);
}
// 获取问诊人列表
public function patientList(Request $request)
{
$search_input = $request->input('search_input');
$query = PatientModel::query();
if ($search_input) {
$query->where('mobile', 'like', "%{$search_input}%");
// ->orWhere('mobile', 'like', "%{$search_input}%");
}
$data = $query->paginate(10);
return $this->success($data);
}
// 添加问诊人
public function add(Request $request)
{
$data = $request->all();
// TODO 表中缺少关联
// TODO 验证身份证号码是否正确
$idCardInfo = Util::getIdCardInfo($data['id_card']);
$data['gender'] = $idCardInfo['gender'];
$data['age'] = $idCardInfo['age'];
$res = PatientModel::create($data);
if ($res) {
return $this->success($res);
} else {
return $this->error(401, '添加失败');
}
}
// 修改问诊人
public function update(Request $request)
{
$id = $request->input('id');
// TODO 验证身份证号码是否正确
// TODO 提取身份信息
$data = PatientModel::find($id);
if (! $data) {
return $this->error(401, '该问诊人不存在');
}
$data->name = $request->input('name');
$data->id_card = $request->input('id_card');
$data->mobile = $request->input('mobile');
$data->save();
}
// 删除问诊人
public function delete(Request $request)
{
$id = $request->input('id');
$data = PatientModel::find($id);
if (! $data) {
return $this->error(401, '该问诊人不存在');
}
$data->delete();
return $this->success($data);
}
// 设置默认问诊人
public function setDefault(Request $request)
{
// 通过id找到是否存在默认问诊人,如果存在比对id是否相同,如果不同则修改默认问诊人状态
// TODO 验证条件待调整
$id = $request->input('id');
$data = PatientModel::where('is_default', 1)->where('id', $id)->first();
if ($data) {
if ($data['id'] == $id) {
return $this->success(['msg' => '该问诊人已经是默认问诊人']);
} else {
$data->is_default = 0;
$data->save();
}
}
$id = $request->input('id');
$data = PatientModel::find($id);
if (! $data) {
return $this->error(401, '该问诊人不存在');
}
$data->is_default = 1;
$data->save();
return $this->success($data);
}
// 获取默认问诊人
public function getDefault(Request $request)
{
$id = $request->input('id');
$data = PatientModel::where('id', $id)->where('is_default', 1)->first();
if ($data) {
return $this->success($data);
} else {
return $this->error(401, '暂无默认问诊人');
}
}
}
<?php
namespace App\Api\Controllers;
use App\Http\Controllers\BaseApiController;
use App\Models\PharmacyModel;
use Illuminate\Http\Request;
// 药店控制器
class PharmacyController extends BaseApiController
{
public function test()
{
return $this->success(['a' => 1, 'b' => 2, 'c' => 3]);
}
public function PharmacyList(Request $request)
{
$search_input = $request->input('search_input');
$query = PharmacyModel::query();
if ($search_input) {
$query->where('name', 'like', "%{$search_input}%");
// ->orWhere('address','like',"%{$search_input}%");
}
// TODO 是否闭店、是否在营业时间段、是否启用
// TODO 该药店下是否有药师在启用状态
// $data = $query->where('is_close',0)
// ->where('is_open',1)
// ->where('start_time','<=',date("H:i"))
// ->where('end_time','>=',date("H:i"));
$data = $query->paginate(10);
return $this->success($data);
}
}
......@@ -152,4 +152,58 @@ public static function noAuth(): Alert
return $alert;
}
/**
* 验证身份证号码
*/
public static function checkIdCard($idcard){
}
# 通过身份证号码获取性别、年龄等信息
public static function getIdCardInfo($idCard) {
// 校验身份证号码长度(15位或18位)
if (strlen($idCard) == 15) {
// 15位身份证号码转换为18位
$idCard = substr($idCard, 0, 6) . '19' . substr($idCard, 6, 9) . self::calcCheckDigit($idCard);
} elseif (strlen($idCard) != 18) {
return ['error' => 'Invalid ID card number'];
}
// 提取出生日期
$birthDate = substr($idCard, 6, 8);
$birthDate = substr($birthDate, 0, 4) . '-' . substr($birthDate, 4, 2) . '-' . substr($birthDate, 6, 2);
$birthDateTime = \DateTime::createFromFormat('Y-m-d', $birthDate);
if (!$birthDateTime || $birthDateTime->format('Y-m-d') !== $birthDate) {
return ['error' => 'Invalid birth date in ID card number'];
}
// 提取性别(第17位奇数为男性,偶数为女性)
$gender = (int)substr($idCard, 16, 1) % 2 === 0 ? 2 : 1;
// 计算年龄
$today = new \DateTime();
$age = $today->diff($birthDateTime)->y;
return [
'birthDate' => $birthDate,
'gender' => $gender,
'age' => $age
];
}
public static function calcCheckDigit($idCard17) {
$weights = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2];
$checkDigits = ['1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2'];
$sum = 0;
for ($i = 0; $i < 17; $i++) {
$sum += intval(substr($idCard17, $i, 1)) * $weights[$i];
}
$mod = $sum % 11;
return $checkDigits[$mod];
}
}
......@@ -21,6 +21,7 @@ public function up(): void
$table->bigInteger('user_id')->default(0)->index('idx_userid')->comment('用户表ID');
$table->bigInteger('pharmacy_id')->default(0)->index('idx_pharmacyid')->comment('药店表ID');
$table->boolean('is_default')->default(0)->comment('默认问诊人,用户添加的才需要设置[0=否,1=是]');
$table->timestamps();
$table->softDeletes();
});
......
......@@ -22,7 +22,7 @@ public function up()
$table->string('license_no', 30)->comment('执照编号');
$table->string('license_no_pic')->comment('执行证书');
$table->string('license_no_period')->comment('执行证书有效期');
$table->string('physician_license')->comment('执业资格证书');
$table->string('physician_license', 30)->comment('执业资格证书');
$table->string('id_card_front_pic')->comment('身份证正面照');
$table->string('id_card_back_pic')->comment('身份证反面照');
$table->string('online_hospital_name', 128)->comment('互联网医院名称');
......@@ -32,7 +32,6 @@ public function up()
$table->text('introduction')->nullable()->comment('简介');
$table->boolean('status')->default(0)->comment('是否启用[0=未启用,1=启用]');
$table->text('signed_pic')->nullable()->comment('签名照');
$table->bigInteger('user_id')->nullable()->unique('uk_userid')->comment('用户表ID');
$table->timestamps();
$table->softDeletes();
});
......
......@@ -25,7 +25,6 @@ public function up()
$table->string('physician_license')->comment('执业资格证书');
$table->string('signed_pic')->comment('签名照');
$table->boolean('status')->default(0)->comment('启用[0=未启用,1=启用]');
$table->bigInteger('user_id')->nullable()->unique('uk_userid')->comment('用户表ID');
$table->timestamps();
$table->softDeletes();
});
......
......@@ -21,9 +21,32 @@
// 不需要登录的组
// 小程序静默登录
Route::post('login', 'App\Api\Controllers\UserController@login');
// Route::get('test', 'App\Api\Controllers\DrugController@test');
# 获取药品列表
Route::get('/drugs', 'App\Api\Controllers\DrugController@drugList');
# 获取药店列表
Route::get('/pharmacys', 'App\Api\Controllers\PharmacyController@PharmacyList');
# 获取诊断列表
Route::get('/diagnosis', 'App\Api\Controllers\DiagnosisController@diagnosisList');
# 获取问诊人列表
Route::get('/patients', 'App\Api\Controllers\PatientController@patientList');
# 问诊人新增
Route::post('/patients-add', 'App\Api\Controllers\PatientController@add');
# 问诊人编辑
Route::post('/patients-update', 'App\Api\Controllers\PatientController@update');
# 问诊人删除
Route::post('/patients-delete', 'App\Api\Controllers\PatientController@delete');
# 设置默认问诊人
Route::post('/patients-setDefault', 'App\Api\Controllers\PatientController@setDefault');
# 获取默认问诊人
Route::post('/patients-getDefault', 'App\Api\Controllers\PatientController@getDefault');
// 需要验证是否登录的路由组
Route::middleware(['jwt.auth'])->group(function () {
// 获取用户信息
Route::get('/users', 'App\Api\Controllers\UserController@userInfo');
// 获取药品列表
});
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment