import 'package:doctor_app_flutter/core/enum/master_lookup_key.dart'; import 'package:doctor_app_flutter/core/viewModel/SOAP_view_model.dart'; import 'package:doctor_app_flutter/core/viewModel/project_view_model.dart'; import 'package:doctor_app_flutter/models/SOAP/GeneralGetReqForSOAP.dart'; import 'package:doctor_app_flutter/models/SOAP/PostEpisodeReqModel.dart'; import 'package:doctor_app_flutter/models/patient/patiant_info_model.dart'; import 'package:doctor_app_flutter/screens/base/base_view.dart'; import 'package:doctor_app_flutter/util/translations_delegate_base.dart'; import 'package:doctor_app_flutter/widgets/patients/profile/patient-profile-header-new-design.dart'; import 'package:doctor_app_flutter/widgets/patients/profile/profile_medical_info_widget.dart'; import 'package:doctor_app_flutter/widgets/patients/profile/profile_medical_info_widget_search.dart'; import 'package:doctor_app_flutter/widgets/shared/app_scaffold_widget.dart'; import 'package:doctor_app_flutter/widgets/shared/buttons/app_buttons_widget.dart'; import 'package:doctor_app_flutter/widgets/shared/loader/gif_loader_dialog_utils.dart'; import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; import '../../../routes.dart'; // ignore: must_be_immutable class PatientProfileScreen extends StatelessWidget { PatiantInformtion patient; bool isFromSearch = false; @override Widget build(BuildContext context) { final routeArgs = ModalRoute.of(context).settings.arguments as Map; ProjectViewModel projectViewModel = Provider.of(context); patient = routeArgs['patient']; String patientType = routeArgs['patientType']; String arrivalType = routeArgs['arrivalType']; String from = routeArgs['from']; String to = routeArgs['to']; if (routeArgs.containsKey("isSearch")) { isFromSearch = routeArgs['isSearch']; } return BaseView( onModelReady: (model) async { GeneralGetReqForSOAP generalGetReqForSOAP = GeneralGetReqForSOAP( patientMRN: patient.patientMRN ?? patient.patientId, doctorID: '', editedBy: ''); await model.getPatientAllergy(generalGetReqForSOAP); if (model.allergiesList.length == 0) { await model.getMasterLookup(MasterKeysService.Allergies); } if (model.allergySeverityList.length == 0) { await model.getMasterLookup(MasterKeysService.AllergySeverity); } }, builder: (_, model, w) => AppScaffold( baseViewModel: model, appBarTitle: TranslationBase.of(context).patientProfile, isShowAppBar: false, body: Container( color: Color(0XFFF2F2F2), child: Stack( children: [ Container( child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ PatientProfileHeaderNewDesign( patient, patientType, arrivalType), Expanded( child: Padding( padding: const EdgeInsets.all(16.0), child: SingleChildScrollView( child: Column( children: [ isFromSearch ? ProfileMedicalInfoWidgetSearch( patient: patient, patientType: patientType, arrivalType: arrivalType, from: from, to: to, ) : ProfileMedicalInfoWidget( patient: patient, patientType: patientType, arrivalType: arrivalType, from: from, to: to, ), ], ), ), ), ) ], ), ), if (int.parse(patientType) == 7 || int.parse(patientType) == 6) Positioned( top: 175, left: 20, right: 20, child: Row( children: [ Expanded(child: Container()), if (patient.episodeNo == 0) AppButton( title: "${TranslationBase.of(context).createNew}\n${TranslationBase.of(context).episode}", color: patient.patientStatusType == 43 ? Colors.red.shade700 : Colors.grey.shade700, fontColor: Colors.white, vPadding: 8, radius: 30, hPadding: 20, fontWeight: FontWeight.normal, fontSize: 1.6, icon: Image.asset( "assets/images/create-episod.png", color: Colors.white, height: 30, ), onPressed: () async { if (patient.patientStatusType == 43) { PostEpisodeReqModel postEpisodeReqModel = PostEpisodeReqModel( appointmentNo: patient.appointmentNo, patientMRN: patient.patientMRN); GifLoaderDialogUtils.showMyDialog(context); await model .postEpisode(postEpisodeReqModel); GifLoaderDialogUtils.hideDialog(context); patient.episodeNo = model.episodeID; Navigator.of(context).pushNamed( CREATE_EPISODE, arguments: {'patient': patient}); } }, ), if (patient.episodeNo != 0) AppButton( title: "${TranslationBase.of(context).update}\n${TranslationBase.of(context).episode}", color: patient.patientStatusType == 43 ? Colors.red.shade700 : Colors.grey.shade700, fontColor: Colors.white, vPadding: 8, radius: 30, hPadding: 20, fontWeight: FontWeight.normal, fontSize: 1.6, icon: Image.asset( "assets/images/modilfy-episode.png", color: Colors.white, height: 30, ), onPressed: () { if (patient.patientStatusType == 43) { Navigator.of(context).pushNamed( UPDATE_EPISODE, arguments: {'patient': patient}); } }), ], ), ), ], ), ), )); } } class AvatarWidget extends StatelessWidget { final Widget avatarIcon; AvatarWidget(this.avatarIcon); @override Widget build(BuildContext context) { return Container( decoration: BoxDecoration( boxShadow: [ BoxShadow( color: Color.fromRGBO(0, 0, 0, 0.08), offset: Offset(0.0, 5.0), blurRadius: 16.0) ], borderRadius: BorderRadius.all(Radius.circular(35.0)), color: Color(0xffCCCCCC), ), child: avatarIcon, ); } } /* Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Container( decoration: BoxDecoration(boxShadow: [ BoxShadow( color: Colors.grey.shade300, blurRadius: 10.0, spreadRadius: 0, offset: Offset(0, 10)), ], color: Colors.white), child: Column(children: [ Padding( padding: const EdgeInsets.all(8.0), child: Row( children: [ AvatarWidget( Icon( patient.genderDescription == "Male" ? DoctorApp.male : DoctorApp.female_icon, size: 70, color: Colors.white, ), ), SizedBox( width: 20, ), Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ AppText( patient.firstName + ' ' + patient.lastName, color: Colors.black, fontWeight: FontWeight.bold, ), Row( children: [ AppText( TranslationBase.of(context) .fileNo, color: Colors.black, fontWeight: FontWeight.bold, ), SizedBox( width: 4, ), AppText( patient.patientId.toString(), color: Colors.black, fontWeight: FontWeight.normal, ), ], ), model.patientAllergiesList .isNotEmpty && model.getAllergicNames( projectViewModel .isArabic) != '' ? Container( width: MediaQuery.of(context) .size .width * 0.65, child: Padding( padding: const EdgeInsets .symmetric(vertical: 8), child: AppText( TranslationBase.of( context) .allergicTO + " : " + model.getAllergicNames( projectViewModel .isArabic), color: Color(0xFFB9382C), fontWeight: FontWeight.bold, ), ), ) : AppText(''), ], ) ], ), ), Container( width: double.infinity, height: 1, color: Color(0xffCCCCCC), ), Container( height: 11 * SizeConfig.textMultiplier, child: Row( children: [ Expanded( child: Padding( padding: const EdgeInsets.fromLTRB( 16.0, 8.0, 8.0, 8.0), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ AppText( TranslationBase.of(context).age, fontWeight: FontWeight.bold, fontSize: 2 * SizeConfig.textMultiplier, ), SizedBox( height: 4, ), AppText( "${DateUtils.convertDateFromServerFormat(patient.dateofBirth, 'dd-MM-yyyy')} / ${DateUtils.getAgeByBirthday(patient.dateofBirth, context)}", fontWeight: FontWeight.normal, fontSize: 1.6 * SizeConfig.textMultiplier, ), ], ), ), ), Container( width: 1, color: Color(0xffCCCCCC), ), Expanded( child: Padding( padding: const EdgeInsets.fromLTRB( 16.0, 8.0, 8.0, 8.0), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ AppText( TranslationBase.of(context) .nationality, fontWeight: FontWeight.bold, fontSize: 2 * SizeConfig.textMultiplier, ), SizedBox( height: 4, ), AppText( patient.nationalityName ?? patient.nationality, fontWeight: FontWeight.normal, fontSize: 1.7 * SizeConfig.textMultiplier, ), ], ), ), ), Container( width: 1, color: Color(0xffCCCCCC), ), Expanded( child: Padding( padding: const EdgeInsets.fromLTRB( 16.0, 8.0, 8.0, 8.0), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ AppText( TranslationBase.of(context) .gender, fontWeight: FontWeight.bold, fontSize: 2 * SizeConfig.textMultiplier, ), SizedBox( height: 4, ), AppText( patient.gender.toString() == '1' ? 'Male' : 'Female', fontWeight: FontWeight.normal, fontSize: 1.8 * SizeConfig.textMultiplier, ), ], ), ), ), ], ), ), Container( width: double.infinity, height: 1, color: Color(0xffCCCCCC), ), ]), ), if (patient.admissionNo != null) Container( margin: EdgeInsets.all(16), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ AppText( TranslationBase.of(context) .admissionDetail, color: Colors.black, fontWeight: FontWeight.bold, fontSize: 1.8 * SizeConfig.textMultiplier, ), SizedBox( height: 4, ), Container( decoration: BoxDecoration( color: Colors.white, shape: BoxShape.rectangle, borderRadius: BorderRadius.circular(8), border: Border.fromBorderSide(BorderSide( color: Color(0xffBBBBBB), width: 1, )), ), child: Column( children: [ Padding( padding: EdgeInsets.all(16), child: Column( children: [ Row( children: [ Container( width: 14 * SizeConfig .textMultiplier, child: AppText( TranslationBase.of( context) .dateTime, color: Colors.black, fontWeight: FontWeight.bold, fontSize: 1.6 * SizeConfig .textMultiplier, ), ), Expanded( child: AppText( patient.createdOn != null ? "${DateUtils.convertDateFromServerFormat(patient.createdOn, 'EEEE dd, MMMM yyyy hh:mm a')}" : "", color: Colors.black, fontWeight: FontWeight.normal, fontSize: 1.6 * SizeConfig .textMultiplier, ), ), ], ), SizedBox( height: 4, ), Row( children: [ Container( width: 14 * SizeConfig .textMultiplier, child: AppText( TranslationBase.of( context) .admissionNo, color: Colors.black, fontWeight: FontWeight.bold, fontSize: 1.6 * SizeConfig .textMultiplier, ), ), AppText( patient.admissionNo != null ? patient.admissionNo : '', color: Colors.black, fontWeight: FontWeight.normal, fontSize: 1.6 * SizeConfig .textMultiplier, ), ], ), SizedBox( height: 4, ), Row( children: [ Container( width: 14 * SizeConfig .textMultiplier, child: AppText( TranslationBase.of( context) .losNo, color: Colors.black, fontWeight: FontWeight.bold, fontSize: 1.6 * SizeConfig .textMultiplier, ), ), AppText( patient.createdOn != null ? DateUtils .differenceBetweenServerDateAndCurrent( patient .createdOn, context) : "", color: Colors.black, fontWeight: FontWeight.normal, fontSize: 1.6 * SizeConfig .textMultiplier, ), ], ), ], ), ), const Divider( color: Color(0xffCCCCCC), height: 5, thickness: 1, indent: 0, endIndent: 0, ), Container( height: 10 * SizeConfig.textMultiplier, child: Row( children: [ Expanded( child: Padding( padding: const EdgeInsets .fromLTRB( 16.0, 8.0, 8.0, 8.0), child: Column( crossAxisAlignment: CrossAxisAlignment .start, children: [ AppText( TranslationBase.of( context) .area, fontWeight: FontWeight.bold, fontSize: 1.6 * SizeConfig .textMultiplier, ), SizedBox( height: 4, ), AppText( patient .clinicDescription, fontWeight: FontWeight.normal, fontSize: 1.6 * SizeConfig .textMultiplier, ), ], ), ), ), Container( width: 1, color: Color(0xffCCCCCC), ), Expanded( child: Padding( padding: const EdgeInsets .fromLTRB( 16.0, 8.0, 8.0, 8.0), child: Column( crossAxisAlignment: CrossAxisAlignment .start, mainAxisAlignment: MainAxisAlignment .spaceEvenly, children: [ Expanded( child: Row( crossAxisAlignment: CrossAxisAlignment .start, children: [ AppText( TranslationBase.of( context) .room, fontWeight: FontWeight .bold, fontSize: 1.6 * SizeConfig .textMultiplier, ), SizedBox( width: 4, ), Expanded( child: AppText( "${patient.nursingStationName}\n${patient.roomId}", fontWeight: FontWeight .normal, fontSize: 1.4 * SizeConfig .textMultiplier, ), ), ], ), ), SizedBox( height: 4, ), Expanded( child: Row( crossAxisAlignment: CrossAxisAlignment .start, children: [ AppText( TranslationBase.of( context) .bed, fontWeight: FontWeight .bold, fontSize: 1.6 * SizeConfig .textMultiplier, ), SizedBox( width: 4, ), AppText( "${patient.bedId}", fontWeight: FontWeight .normal, fontSize: 1.6 * SizeConfig .textMultiplier, ), ], ), ), ], ), ), ), ], ), ) ], ), ) ], ), ), ], ),*/