From c88a2e93fbd974ce5a9eccc449d1a0f513905cf0 Mon Sep 17 00:00:00 2001 From: Yasien Mac Mini Date: Tue, 10 Jun 2025 12:58:24 +0200 Subject: [PATCH] use new date and time in Doc Gen --- .../lib/mih_components/med_cert_input.dart | 62 ------- .../mih_date_input.dart | 152 ------------------ .../components/Claim_Statement_Window.dart | 14 +- .../package_tools/patient_documents.dart | 95 +++++++---- 4 files changed, 74 insertions(+), 249 deletions(-) delete mode 100644 Frontend/lib/mih_components/med_cert_input.dart delete mode 100644 Frontend/lib/mih_components/mih_inputs_and_buttons/mih_date_input.dart diff --git a/Frontend/lib/mih_components/med_cert_input.dart b/Frontend/lib/mih_components/med_cert_input.dart deleted file mode 100644 index 77c198f6..00000000 --- a/Frontend/lib/mih_components/med_cert_input.dart +++ /dev/null @@ -1,62 +0,0 @@ -import 'package:flutter/material.dart'; -import '../mih_components/mih_inputs_and_buttons/mih_date_input.dart'; - -class Medcertinput extends StatefulWidget { - final TextEditingController startDateController; - final TextEditingController endDateTextController; - final TextEditingController retDateTextController; - const Medcertinput({ - super.key, - required this.startDateController, - required this.endDateTextController, - required this.retDateTextController, - }); - - @override - State createState() => _MedcertinputState(); -} - -class _MedcertinputState extends State { - @override - void dispose() { - super.dispose(); - } - - @override - Widget build(BuildContext context) { - return SizedBox( - //height: 325, - child: Column( - children: [ - //const SizedBox(height: 50.0), - SizedBox( - width: 700, - child: MIHDateField( - controller: widget.startDateController, - lableText: "From", - required: true, - ), - ), - const SizedBox(height: 10.0), - SizedBox( - width: 700, - child: MIHDateField( - controller: widget.endDateTextController, - lableText: "Up to Including", - required: true, - ), - ), - const SizedBox(height: 10.0), - SizedBox( - width: 700, - child: MIHDateField( - controller: widget.retDateTextController, - lableText: "Return", - required: true, - ), - ), - ], - ), - ); - } -} diff --git a/Frontend/lib/mih_components/mih_inputs_and_buttons/mih_date_input.dart b/Frontend/lib/mih_components/mih_inputs_and_buttons/mih_date_input.dart deleted file mode 100644 index fd897383..00000000 --- a/Frontend/lib/mih_components/mih_inputs_and_buttons/mih_date_input.dart +++ /dev/null @@ -1,152 +0,0 @@ -import 'package:flutter/material.dart'; -import '../../main.dart'; - -class MIHDateField extends StatefulWidget { - final TextEditingController controller; - final String lableText; - final bool required; - - const MIHDateField({ - super.key, - required this.controller, - required this.lableText, - required this.required, - }); - - @override - State createState() => _MIHDateFieldState(); -} - -class _MIHDateFieldState extends State { - final FocusNode _focus = FocusNode(); - bool startup = true; - // bool makeEditable() { - Future _selectDate(BuildContext context) async { - DateTime? picked = await showDatePicker( - context: context, - initialDate: DateTime.now(), - firstDate: DateTime(2000), - lastDate: DateTime(2100), - ); - if (picked != null) { - setState(() { - widget.controller.text = picked.toString().split(" ")[0]; - }); - } - } - - Widget setRequiredText() { - if (widget.required) { - return Row( - mainAxisSize: MainAxisSize.min, - children: [ - Text( - "*", - style: TextStyle( - color: MzanziInnovationHub.of(context)!.theme.errorColor()), - ), - const SizedBox( - width: 8.0, - ), - Text(widget.lableText, - style: TextStyle( - color: - MzanziInnovationHub.of(context)!.theme.secondaryColor())), - ], - ); - } else { - return Text(widget.lableText, - style: TextStyle( - color: MzanziInnovationHub.of(context)!.theme.secondaryColor())); - } - } - - void _onFocusChange() { - setState(() { - startup = false; - }); - } - - String? get _errorText { - final text = widget.controller.text; - if (startup) { - return null; - } - if (!widget.required) { - return null; - } - if (text.isEmpty) { - return "${widget.lableText} is required"; - } - return null; - } - - @override - void dispose() { - _focus.dispose(); - super.dispose(); - } - - @override - void initState() { - _focus.addListener(_onFocusChange); - super.initState(); - } - - @override - Widget build(BuildContext context) { - return TextField( - style: TextStyle( - color: MzanziInnovationHub.of(context)!.theme.secondaryColor()), - controller: widget.controller, - readOnly: true, - obscureText: false, - focusNode: _focus, - onChanged: (_) => setState(() { - startup = false; - }), - decoration: InputDecoration( - errorText: _errorText, - errorStyle: TextStyle( - color: MzanziInnovationHub.of(context)!.theme.errorColor(), - fontWeight: FontWeight.bold), - label: setRequiredText(), - //labelText: widget.lableText, - //labelStyle: const TextStyle(color: Colors.blueAccent), - prefixIcon: Icon( - Icons.calendar_today, - color: MzanziInnovationHub.of(context)!.theme.secondaryColor(), - ), - fillColor: MzanziInnovationHub.of(context)!.theme.primaryColor(), - filled: true, - //hintText: hintText, - //hintStyle: TextStyle(color: Colors.blueGrey[400]), - enabledBorder: OutlineInputBorder( - borderSide: BorderSide( - color: MzanziInnovationHub.of(context)!.theme.secondaryColor(), - width: 2.0, - ), - ), - focusedErrorBorder: OutlineInputBorder( - borderSide: BorderSide( - color: MzanziInnovationHub.of(context)!.theme.errorColor(), - width: 2.0, - ), - ), - errorBorder: OutlineInputBorder( - borderSide: BorderSide( - color: MzanziInnovationHub.of(context)!.theme.errorColor(), - width: 2.0, - ), - ), - focusedBorder: OutlineInputBorder( - borderSide: BorderSide( - color: MzanziInnovationHub.of(context)!.theme.secondaryColor()), - ), - ), - onTap: () { - _selectDate(context); - }, - ); - } -} diff --git a/Frontend/lib/mih_packages/patient_profile/pat_profile/components/Claim_Statement_Window.dart b/Frontend/lib/mih_packages/patient_profile/pat_profile/components/Claim_Statement_Window.dart index a3959a58..cb06b1e3 100644 --- a/Frontend/lib/mih_packages/patient_profile/pat_profile/components/Claim_Statement_Window.dart +++ b/Frontend/lib/mih_packages/patient_profile/pat_profile/components/Claim_Statement_Window.dart @@ -3,8 +3,8 @@ import 'package:mzansi_innovation_hub/mih_apis/mih_alert_services.dart'; import 'package:mzansi_innovation_hub/mih_apis/mih_claim_statement_generation_api.dart'; import 'package:mzansi_innovation_hub/mih_apis/mih_icd10_code_api.dart'; import 'package:mzansi_innovation_hub/mih_apis/mih_validation_services.dart'; -import 'package:mzansi_innovation_hub/mih_components/mih_inputs_and_buttons/mih_date_input.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_button.dart'; +import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_date_field.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_form.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_package_window.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_radio_options.dart'; @@ -118,11 +118,19 @@ class _ClaimStatementWindowState extends State { color: MzanziInnovationHub.of(context)!.theme.secondaryColor()), const SizedBox(height: 10), - MIHDateField( + MihDateField( controller: _serviceDateController, - lableText: "Date of Service", + labelText: "Date of Service", required: true, + validator: (value) { + return MihValidationServices().isEmpty(value); + }, ), + // MIHDateField( + // controller: _serviceDateController, + // lableText: "Date of Service", + // required: true, + // ), const SizedBox(height: 10), MihRadioOptions( controller: _serviceDescController, diff --git a/Frontend/lib/mih_packages/patient_profile/pat_profile/package_tools/patient_documents.dart b/Frontend/lib/mih_packages/patient_profile/pat_profile/package_tools/patient_documents.dart index 8ed0a6b3..ea894653 100644 --- a/Frontend/lib/mih_packages/patient_profile/pat_profile/package_tools/patient_documents.dart +++ b/Frontend/lib/mih_packages/patient_profile/pat_profile/package_tools/patient_documents.dart @@ -5,9 +5,9 @@ import 'package:mzansi_innovation_hub/main.dart'; import 'package:mzansi_innovation_hub/mih_apis/mih_alert_services.dart'; import 'package:mzansi_innovation_hub/mih_apis/mih_file_api.dart'; import 'package:mzansi_innovation_hub/mih_apis/mih_validation_services.dart'; -import 'package:mzansi_innovation_hub/mih_components/med_cert_input.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_layout/mih_single_child_scroll.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_button.dart'; +import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_date_field.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_form.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_package_tool_body.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_floating_menu.dart'; @@ -64,6 +64,7 @@ class _PatientDocumentsState extends State { final outputController = TextEditingController(); late PlatformFile? selected; final _formKey = GlobalKey(); + final _formKey2 = GlobalKey(); late String env; Future submitDocUploadForm() async { @@ -296,7 +297,7 @@ class _PatientDocumentsState extends State { ), ], ), - const SizedBox(height: 15), + const SizedBox(height: 20), MihButton( onPressed: () { if (_formKey.currentState!.validate()) { @@ -342,37 +343,67 @@ class _PatientDocumentsState extends State { }, windowBody: Column( children: [ - Medcertinput( - startDateController: startDateController, - endDateTextController: endDateTextController, - retDateTextController: retDateTextController, - ), - const SizedBox(height: 15.0), - MihButton( - onPressed: () async { - if (isMedCertFieldsFilled()) { - await generateMedCert(); - //Navigator.pop(context); - } else { - showDialog( - context: context, - builder: (context) { - return const MIHErrorMessage(errorType: "Input Error"); - }, - ); - } - }, - buttonColor: - MzanziInnovationHub.of(context)!.theme.secondaryColor(), - width: 300, - child: Text( - "Generate", - style: TextStyle( - color: MzanziInnovationHub.of(context)!.theme.primaryColor(), - fontSize: 20, - fontWeight: FontWeight.bold, + MihForm( + formKey: _formKey2, + formFields: [ + MihDateField( + controller: startDateController, + labelText: "From", + required: true, + validator: (value) { + return MihValidationServices().isEmpty(value); + }, ), - ), + const SizedBox(height: 10.0), + MihDateField( + controller: endDateTextController, + labelText: "Up to Including", + required: true, + validator: (value) { + return MihValidationServices().isEmpty(value); + }, + ), + const SizedBox(height: 10.0), + MihDateField( + controller: retDateTextController, + labelText: "Return", + required: true, + validator: (value) { + return MihValidationServices().isEmpty(value); + }, + ), + // Medcertinput( + // startDateController: startDateController, + // endDateTextController: endDateTextController, + // retDateTextController: retDateTextController, + // ), + const SizedBox(height: 15.0), + Center( + child: MihButton( + onPressed: () async { + if (_formKey2.currentState!.validate()) { + await generateMedCert(); + //Navigator.pop(context); + } else { + MihAlertServices().formNotFilledCompletely(context); + } + }, + buttonColor: + MzanziInnovationHub.of(context)!.theme.secondaryColor(), + width: 300, + child: Text( + "Generate", + style: TextStyle( + color: MzanziInnovationHub.of(context)! + .theme + .primaryColor(), + fontSize: 20, + fontWeight: FontWeight.bold, + ), + ), + ), + ), + ], ), ], ),