import 'package:fis_jsonrpc/rpc.dart'; import 'package:get/get.dart'; import 'package:vitalapp/architecture/utils/datetime.dart'; import 'package:vitalapp/pages/medical_checkup_station/registration/controller.dart'; import 'package:vitalapp/pages/medical_checkup_station/registration/state/list.dart'; import 'package:vitalapp/pages/medical_checkup_station/registration/widgets/form/index.dart'; class RegistrationFormController { late RegistrationController registrationController; RegistrationFormController( RegistrationController controller, ) { registrationController = controller; } final state = ListState(); List selectGenderList = [ VSelectGenderEnumModel(code: GenderEnum.Female, name: "女"), VSelectGenderEnumModel(code: GenderEnum.Male, name: "男"), VSelectGenderEnumModel(code: GenderEnum.Unknown, name: "未知"), ]; /// 创建登记 Future createResident(PatientDTO? patient) async { AddRegiterInfoRequest addRegiterInfo = AddRegiterInfoRequest(); addRegiterInfo.adress = patient?.patientAddress; addRegiterInfo.age = DataTimeUtils.calculateAge( patient?.birthday ?? DateTime.now(), ); addRegiterInfo.iDCardNo = patient?.cardNo; addRegiterInfo.name = patient?.patientName; addRegiterInfo.phone = patient?.phone; addRegiterInfo.sex = patient?.patientGender == GenderEnum.Male ? "男" : "女"; addRegiterInfo.birthday = patient?.birthday?.toLocal(); await registrationController.registrationManager.addRegiterInfoAsync( request: addRegiterInfo, ); } /// 编辑登记 Future editResident(PatientDTO? patient) async { UpdateRegiterInfoRequest editRegiterInfo = UpdateRegiterInfoRequest(); editRegiterInfo.adress = patient?.patientAddress; editRegiterInfo.age = DataTimeUtils.calculateAge( patient?.birthday ?? DateTime.now(), ); editRegiterInfo.birthday = patient?.birthday; editRegiterInfo.iDCardNo = patient?.cardNo; editRegiterInfo.name = patient?.patientName; editRegiterInfo.phone = patient?.phone; editRegiterInfo.sex = patient?.patientGender == GenderEnum.Male ? "男" : "女"; editRegiterInfo.code = patient?.code; await registrationController.registrationManager.updateRegiterInfoAsync( request: editRegiterInfo, ); } /// 创建登记之前查看有没有预约 Future getExamBookingByIDCard(String idCard) async { return await registrationController.appointmentManager .getExamBookingByIDCardAsync( idCardNo: idCard, ); } /// 若未预约则需要补充手机号信息 Future fillInIdentityInfo(PatientDTO? patient) async { final PatientDTO? result = await Get.dialog( RegistrationFormDialog(patient: patient), barrierDismissible: false, ); return result; } /// 提交 Future confirmSubmit({ required PatientDTO patient, }) async { if (patient.cardNo == null) { return; } /// 判断是否预约过,若未预约则需要更新手机号信息 HealthExamPersonDTO? healthExamPerson = await getExamBookingByIDCard( patient.cardNo!, ); if (healthExamPerson != null) { patient.cardNo = healthExamPerson.identityCard; patient.patientGender = healthExamPerson.gender == PatientGenderEnum.Male ? GenderEnum.Male : GenderEnum.Female; patient.patientName = healthExamPerson.name; patient.phone = healthExamPerson.phone; // patient.patientAddress = healthExamPerson.a } else { PatientDTO? currentPatient = await fillInIdentityInfo(patient); if (currentPatient != null) { patient = currentPatient; } else { return; } } await createResidentInList(patient: patient); } /// 提交数据给server 生成登记列表 Future createResidentInList({ required PatientDTO patient, }) async { await createResident(patient); await registrationController.listController.getRegisterInfoPage(); } }