123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113 |
- 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<VSelectGenderEnumModel> selectGenderList = [
- VSelectGenderEnumModel(code: GenderEnum.Female, name: "女"),
- VSelectGenderEnumModel(code: GenderEnum.Male, name: "男"),
- VSelectGenderEnumModel(code: GenderEnum.Unknown, name: "未知"),
- ];
- /// 创建登记
- Future<void> 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<void> 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<HealthExamPersonDTO?> getExamBookingByIDCard(String idCard) async {
- return await registrationController.appointmentManager
- .getExamBookingByIDCardAsync(
- idCardNo: idCard,
- );
- }
- /// 若未预约则需要补充手机号信息
- Future<PatientDTO?> fillInIdentityInfo(PatientDTO? patient) async {
- final PatientDTO? result = await Get.dialog<PatientDTO>(
- RegistrationFormDialog(patient: patient),
- barrierDismissible: false,
- );
- return result;
- }
- /// 提交
- Future<void> 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<void> createResidentInList({
- required PatientDTO patient,
- }) async {
- await createResident(patient);
- await registrationController.listController.getRegisterInfoPage();
- }
- }
|