favourite procedure templates

merge-requests/674/head
hussam al-habibeh 5 years ago
parent 6b6243232c
commit 3b800bcd19

@ -5,7 +5,7 @@ const ONLY_NUMBERS = "[0-9]";
const ONLY_LETTERS = "[a-zA-Z &'\"]"; const ONLY_LETTERS = "[a-zA-Z &'\"]";
const ONLY_DATE = "[0-9/]"; const ONLY_DATE = "[0-9/]";
const BASE_URL = 'https://hmgwebservices.com/'; const BASE_URL = 'https://hmgwebservices.com/';
// const BASE_URL = 'https://uat.hmgwebservices.com/'; //const BASE_URL = 'https://uat.hmgwebservices.com/';
const PHARMACY_ITEMS_URL = "Services/Lists.svc/REST/GetPharmcyItems_Region_enh"; const PHARMACY_ITEMS_URL = "Services/Lists.svc/REST/GetPharmcyItems_Region_enh";
const PHARMACY_LIST_URL = "Services/Patients.svc/REST/GetPharmcyList"; const PHARMACY_LIST_URL = "Services/Patients.svc/REST/GetPharmcyList";
const PATIENT_PROGRESS_NOTE_URL = const PATIENT_PROGRESS_NOTE_URL =

@ -145,307 +145,313 @@ class _AddSelectedProcedureState extends State<AddSelectedProcedure> {
builder: (BuildContext context, ProcedureViewModel model, Widget child) => builder: (BuildContext context, ProcedureViewModel model, Widget child) =>
AppScaffold( AppScaffold(
isShowAppBar: false, isShowAppBar: false,
body: NetworkBaseView( body: Column(
baseViewModel: model, children: [
child: DraggableScrollableSheet( Container(
minChildSize: 0.90, height: MediaQuery.of(context).size.height * 0.070,
initialChildSize: 0.95, ),
maxChildSize: 1.0, Expanded(
builder: child: NetworkBaseView(
(BuildContext context, ScrollController scrollController) { baseViewModel: model,
return SingleChildScrollView( child: DraggableScrollableSheet(
child: Container( minChildSize: 0.90,
height: MediaQuery.of(context).size.height * 1.20, initialChildSize: 0.95,
child: Padding( maxChildSize: 1.0,
padding: EdgeInsets.all(12.0), builder: (BuildContext context,
child: Column( ScrollController scrollController) {
crossAxisAlignment: CrossAxisAlignment.start, return SingleChildScrollView(
children: [ child: Container(
Row( height: MediaQuery.of(context).size.height * 1.20,
mainAxisAlignment: MainAxisAlignment.spaceBetween, child: Padding(
padding: EdgeInsets.all(12.0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
AppText( Row(
TranslationBase.of(context) mainAxisAlignment:
.pleaseEnterProcedure, MainAxisAlignment.spaceBetween,
fontWeight: FontWeight.w700, children: [
fontSize: 20, AppText(
TranslationBase.of(context)
.pleaseEnterProcedure,
fontWeight: FontWeight.w700,
fontSize: 20,
),
]),
SizedBox(
height:
MediaQuery.of(context).size.height * 0.04,
), ),
InkWell( Row(
child: Icon( children: [
Icons.close, Container(
size: 24.0, width: MediaQuery.of(context).size.width *
), 0.81,
onTap: () { child: AppTextFieldCustom(
Navigator.pop(context); hintText: TranslationBase.of(context)
}, .searchProcedureHere,
) isTextFieldHasSuffix: false,
]),
SizedBox(
height: MediaQuery.of(context).size.height * 0.04,
),
Row(
children: [
Container(
width: MediaQuery.of(context).size.width * 0.85,
child: AppTextFieldCustom(
hintText: TranslationBase.of(context)
.searchProcedureHere,
isTextFieldHasSuffix: false,
maxLines: 1, maxLines: 1,
minLines: 1, minLines: 1,
hasBorder: true, hasBorder: true,
controller: procedureName, controller: procedureName,
// onSubmitted: (_) { // onSubmitted: (_) {
// model.getProcedureCategory( // model.getProcedureCategory(
// categoryName: procedureName.text); // categoryName: procedureName.text);
// }, // },
onClick: () { onClick: () {
if (procedureName.text.isNotEmpty && if (procedureName.text.isNotEmpty &&
procedureName.text.length >= 3) procedureName.text.length >= 3)
model.getProcedureCategory( model.getProcedureCategory(
categoryName: procedureName.text); categoryName:
else procedureName.text);
DrAppToastMsg.showErrorToast( else
TranslationBase.of(context) DrAppToastMsg.showErrorToast(
.atLeastThreeCharacters, TranslationBase.of(context)
); .atLeastThreeCharacters,
}, );
},
),
),
SizedBox(
width: MediaQuery.of(context).size.width *
0.02,
),
InkWell(
onTap: () {
if (procedureName.text.isNotEmpty &&
procedureName.text.length >= 3)
model.getProcedureCategory(
categoryName: procedureName.text);
else
DrAppToastMsg.showErrorToast(
TranslationBase.of(context)
.atLeastThreeCharacters,
);
},
child: Icon(
Icons.search,
size: 25.0,
),
),
],
), ),
), // SizedBox(
SizedBox( // width: MediaQuery.of(context).size.width * 0.29,
width: MediaQuery.of(context).size.width * 0.02, // ),
), // InkWell(
InkWell( // child: Icon(
onTap: () { // Icons.close,
if (procedureName.text.isNotEmpty && // size: 24.0,
procedureName.text.length >= 3) // ),
model.getProcedureCategory( // onTap: () {
categoryName: procedureName.text); // Navigator.pop(context);
else // },
DrAppToastMsg.showErrorToast( // ),
TranslationBase.of(context) // ],
.atLeastThreeCharacters, // ),
); // SizedBox(
}, // height: 10.0,
child: Icon( // ),
Icons.search, // Container(
size: 25.0, // height: screenSize.height * 0.070,
// child: InkWell(
// onTap: model.categoryList != null &&
// model.categoryList.length > 0
// ? () {
// ListSelectDialog dialog =
// ListSelectDialog(
// list: model.categoryList,
// attributeName: 'categoryName',
// attributeValueId: 'categoryId',
// okText: TranslationBase.of(context).ok,
// okFunction: (selectedValue) {
// setState(() {
// selectedCategory = selectedValue;
// model.getProcedureCategory(
// categoryName: selectedCategory[
// 'categoryName'],
// categoryID: selectedCategory[
// 'categoryId'] <=
// 9
// ? "0" +
// selectedCategory[
// 'categoryId']
// .toString()
// : selectedCategory[
// 'categoryId']
// .toString());
// });
// },
// );
// showDialog(
// barrierDismissible: false,
// context: context,
// builder: (BuildContext context) {
// return dialog;
// },
// );
// //model.getProcedureCategory();
// }
// : null,
// child: TextField(
// decoration: textFieldSelectorDecoration(
// TranslationBase.of(context)
// .procedureCategorise,
// selectedCategory != null
// ? selectedCategory['categoryName']
// : null,
// true,
// suffixIcon: Icon(
// Icons.search,
// color: Colors.black,
// )),
// enabled: false,
// ),
// ),
// ),
if (procedureName.text.isNotEmpty &&
model.procedureList.length != 0)
NetworkBaseView(
baseViewModel: model,
child:
// selectedCategory != null
// ? selectedCategory['categoryId'] == 02 ||
// selectedCategory['categoryId'] == 03
// ?
EntityListCheckboxSearchWidget(
model: widget.model,
masterList: widget
.model.categoriesList[0].entityList,
removeHistory: (item) {
setState(() {
entityList.remove(item);
});
},
addHistory: (history) {
setState(() {
entityList.add(history);
});
},
addSelectedHistories: () {
//TODO build your fun herr
// widget.addSelectedHistories();
},
isEntityListSelected: (master) =>
isEntityListSelected(master),
)
// : ProcedureListWidget(
// model: widget.model,
// masterList: widget.model
// .categoriesList[0].entityList,
// removeHistory: (item) {
// setState(() {
// entityList.remove(item);
// });
// },
// addHistory: (history) {
// setState(() {
// entityList.add(history);
// });
// },
// addSelectedHistories: () {
// //TODO build your fun herr
// // widget.addSelectedHistories();
// },
// isEntityListSelected: (master) =>
// isEntityListSelected(master),
// )
// : null,
),
SizedBox(
height: 15.0,
), ),
), Column(
], mainAxisAlignment:
), MainAxisAlignment.spaceBetween,
// SizedBox( children: [
// width: MediaQuery.of(context).size.width * 0.29, // Container(
// ), // child: Row(
// InkWell( // children: [
// child: Icon( // AppText(
// Icons.close, // TranslationBase.of(context).orderType),
// size: 24.0, // Radio(
// ), // activeColor: Color(0xFFB9382C),
// onTap: () { // value: 1,
// Navigator.pop(context); // groupValue: selectedType,
// }, // onChanged: (value) {
// ), // setSelectedType(value);
// ], // },
// ), // ),
// SizedBox( // Text('routine'),
// height: 10.0, // Radio(
// ), // activeColor: Color(0xFFB9382C),
// Container( // groupValue: selectedType,
// height: screenSize.height * 0.070, // value: 0,
// child: InkWell( // onChanged: (value) {
// onTap: model.categoryList != null && // setSelectedType(value);
// model.categoryList.length > 0 // },
// ? () { // ),
// ListSelectDialog dialog = // Text(TranslationBase.of(context).urgent),
// ListSelectDialog( // ],
// list: model.categoryList, // ),
// attributeName: 'categoryName', // ),
// attributeValueId: 'categoryId', // SizedBox(
// okText: TranslationBase.of(context).ok, // height: 15.0,
// okFunction: (selectedValue) { // ),
// setState(() { // TextFields(
// selectedCategory = selectedValue; // hintText: TranslationBase.of(context).remarks,
// model.getProcedureCategory( // controller: remarksController,
// categoryName: selectedCategory[ // minLines: 3,
// 'categoryName'], // maxLines: 5,
// categoryID: selectedCategory[ // ),
// 'categoryId'] <= SizedBox(
// 9 height: 100.0,
// ? "0" + ),
// selectedCategory[ ],
// 'categoryId']
// .toString()
// : selectedCategory[
// 'categoryId']
// .toString());
// });
// },
// );
// showDialog(
// barrierDismissible: false,
// context: context,
// builder: (BuildContext context) {
// return dialog;
// },
// );
// //model.getProcedureCategory();
// }
// : null,
// child: TextField(
// decoration: textFieldSelectorDecoration(
// TranslationBase.of(context)
// .procedureCategorise,
// selectedCategory != null
// ? selectedCategory['categoryName']
// : null,
// true,
// suffixIcon: Icon(
// Icons.search,
// color: Colors.black,
// )),
// enabled: false,
// ),
// ),
// ),
if (procedureName.text.isNotEmpty &&
model.procedureList.length != 0)
NetworkBaseView(
baseViewModel: model,
child:
// selectedCategory != null
// ? selectedCategory['categoryId'] == 02 ||
// selectedCategory['categoryId'] == 03
// ?
EntityListCheckboxSearchWidget(
model: widget.model,
masterList:
widget.model.categoriesList[0].entityList,
removeHistory: (item) {
setState(() {
entityList.remove(item);
});
},
addHistory: (history) {
setState(() {
entityList.add(history);
});
},
addSelectedHistories: () {
//TODO build your fun herr
// widget.addSelectedHistories();
},
isEntityListSelected: (master) =>
isEntityListSelected(master),
) )
// : ProcedureListWidget( ],
// model: widget.model, ),
// masterList: widget.model
// .categoriesList[0].entityList,
// removeHistory: (item) {
// setState(() {
// entityList.remove(item);
// });
// },
// addHistory: (history) {
// setState(() {
// entityList.add(history);
// });
// },
// addSelectedHistories: () {
// //TODO build your fun herr
// // widget.addSelectedHistories();
// },
// isEntityListSelected: (master) =>
// isEntityListSelected(master),
// )
// : null,
),
SizedBox(
height: 15.0,
), ),
Column( ),
mainAxisAlignment: MainAxisAlignment.spaceBetween, );
children: [ }),
// Container( ),
// child: Row( ),
// children: [ Container(
// AppText( margin: EdgeInsets.all(SizeConfig.widthMultiplier * 5),
// TranslationBase.of(context).orderType), child: Wrap(
// Radio( alignment: WrapAlignment.center,
// activeColor: Color(0xFFB9382C), children: <Widget>[
// value: 1, AppButton(
// groupValue: selectedType, title: TranslationBase.of(context).addSelectedProcedures,
// onChanged: (value) { color: Color(0xff359846),
// setSelectedType(value); fontWeight: FontWeight.w700,
// }, onPressed: () {
// ), //print(entityList.toString());
// Text('routine'), onPressed:
// Radio( if (entityList.isEmpty == true) {
// activeColor: Color(0xFFB9382C), DrAppToastMsg.showErrorToast(
// groupValue: selectedType, TranslationBase.of(context)
// value: 0, .fillTheMandatoryProcedureDetails,
// onChanged: (value) { );
// setSelectedType(value); return;
// }, }
// ),
// Text(TranslationBase.of(context).urgent),
// ],
// ),
// ),
// SizedBox(
// height: 15.0,
// ),
// TextFields(
// hintText: TranslationBase.of(context).remarks,
// controller: remarksController,
// minLines: 3,
// maxLines: 5,
// ),
SizedBox(
height: 100.0,
),
],
)
],
),
),
),
);
}),
),
bottomSheet: Container(
margin: EdgeInsets.all(SizeConfig.widthMultiplier * 5),
child: Wrap(
alignment: WrapAlignment.center,
children: <Widget>[
AppButton(
title: TranslationBase.of(context).addSelectedProcedures,
color: Color(0xff359846),
fontWeight: FontWeight.w700,
onPressed: () {
//print(entityList.toString());
onPressed:
if (entityList.isEmpty == true) {
DrAppToastMsg.showErrorToast(
TranslationBase.of(context)
.fillTheMandatoryProcedureDetails,
);
return;
}
Navigator.pop(context); Navigator.pop(context);
postProcedure( postProcedure(
orderType: selectedType.toString(), orderType: selectedType.toString(),
entityList: entityList, entityList: entityList,
patient: patient, patient: patient,
model: widget.model, model: widget.model,
remarks: remarksController.text); remarks: remarksController.text);
}, },
),
],
), ),
], ),
), ],
), ),
), ),
); );

