You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
doctor_app_flutter/lib/screens/patients/profile/UCAF/UCAF-input-screen.dart

394 lines
20 KiB
Dart

import 'package:doctor_app_flutter/config/size_config.dart';
import 'package:doctor_app_flutter/core/viewModel/patient-ucaf-viewmodel.dart';
import 'package:doctor_app_flutter/icons_app/doctor_app_icons.dart';
import 'package:doctor_app_flutter/core/model/patient/patiant_info_model.dart';
import 'package:doctor_app_flutter/screens/base/base_view.dart';
import 'package:doctor_app_flutter/utils/utils.dart';
import 'package:doctor_app_flutter/utils/translations_delegate_base.dart';
import 'package:doctor_app_flutter/widgets/shared/app_scaffold_widget.dart';
import 'package:doctor_app_flutter/widgets/shared/app_texts_widget.dart';
import 'package:doctor_app_flutter/widgets/shared/text_fields/app-textfield-custom.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import '../../../../widgets/shared/errors/error_message.dart';
class UCAFInputScreen extends StatefulWidget {
final PatiantInformtion patient;
final Function changeLoadingState;
UCAFInputScreen(this.patient, {this.changeLoadingState});
@override
_UCAFInputScreenState createState() => _UCAFInputScreenState(this.patient);
}
class _UCAFInputScreenState extends State<UCAFInputScreen> {
final PatiantInformtion patient;
_UCAFInputScreenState(this.patient);
bool _inPatient = false;
bool _emergencyCase = false;
final _durationOfIllnessController = TextEditingController();
final _additionalComplaintsController = TextEditingController();
final _otherController = TextEditingController();
final _howController = TextEditingController();
final _whenController = TextEditingController();
final _whereController = TextEditingController();
final _managementsLineController = TextEditingController();
final _signsController = TextEditingController();
///TODO Elham* fix this
List<Map> conditionsData = [
{"name": "CHRONIC", "isChecked": false},
{"name": "RTA", "isChecked": false},
{"name": "PSYCHIATRIC", "isChecked": false},
{"name": "WORK RELATED", "isChecked": false},
{"name": "VACCINATION", "isChecked": false},
{"name": "CONGENITAL", "isChecked": false},
{"name": "INFERTILITY", "isChecked": false},
{"name": "CHECK-UP", "isChecked": false},
{"name": "PREGNANCY/INDICATE MP", "isChecked": false},
{"name": "CLEANING", "isChecked": false},
{"name": "ORTHO DONTICS", "isChecked": false},
{"name": "SPORTS RELATED", "isChecked": false},
{"name": "REGULAR DENTAL TREATMENT", "isChecked": false},
{"name": "IS TRAUMA TREATMENT SPECIFY ETA", "isChecked": false},
];
@override
Widget build(BuildContext context) {
return BaseView<UcafViewModel>(
onModelReady: (model) async {
model.resetDataInFirst();
await model.getUCAFData(patient);
widget.changeLoadingState(false);
},
builder: (_, model, w) => AppScaffold(
baseViewModel: model,
isShowAppBar: false,
body: model.patientVitalSignsHistory != null &&
model.patientVitalSignsHistory.length > 0 &&
model.patientChiefComplaintList != null &&
model.patientChiefComplaintList.length > 0
? Column(
children: [
Expanded(
child: SingleChildScrollView(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
// PatientHeaderWidgetNoAvatar(patient),
Container(
margin: EdgeInsets.symmetric(
vertical: 0, horizontal: 16),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
/*CheckboxListTile(
title: AppText(
TranslationBase.of(context).inPatient,
fontWeight: FontWeight.normal,
fontFamily: 'Poppins',
fontSize: SizeConfig.textMultiplier * 2.2,
),
value: _inPatient,
onChanged: (newValue) {
setState(() {
_inPatient = newValue;
});
},
activeColor: HexColor("#D02127"),
controlAffinity:
ListTileControlAffinity.leading,
contentPadding: EdgeInsets.all(0),
),
CheckboxListTile(
title: AppText(
TranslationBase.of(context).emergencyCase,
fontWeight: FontWeight.normal,
fontFamily: 'Poppins',
fontSize: SizeConfig.textMultiplier * 2.2,
),
value: _emergencyCase,
onChanged: (newValue) {
setState(() {
_emergencyCase = newValue;
});
},
activeColor: HexColor("#D02127"),
controlAffinity:
ListTileControlAffinity.leading,
contentPadding: EdgeInsets.all(0),
),
AppTextFieldCustom(
hintText: TranslationBase.of(context)
.durationOfIllness,
dropDownText: "3",
inputType: TextInputType.number,
inputFormatters: [
FilteringTextInputFormatter.allow(
RegExp(ONLY_NUMBERS))
],
),
SizedBox(
height: 16,
),*/
Row(
mainAxisAlignment:
MainAxisAlignment.spaceBetween,
children: [
Row(
children: [
Icon(
DoctorApp.warning,
size: 20,
color: Color(0xFFCC9B14),
),
SizedBox(
width: 8,
),
AppText(
"BP (H/L)",
fontSize:
SizeConfig.textMultiplier * 1.8,
color: Colors.black,
fontWeight: FontWeight.normal,
),
SizedBox(
width: 8,
),
AppText(
"${model.bloodPressure}",
fontSize:
SizeConfig.textMultiplier * 2,
color: Colors.grey.shade800,
fontWeight: FontWeight.w700,
),
],
),
SizedBox(
width: 6,
),
Expanded(
child: Row(
children: [
AppText(
"${TranslationBase.of(context).temperature}",
fontSize:
SizeConfig.textMultiplier * 1.8,
color: Colors.black,
fontWeight: FontWeight.normal,
),
SizedBox(
width: 4,
),
Expanded(
child: AppText(
"${model.temperatureCelcius}(C), ${(double.parse(model.temperatureCelcius) * (9 / 5) + 32).toStringAsFixed(2)}(F)",
fontSize:
SizeConfig.textMultiplier * 2,
color: Colors.grey.shade800,
fontWeight: FontWeight.w700,
),
),
],
),
),
],
),
SizedBox(
height: 2,
),
Row(
mainAxisAlignment:
MainAxisAlignment.spaceBetween,
children: [
Row(
children: [
AppText(
"${TranslationBase.of(context).pulseBeats}:",
fontSize:
SizeConfig.textMultiplier * 1.8,
color: Colors.black,
fontWeight: FontWeight.normal,
),
SizedBox(
width: 4,
),
AppText(
"${model.hartRat}",
fontSize:
SizeConfig.textMultiplier * 2,
color: Colors.grey.shade800,
fontWeight: FontWeight.w700,
),
],
),
],
),
SizedBox(
height: 16,
),
AppText(
TranslationBase.of(context)
.chiefComplaintsAndSymptoms,
fontFamily: 'Poppins',
fontSize: SizeConfig.textMultiplier * 2.2,
fontWeight: FontWeight.w700,
color: Color(0xFF2E303A),
),
/* SizedBox(
height: 4,
),
AppText(
TranslationBase.of(context)
.patientFeelsPainInHisBackAndCough,
fontFamily: 'Poppins',
fontWeight: FontWeight.normal,
color: Color(0xFF575757),
fontSize: SizeConfig.textMultiplier * 1.8,
),*/
SizedBox(
height: 8,
),
AppTextFieldCustom(
hintText:
TranslationBase.of(context).instruction,
dropDownText: TabUtil.parseHtmlString(model
.patientChiefComplaintList[0]
.chiefComplaint),
controller: _additionalComplaintsController,
inputType: TextInputType.multiline,
enabled: false,
minLines: 1,
maxLines: 20,
),
/*SizedBox(
height: 16,
),
AppText(
TranslationBase.of(context).otherConditions,
fontWeight: FontWeight.bold,
fontSize: SizeConfig.textMultiplier * 2.1,
color: Color(0xFF2E303A),
),
...List.generate(
conditionsData.length,
(index) => CheckboxListTile(
title: AppText(
conditionsData[index]['name'],
fontWeight: FontWeight.normal,
fontSize:
SizeConfig.textMultiplier * 2.1,
fontFamily: 'Poppins',
),
value: conditionsData[index]
['isChecked'],
onChanged: (newValue) {
setState(() {
conditionsData[index]
['isChecked'] = newValue;
});
},
controlAffinity:
ListTileControlAffinity.leading,
contentPadding: EdgeInsets.all(0),
)),*/
SizedBox(
height: 8,
),
/* AppTextFieldCustom(
hintText: TranslationBase.of(context).other,
dropDownText: TranslationBase.of(context).none,
enabled: false,
),
SizedBox(
height: 8,
),
AppTextFieldCustom(
hintText: TranslationBase.of(context).how,
dropDownText: TranslationBase.of(context).none,
enabled: false,
),
SizedBox(
height: 8,
),
Row(
children: [
Expanded(
child: AppTextFieldCustom(
hintText:
TranslationBase.of(context).when,
dropDownText: TranslationBase.of(context).none,
enabled: false,
),
),
SizedBox(
width: 4,
),
Expanded(
child: AppTextFieldCustom(
hintText:
TranslationBase.of(context).where,
dropDownText: TranslationBase.of(context).none,
enabled: false,
),
),
],
),
SizedBox(
height: 8,
),
AppTextFieldCustom(
height: screenSize.height * 0.1,
hintText: TranslationBase.of(context)
.specifyPossibleLineManagement,
dropDownText: TranslationBase.of(context).none,
enabled: false,
minLines: 4,
maxLines: 6,
),
SizedBox(
height: 26,
),
AppText(
TranslationBase.of(context).significantSigns,
fontWeight: FontWeight.bold,
fontFamily: 'Poppins',
fontSize: SizeConfig.textMultiplier * 2.2,
),
SizedBox(
height: 8,
),
AppTextFieldCustom(
height: screenSize.height * 0.1,
hintText:
TranslationBase.of(context).backAbdomen,
dropDownText: "BackLNeck",
enabled: false,
),*/
],
),
),
],
),
),
),
],
)
: model.patientChiefComplaintList != null ||
model.patientVitalSignsHistory != null
? Center(
child: ErrorMessage(
error: model.patientVitalSignsHistory == null ||
model.patientVitalSignsHistory.length == 0
? TranslationBase.of(context).vitalSignEmptyMsg
: TranslationBase.of(context).chiefComplaintEmptyMsg))
: Container(),
),
);
}
}