@ -0,0 +1,215 @@
import 'package:doctor_app_flutter/config/size_config.dart';
import 'package:doctor_app_flutter/core/viewModel/procedure_View_model.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/screens/procedures/add-procedure-form.dart';
import 'package:doctor_app_flutter/util/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/network_base_view.dart';
import 'package:doctor_app_flutter/widgets/shared/text_fields/text_fields_utils.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
class AddProcedureHome extends StatefulWidget {
final ProcedureViewModel model;
final PatiantInformtion patient;
const AddProcedureHome({Key key, this.model, this.patient}) : super(key: key);
@override
_AddProcedureHomeState createState() =>
_AddProcedureHomeState(patient: patient, model: model);
}
class _AddProcedureHomeState extends State<AddProcedureHome>
with SingleTickerProviderStateMixin {
_AddProcedureHomeState({this.patient, this.model});
ProcedureViewModel model;
PatiantInformtion patient;
TabController _tabController;
int _activeTab = 0;
@override
void initState() {
super.initState();
_tabController = TabController(length: 2, vsync: this);
_tabController.addListener(_handleTabSelection);
}
@override
void dispose() {
super.dispose();
_tabController.dispose();
}
_handleTabSelection() {
setState(() {
_activeTab = _tabController.index;
});
}
@override
Widget build(BuildContext context) {
//final routeArgs = ModalRoute.of(context).settings.arguments as Map;
//PatiantInformtion patient = routeArgs['patient'];
final screenSize = MediaQuery.of(context).size;
return BaseView<ProcedureViewModel>(
//onModelReady: (model) => model.getCategory(),
builder: (BuildContext context, ProcedureViewModel model, Widget child) =>
AppScaffold(
isShowAppBar: false,
body: NetworkBaseView(
baseViewModel: model,
child: DraggableScrollableSheet(
minChildSize: 0.90,
initialChildSize: 0.95,
maxChildSize: 1.0,
builder:
(BuildContext context, ScrollController scrollController) {
return Container(
height: MediaQuery.of(context).size.height * 1.20,
child: Padding(
padding: EdgeInsets.all(12.0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
AppText(
'Add Procedure',
fontWeight: FontWeight.w700,
fontSize: 20,
),
InkWell(
child: Icon(
Icons.close,
size: 24.0,
),
onTap: () {
Navigator.pop(context);
},
)
]),
SizedBox(
height: MediaQuery.of(context).size.height * 0.04,
),
Expanded(
child: Scaffold(
extendBodyBehindAppBar: true,
appBar: PreferredSize(
preferredSize: Size.fromHeight(
MediaQuery.of(context).size.height * 0.070),
child: Container(
height:
MediaQuery.of(context).size.height * 0.070,
decoration: BoxDecoration(
border: Border(
bottom: BorderSide(
color: Theme.of(context).dividerColor,
width: 0.5), //width: 0.7
),
color: Colors.white),
child: Center(
child: TabBar(
isScrollable: false,
controller: _tabController,
indicatorColor: Colors.transparent,
indicatorWeight: 1.0,
indicatorSize: TabBarIndicatorSize.tab,
labelColor: Theme.of(context).primaryColor,
labelPadding: EdgeInsets.only(
top: 0, left: 0, right: 0, bottom: 0),
unselectedLabelColor: Colors.grey[800],
tabs: [
tabWidget(
screenSize,
_activeTab == 0,
'All Procedures',
),
tabWidget(
screenSize,
_activeTab == 1,
"Favorite Templates",
),
],
),
),
),
),
body: Column(
children: [
Expanded(
child: TabBarView(
physics: BouncingScrollPhysics(),
controller: _tabController,
children: [
AddSelectedProcedure(
model: model,
patient: patient,
),
AddSelectedProcedure(
model: model,
patient: patient,
)
],
),
),
],
),
),
),
],
),
),
);
}),
),
),
);
}
Widget tabWidget(Size screenSize, bool isActive, String title,
{int counter = -1}) {
return Center(
child: Container(
height: screenSize.height * 0.070,
decoration: TextFieldsUtils.containerBorderDecoration(
isActive ? Color(0xFFD02127 /*B8382B*/) : Color(0xFFEAEAEA),
isActive ? Color(0xFFD02127) : Color(0xFFEAEAEA),
borderRadius: 4,
borderWidth: 0),
child: Row(
mainAxisAlignment: MainAxisAlignment.center,
children: [
AppText(
title,
fontSize: SizeConfig.textMultiplier * 1.5,
color: isActive ? Colors.white : Color(0xFF2B353E),
fontWeight: FontWeight.w700,
),
if (counter != -1)
Container(
margin: EdgeInsets.all(4),
width: 15,
height: 15,
decoration: BoxDecoration(
color: isActive ? Colors.white : Color(0xFFD02127),
shape: BoxShape.circle,
),
child: Center(
child: FittedBox(
child: AppText(
"$counter",
fontSize: SizeConfig.textMultiplier * 1.5,
color: !isActive ? Colors.white : Color(0xFFD02127),
fontWeight: FontWeight.w700,
),
),
),
),
],
),
),
);
}
}

@ -6,6 +6,7 @@ import 'package:doctor_app_flutter/models/doctor/doctor_profile_model.dart';
import 'package:doctor_app_flutter/models/patient/patiant_info_model.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/screens/base/base_view.dart';
import 'package:doctor_app_flutter/screens/procedures/add-procedure-form.dart'; import 'package:doctor_app_flutter/screens/procedures/add-procedure-form.dart';
import 'package:doctor_app_flutter/screens/procedures/add_procedure_homeScreen.dart';
import 'package:doctor_app_flutter/screens/procedures/update-procedure.dart'; import 'package:doctor_app_flutter/screens/procedures/update-procedure.dart';
import 'package:doctor_app_flutter/util/helpers.dart'; import 'package:doctor_app_flutter/util/helpers.dart';
import 'package:doctor_app_flutter/util/translations_delegate_base.dart'; import 'package:doctor_app_flutter/util/translations_delegate_base.dart';
@ -104,7 +105,7 @@ class ProcedureScreen extends StatelessWidget {
Navigator.push( Navigator.push(
context, context,
MaterialPageRoute( MaterialPageRoute(
builder: (context) => AddSelectedProcedure( builder: (context) => AddProcedureHome(
patient: patient, patient: patient,
model: model, model: model,
)), )),

Loading…
Cancel
Save