first step from calling history

pull/190/head
Elham Rababah 5 years ago
parent ef6b1bc50e
commit df68e912b5

@ -63,7 +63,7 @@ class BaseAppClient {
body['SessionID'] = SESSION_ID;
body['IsLoginForDoctorApp'] = IS_LOGIN_FOR_DOCTOR_APP;
body['PatientOutSA'] = 0; // PATIENT_OUT_SA;
// body['VidaAuthTokenID'] = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIyODA0IiwianRpIjoiZWE0M2QxOTEtMWY1OS00ZWY1LThmYTYtM2ExYzBkNjQyNjc5IiwiZW1haWwiOiJNb2hhbWVkLlJlc3dhbkBjbG91ZHNvbHV0aW9uLXNhLmNvbSIsImlkIjoiMjgwNCIsIk5hbWUiOiJNVUhBTU1BRCBBWkFNIiwiRW1wbG95ZWVJZCI6IjE0ODUiLCJGYWNpbGl0eUdyb3VwSWQiOiIwMTAyNjYiLCJGYWNpbGl0eUlkIjoiMTUiLCJQaGFyYW1jeUZhY2lsaXR5SWQiOiI1NSIsIklTX1BIQVJNQUNZX0NPTk5FQ1RFRCI6IlRydWUiLCJEb2N0b3JJZCI6IjE0ODUiLCJTRVNTSU9OSUQiOiIyMTU3NTk0NyIsIkNsaW5pY0lkIjoiMyIsInJvbGUiOlsiU0VDVVJJVFkgQURNSU5JU1RSQVRPUlMiLCJTRVRVUCBBRE1JTklTVFJBVE9SUyIsIkNFTydTIiwiRVhFQ1VUSVZFIERJUkVDVE9SUyIsIk1BTkFHRVJTIiwiU1VQRVJWSVNPUlMiLCJDTElFTlQgU0VSVklDRVMgQ09PUkRJTkFUT1JTIiwiQ0xJRU5UIFNFUlZJQ0VTIFNVUEVSVklTT1JTIiwiQ0xJRU5UIFNFUlZJQ0VTIE1BTkdFUlMiLCJIRUFEIE5VUlNFUyIsIkRPQ1RPUlMiLCJDSElFRiBPRiBNRURJQ0FMIFNUQUZGUyIsIkJJTy1NRURJQ0FMIFRFQ0hOSUNJQU5TIiwiQklPLU1FRElDQUwgRU5HSU5FRVJTIiwiQklPLU1FRElDQUwgREVQQVJUTUVOVCBIRUFEUyIsIklUIEhFTFAgREVTSyIsIkFETUlOSVNUUkFUT1JTIiwiTEFCIEFETUlOSVNUUkFUT1IiLCJMQUIgVEVDSE5JQ0lBTiIsIkJVU0lORVNTIE9GRklDRSBTVEFGRiIsIkZJTkFOQ0UgQUNDT1VOVEFOVFMiLCJQSEFSTUFDWSBTVEFGRiIsIkFDQ09VTlRTIFNUQUZGIiwiTEFCIFJFQ0VQVElPTklTVCIsIkVSIE5VUlNFIiwiSU5QQVRJRU5UIEJJTExJTkcgU1VQRVJWSVNPUiIsIkxEUi1PUiBOVVJTRVMiLCJBRE1JU1NJT04gU1RBRkYiLCJIRUxQIERFU0sgQURNSU4iLCJBUFBST1ZBTCBTVEFGRiIsIklOUEFUSUVOVCBCSUxMSU5HIENPT1JESU5BVE9SIiwiQklMTElORyBTVEFGRiIsIkNPTlNFTlQgIiwiQ29uc2VudCAtIERlbnRhbCIsIldFQkVNUiJdLCJuYmYiOjE2MDgxMDYwOTgsImV4cCI6MTYwODk3MDA5OCwiaWF0IjoxNjA4MTA2MDk4fQ.EJ_QwlrHPQncnU_CP0HpnERPidpIl5nFQzqB2VNFbNs";
body['VidaAuthTokenID'] = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMDAyIiwianRpIjoiZjcwMTUyYzktMjAwNy00Y2FjLTkzMWUtOGI0MDlhMWFkNjc4IiwiZW1haWwiOiIiLCJpZCI6IjEwMDIiLCJOYW1lIjoiVEVNUCAtIERPQ1RPUiIsIkVtcGxveWVlSWQiOiI0NzA5IiwiRmFjaWxpdHlHcm91cElkIjoiMDEwMjY2IiwiRmFjaWxpdHlJZCI6IjE1IiwiUGhhcmFtY3lGYWNpbGl0eUlkIjoiNTUiLCJJU19QSEFSTUFDWV9DT05ORUNURUQiOiJUcnVlIiwiRG9jdG9ySWQiOiI0NzA5IiwiU0VTU0lPTklEIjoiMjE1ODU1MzAiLCJDbGluaWNJZCI6IjE3Iiwicm9sZSI6IkRPQ1RPUlMiLCJuYmYiOjE2MDg1NTMxMDAsImV4cCI6MTYwOTQxNzEwMCwiaWF0IjoxNjA4NTUzMTAwfQ.lydDI-nsHlmb4Z4vesnckCU1i3hnNayoWVacc3E5_XM";
print("URL : $url");
print("Body : ${json.encode(body)}");

@ -1,45 +1,80 @@
import 'package:doctor_app_flutter/config/config.dart';
import 'package:doctor_app_flutter/core/enum/master_lookup_key.dart';
import 'package:doctor_app_flutter/core/service/base/base_service.dart';
import 'package:doctor_app_flutter/models/SOAP/Allergy_model.dart';
import 'package:doctor_app_flutter/models/SOAP/get_Allergies_request_model.dart';
import 'package:doctor_app_flutter/models/SOAP/master_key_model.dart';
class SOAPService extends BaseService {
List<dynamic> get listOfAllergies => _listOfAllergies;
List<dynamic> _listOfAllergies = [];
List<MasterKeyModel> get listOfAllergies => _listOfAllergies;
List<MasterKeyModel> get allergySeverityList => _allergySeverityList;
List<MasterKeyModel> _listOfAllergies = [];
List<MasterKeyModel> _allergySeverityList = [];
Future getAllergies(GetAllergiesRequestModel getAllergiesRequestModel) async {
await baseAppClient.post(GET_ALLERGIES,
onSuccess: (dynamic response, int statusCode) {
_listOfAllergies.clear();
response['List_Allergies']['entityList'].forEach((v) {
_listOfAllergies
.add(AllergyModel.fromJson(v));
});
}, onFailure: (String error, int statusCode) {
hasError = true;
super.error = error;
}, body: getAllergiesRequestModel.toJson(),);
await baseAppClient.post(
GET_ALLERGIES,
onSuccess: (dynamic response, int statusCode) {
_listOfAllergies.clear();
response['List_Allergies']['entityList'].forEach((v) {
_listOfAllergies.add(MasterKeyModel.fromJson(v));
});
},
onFailure: (String error, int statusCode) {
hasError = true;
super.error = error;
},
body: getAllergiesRequestModel.toJson(),
);
}
Future getMasterLookup(MasterKeysService masterKeys) async {
Map<String, dynamic> body = {
"MasterInput" : masterKeys.getMasterKeyService()
"MasterInput": masterKeys.getMasterKeyService()
};
print("fdfd");
await baseAppClient.post(GET_MASTER_LOOKUP_LIST,
onSuccess: (dynamic response, int statusCode) {
onSuccess: (dynamic response, int statusCode) {
setMasterLookupInCorrectArray(
response['MasterLookUpList']['entityList'], masterKeys);
}, onFailure: (String error, int statusCode) {
hasError = true;
super.error = error;
}, body: body);
}
setMasterLookupInCorrectArray(entryList, MasterKeysService masterKeys) {
switch (masterKeys) {
case MasterKeysService.Allergies:
_listOfAllergies.clear();
response['MasterLookUpList']['entityList'].forEach((v) {
entryList.forEach((v) {
_listOfAllergies
.add(v);
.add(MasterKeyModel.fromJson(v));
});
}, onFailure: (String error, int statusCode) {
hasError = true;
super.error = error;
}, body: body);
break;
case MasterKeysService.HistoryFamily:
return 36;
break;
case MasterKeysService.HistoryMedical:
return 37;
break;
case MasterKeysService.HistorySocial:
return 38;
break;
case MasterKeysService.HistorySports:
return 39;
break;
case MasterKeysService.HistorySurgical:
return 66;
break;
case MasterKeysService.PhysicalExamination:
return 59;
break;
case MasterKeysService.AllergySeverity:
_allergySeverityList.clear();
entryList.forEach((v) {
_allergySeverityList
.add(MasterKeyModel.fromJson(v));
});
break;
}
}
}

@ -3,6 +3,7 @@ import 'package:doctor_app_flutter/core/enum/viewstate.dart';
import 'package:doctor_app_flutter/core/service/SOAP_service.dart';
import 'package:doctor_app_flutter/models/SOAP/Allergy_model.dart';
import 'package:doctor_app_flutter/models/SOAP/get_Allergies_request_model.dart';
import 'package:doctor_app_flutter/models/SOAP/master_key_model.dart';
import '../../locator.dart';
import 'base_view_model.dart';
@ -10,7 +11,8 @@ import 'base_view_model.dart';
class SOAPViewModel extends BaseViewModel {
SOAPService _SOAPService = locator<SOAPService>();
List<AllergyModel> get listOfAllergies => _SOAPService.listOfAllergies;
List<MasterKeyModel> get listOfAllergies => _SOAPService.listOfAllergies;
List<MasterKeyModel> get allergySeverityList => _SOAPService.allergySeverityList;
Future getAllergies(GetAllergiesRequestModel getAllergiesRequestModel) async {
setState(ViewState.Busy);

@ -0,0 +1,76 @@
class MasterKeyModel {
String alias;
String aliasN;
int code;
Null description;
Null detail1;
Null detail2;
Null detail3;
Null detail4;
Null detail5;
int groupID;
int id;
String nameAr;
String nameEn;
Null remarks;
int typeId;
String valueList;
MasterKeyModel(
{this.alias,
this.aliasN,
this.code,
this.description,
this.detail1,
this.detail2,
this.detail3,
this.detail4,
this.detail5,
this.groupID,
this.id,
this.nameAr,
this.nameEn,
this.remarks,
this.typeId,
this.valueList});
MasterKeyModel.fromJson(Map<String, dynamic> json) {
alias = json['alias'];
aliasN = json['aliasN'];
code = json['code'];
description = json['description'];
detail1 = json['detail1'];
detail2 = json['detail2'];
detail3 = json['detail3'];
detail4 = json['detail4'];
detail5 = json['detail5'];
groupID = json['groupID'];
id = json['id'];
nameAr = json['nameAr'];
nameEn = json['nameEn'];
remarks = json['remarks'];
typeId = json['typeId'];
valueList = json['valueList'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['alias'] = this.alias;
data['aliasN'] = this.aliasN;
data['code'] = this.code;
data['description'] = this.description;
data['detail1'] = this.detail1;
data['detail2'] = this.detail2;
data['detail3'] = this.detail3;
data['detail4'] = this.detail4;
data['detail5'] = this.detail5;
data['groupID'] = this.groupID;
data['id'] = this.id;
data['nameAr'] = this.nameAr;
data['nameEn'] = this.nameEn;
data['remarks'] = this.remarks;
data['typeId'] = this.typeId;
data['valueList'] = this.valueList;
return data;
}
}

@ -0,0 +1,32 @@
import 'package:doctor_app_flutter/models/SOAP/master_key_model.dart';
class MySelectedAllergy {
MasterKeyModel selectedAllergySeverity;
MasterKeyModel selectedAllergy;
String remark;
MySelectedAllergy(
{this.selectedAllergySeverity, this.selectedAllergy, this.remark});
MySelectedAllergy.fromJson(Map<String, dynamic> json) {
selectedAllergySeverity = json['selectedAllergySeverity'] != null
? new MasterKeyModel.fromJson(json['selectedAllergySeverity'])
: null;
selectedAllergy = json['selectedAllergy'] != null
? new MasterKeyModel.fromJson(json['selectedAllergy'])
: null;
remark = json['remark'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
if (this.selectedAllergySeverity != null) {
data['selectedAllergySeverity'] = this.selectedAllergySeverity.toJson();
}
if (this.selectedAllergy != null) {
data['selectedAllergy'] = this.selectedAllergy.toJson();
}
data['remark'] = this.remark;
return data;
}
}

@ -1,40 +1,42 @@
import 'package:doctor_app_flutter/config/config.dart';
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/models/SOAP/master_key_model.dart';
import 'package:doctor_app_flutter/models/SOAP/my_selected_allergy.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/shared/Text.dart';
import 'package:doctor_app_flutter/widgets/shared/TextFields.dart';
import 'package:doctor_app_flutter/widgets/shared/app_buttons_widget.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/dialogs/dailog-list-select.dart';
import 'package:doctor_app_flutter/widgets/shared/dialogs/master_key_dailog.dart';
import 'package:eva_icons_flutter/eva_icons_flutter.dart';
import 'package:flutter/material.dart';
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
class AddAllergiesWidget extends StatefulWidget {
final List<MySelectedAllergy> myAllergiesList;
AddAllergiesWidget({Key key, this.myAllergiesList});
@override
_AddAllergiesWidgetState createState() => _AddAllergiesWidgetState();
}
class _AddAllergiesWidgetState extends State<AddAllergiesWidget> {
List<MySelectedAllergy> myAllergiesList;
List<dynamic> allergiesList;
dynamic _referTo;
dynamic _selectedBranch;
dynamic _selectedClinic;
dynamic _selectedDoctor;
TextEditingController remarkController = TextEditingController();
@override
Widget build(BuildContext context) {
final screenSize = MediaQuery
.of(context)
.size;
final screenSize = MediaQuery.of(context).size;
return Column(
children: [
Container(
margin:
EdgeInsets.only(left: 10, right: 10, top: 15),
margin: EdgeInsets.only(left: 10, right: 10, top: 15),
child: TextFields(
hintText: "Add Allergies",
fontSize: 13.5,
@ -49,7 +51,8 @@ class _AddAllergiesWidgetState extends State<AddAllergiesWidget> {
// controller: messageController,
validator: (value) {
if (value == null)
return TranslationBase.of(context)
return TranslationBase
.of(context)
.emptyMessage;
else
return null;
@ -62,49 +65,37 @@ class _AddAllergiesWidgetState extends State<AddAllergiesWidget> {
margin:
EdgeInsets.only(left: 15, right: 15, top: 15),
child: Column(
children: [
Row(
mainAxisAlignment:
MainAxisAlignment.spaceBetween,
children: [
Texts('White Egg'.toUpperCase(),
variant: "bodyText",
bold: true,
color: Colors.black),
Texts('Severe'.toUpperCase(),
variant: "bodyText",
bold: true,
color: AppGlobal.appPrimaryColor),
Icon(
FontAwesomeIcons.trash,
color: Colors.grey,
size: 20,
)
],
),
SizedBox(
height: 20,
),
Row(
mainAxisAlignment:
MainAxisAlignment.spaceBetween,
children: [
Texts('White Egg'.toUpperCase(),
variant: "bodyText",
bold: true,
color: Colors.black),
Texts('Severe'.toUpperCase(),
variant: "bodyText",
bold: true,
color: AppGlobal.appPrimaryColor),
Icon(
FontAwesomeIcons.trash,
color: Colors.grey,
size: 20,
)
],
),
],
children: widget.myAllergiesList.map((selectedAllergy) {
return Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Row(
mainAxisAlignment:
MainAxisAlignment.spaceBetween,
children: [
Texts(selectedAllergy.selectedAllergy.nameEn
.toUpperCase(),
variant: "bodyText",
bold: true,
color: Colors.black),
Texts(selectedAllergy.selectedAllergySeverity.nameEn
.toUpperCase(),
variant: "bodyText",
bold: true,
color: AppGlobal.appPrimaryColor),
Icon(
FontAwesomeIcons.trash,
color: Colors.grey,
size: 20,
)
],
), SizedBox(
height: 20,
),
],
);
}).toList()
),
)
],
@ -112,186 +103,230 @@ class _AddAllergiesWidgetState extends State<AddAllergiesWidget> {
}
openAllergiesList(BuildContext context) {
final screenSize = MediaQuery
.of(context)
.size;
InputDecoration textFieldSelectorDecoration(String hintText,
String selectedText, bool isDropDown) {
return InputDecoration(
focusedBorder: OutlineInputBorder(
borderSide: BorderSide(color: Color(0xFFCCCCCC), width: 2.0),
borderRadius: BorderRadius.circular(8),
),
enabledBorder: OutlineInputBorder(
borderSide: BorderSide(color: Color(0xFFCCCCCC), width: 2.0),
borderRadius: BorderRadius.circular(8),
),
disabledBorder: OutlineInputBorder(
borderSide: BorderSide(color: Color(0xFFCCCCCC), width: 2.0),
borderRadius: BorderRadius.circular(8),
),
hintText: selectedText != null ? selectedText : hintText,
suffixIcon: isDropDown ? Icon(Icons.arrow_drop_down) : null,
hintStyle: TextStyle(
fontSize: 14,
color: Colors.grey.shade600,
),
);
};
showModalBottomSheet(
backgroundColor: Colors.white,
isScrollControlled: true,
context: context,
builder: (context) {
return FractionallySizedBox(
heightFactor: 0.7,
child: Container(
child: FractionallySizedBox(
widthFactor: 0.9,
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
return AddAllergies(
addAllergiesFun: (MySelectedAllergy mySelectedAllergy) {
widget.myAllergiesList.add(mySelectedAllergy);
Navigator.of(context).pop();
},);
});
}
SizedBox(
height: 16,
),
AppText(
"Add Allergy",
fontWeight: FontWeight.bold,
fontSize: 16,
),
SizedBox(
height: 16,
),
Container(
height: screenSize.height * 0.070,
child: InkWell(
onTap: allergiesList != null
? () {
ListSelectDialog dialog = ListSelectDialog(
list: allergiesList,
attributeName: 'name',
attributeValueId: 'id',
okText: TranslationBase
.of(context)
.ok,
okFunction: (selectedValue) {
setState(() {
_referTo = selectedValue;
_selectedBranch = null;
_selectedClinic = null;
_selectedDoctor = null;
// model.getDoctorBranch().then((value) {
// _selectedBranch = value;
// if (_referTo['id'] == 1) {
// model.getClinics(
// _selectedBranch['ID']);
// }
// });
});
},
);
showDialog(
barrierDismissible: false,
context: context,
builder: (BuildContext context) {
return dialog;
},
);
}
: null,
child: TextField(
decoration: textFieldSelectorDecoration(
"Select Allergy",
_referTo != null ? _referTo['name'] : null,
true),
enabled: false,
),
),
),
SizedBox(
height: 10,
), Container(
height: screenSize.height * 0.070,
child: InkWell(
onTap: allergiesList != null
? () {
ListSelectDialog dialog = ListSelectDialog(
list: allergiesList,
attributeName: 'name',
attributeValueId: 'id',
okText: TranslationBase
.of(context)
.ok,
okFunction: (selectedValue) {
setState(() {
_referTo = selectedValue;
_selectedBranch = null;
_selectedClinic = null;
_selectedDoctor = null;
// model.getDoctorBranch().then((value) {
// _selectedBranch = value;
// if (_referTo['id'] == 1) {
// model.getClinics(
// _selectedBranch['ID']);
// }
// });
});
},
);
showDialog(
barrierDismissible: false,
context: context,
builder: (BuildContext context) {
return dialog;
}
class AddAllergies extends StatefulWidget {
final Function addAllergiesFun;
const AddAllergies({Key key, this.addAllergiesFun}) : super(key: key);
@override
_AddAllergiesState createState() => _AddAllergiesState();
}
class _AddAllergiesState extends State<AddAllergies> {
List<MasterKeyModel> allergiesList;
List<MasterKeyModel> allergySeverityList;
MasterKeyModel _selectedAllergySeverity;
MasterKeyModel _selectedAllergy;
TextEditingController remarkController = TextEditingController();
InputDecoration textFieldSelectorDecoration(String hintText,
String selectedText, bool isDropDown) {
return InputDecoration(
focusedBorder: OutlineInputBorder(
borderSide: BorderSide(color: Color(0xFFCCCCCC), width: 2.0),
borderRadius: BorderRadius.circular(8),
),
enabledBorder: OutlineInputBorder(
borderSide: BorderSide(color: Color(0xFFCCCCCC), width: 2.0),
borderRadius: BorderRadius.circular(8),
),
disabledBorder: OutlineInputBorder(
borderSide: BorderSide(color: Color(0xFFCCCCCC), width: 2.0),
borderRadius: BorderRadius.circular(8),
),
hintText: selectedText != null ? selectedText : hintText,
suffixIcon: isDropDown ? Icon(Icons.arrow_drop_down) : null,
hintStyle: TextStyle(
fontSize: 14,
color: Colors.grey.shade600,
),
);
}
@override
Widget build(BuildContext context) {
final screenSize = MediaQuery
.of(context)
.size;
return FractionallySizedBox(
heightFactor: 0.7,
child: BaseView<SOAPViewModel>(
onModelReady: (model) async {
if (model.listOfAllergies == null) {
await model.getMasterLookup(MasterKeysService.Allergies);
}
if (model.allergySeverityList == null) {
await model.getMasterLookup(MasterKeysService.AllergySeverity);
}
},
builder: (_, model, w) =>
AppScaffold(
baseViewModel: model,
isShowAppBar: false,
body: SingleChildScrollView(
child: Center(
child: FractionallySizedBox(
widthFactor: 0.9,
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
SizedBox(
height: 16,
),
AppText(
"Add Allergy",
fontWeight: FontWeight.bold,
fontSize: 16,
),
SizedBox(
height: 16,
),
Container(
height: screenSize.height * 0.070,
child: InkWell(
onTap: model.listOfAllergies != null
? () {
MasterKeyDailog dialog = MasterKeyDailog(
list: model.listOfAllergies,
okText: TranslationBase
.of(context)
.ok,
okFunction: (MasterKeyModel selectedValue) {
setState(() {
_selectedAllergy = selectedValue;
});
},
);
showDialog(
barrierDismissible: false,
context: context,
builder: (BuildContext context) {
return dialog;
},
);
}
: null,
child: TextField(
decoration: textFieldSelectorDecoration(
"Select Allergy",
_selectedAllergy != null
? _selectedAllergy.nameEn
: null,
true),
enabled: false,
),
),
),
SizedBox(
height: 10,
), Container(
height: screenSize.height * 0.070,
child: InkWell(
onTap: model.allergySeverityList != null
? () {
MasterKeyDailog dialog = MasterKeyDailog(
list: model.allergySeverityList,
okText: TranslationBase
.of(context)
.ok,
okFunction: (selectedValue) {
setState(() {
_selectedAllergySeverity =
selectedValue;
// model.getDoctorBranch().then((value) {
// _selectedBranch = value;
// if (_referTo['id'] == 1) {
// model.getClinics(
// _selectedBranch['ID']);
// }
// });
});
},
);
showDialog(
barrierDismissible: false,
context: context,
builder: (BuildContext context) {
return dialog;
},
);
}
: null,
child: TextField(
decoration: textFieldSelectorDecoration(
"Select Severity",
_selectedAllergySeverity != null
? _selectedAllergySeverity.nameEn
: null,
true),
enabled: false,
),
),
),
SizedBox(
height: 10,
),
Container(
margin: EdgeInsets.only(
left: 0, right: 0, top: 15),
child: TextFields(
hintText: "Remarks",
fontSize: 13.5,
// hintColor: Colors.black,
fontWeight: FontWeight.w600,
maxLines: 25,
minLines: 13,
controller: remarkController,
validator: (value) {
if (value == null)
return TranslationBase
.of(context)
.emptyMessage;
else
return null;
}),
), SizedBox(
height: 10,
),
AppButton(
title: "Add".toUpperCase(),
onPressed: () {
MySelectedAllergy mySelectedAllergy = new MySelectedAllergy(
remark: remarkController.text,
selectedAllergy: _selectedAllergy,
selectedAllergySeverity: _selectedAllergySeverity);
widget.addAllergiesFun(mySelectedAllergy);
},
);
}
: null,
child: TextField(
decoration: textFieldSelectorDecoration(
"Select Severity",
_referTo != null ? _referTo['name'] : null,
true),
enabled: false,
),
),
),
SizedBox(
height: 10,
),
Container(
margin: EdgeInsets.only(left: 0, right: 0, top: 15),
child: TextFields(
hintText: "Remarks",
fontSize: 13.5,
// hintColor: Colors.black,
fontWeight: FontWeight.w600,
maxLines: 25,
minLines: 13,
controller: remarkController,
validator: (value) {
if (value == null)
return TranslationBase.of(context).emptyMessage;
else
return null;
}),
),SizedBox(
height: 10,
),
AppButton(
title: "Add".toUpperCase(),
onPressed: () {
},
),
]
),
]
),
),
),
)),
);
});
),
);
}
}

@ -1,10 +1,15 @@
import 'package:doctor_app_flutter/config/config.dart';
import 'package:doctor_app_flutter/core/enum/master_lookup_key.dart';
import 'package:doctor_app_flutter/core/enum/viewstate.dart';
import 'package:doctor_app_flutter/core/viewModel/SOAP_view_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/shared/Text.dart';
import 'package:doctor_app_flutter/widgets/shared/TextFields.dart';
import 'package:doctor_app_flutter/widgets/shared/app_buttons_widget.dart';
import 'package:doctor_app_flutter/widgets/shared/app_scaffold_widget.dart';
import 'package:doctor_app_flutter/widgets/shared/divider_with_spaces_around.dart';
import 'package:doctor_app_flutter/widgets/shared/network_base_view.dart';
import 'package:eva_icons_flutter/eva_icons_flutter.dart';
import 'package:flutter/material.dart';
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
@ -111,247 +116,7 @@ class _AddHistoryWidgetState extends State<AddHistoryWidget>
isScrollControlled: true,
context: context,
builder: (context) {
return FractionallySizedBox(
heightFactor: 0.7,
child: Container(
child: FractionallySizedBox(
widthFactor: 0.9,
child: Column(
children: [
SizedBox(
height: 10,
),
PriorityBar(onTap: (activePriority) {
changePageViewIndex(activePriority);
}),
SizedBox(
height: 20,
),
Expanded(
child: PageView(
physics: NeverScrollableScrollPhysics(),
controller: _controller,
onPageChanged: (index) {
setState(() {
_currentIndex = index;
});
},
scrollDirection: Axis.horizontal,
children: <Widget>[
Column(
children: [
Container(
height: MediaQuery.of(context).size.height * 0.5,
child: Center(
child: Container(
margin: EdgeInsets.only(top: 15),
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(12),
color: Colors.white),
child: ListView(
children: [
Column(
children: [
Row(
children: [
Checkbox(
value: true,
activeColor: Colors.red[800],
onChanged: (bool newValue) {
setState(() {});
}),
Expanded(
child: Padding(
padding: const EdgeInsets.symmetric(
horizontal: 10, vertical: 0),
child: Texts('History',
variant: "bodyText",
bold: true,
color: Colors.black),
),
),
],
),
DividerWithSpacesAround(),
Row(
children: [
Checkbox(
value: true,
activeColor: Colors.red[800],
onChanged: (bool newValue) {
setState(() {});
}),
Expanded(
child: Padding(
padding: const EdgeInsets.symmetric(
horizontal: 10, vertical: 0),
child: Texts('History',
variant: "bodyText",
bold: true,
color: Colors.black),
),
),
],
),
DividerWithSpacesAround(),
Row(
children: [
Checkbox(
value: true,
activeColor: Colors.red[800],
onChanged: (bool newValue) {
setState(() {});
}),
Expanded(
child: Padding(
padding: const EdgeInsets.symmetric(
horizontal: 10, vertical: 0),
child: Texts('History',
variant: "bodyText",
bold: true,
color: Colors.black),
),
),
],
),
DividerWithSpacesAround(),
Row(
children: [
Checkbox(
value: true,
activeColor: Colors.red[800],
onChanged: (bool newValue) {
setState(() {});
}),
Expanded(
child: Padding(
padding: const EdgeInsets.symmetric(
horizontal: 10, vertical: 0),
child: Texts('History',
variant: "bodyText",
bold: true,
color: Colors.black),
),
),
],
),
DividerWithSpacesAround(),
Row(
children: [
Checkbox(
value: true,
activeColor: Colors.red[800],
onChanged: (bool newValue) {
setState(() {});
}),
Expanded(
child: Padding(
padding: const EdgeInsets.symmetric(
horizontal: 10, vertical: 0),
child: Texts('History',
variant: "bodyText",
bold: true,
color: Colors.black),
),
),
],
),
DividerWithSpacesAround(),
Row(
children: [
Checkbox(
value: true,
activeColor: Colors.red[800],
onChanged: (bool newValue) {
setState(() {});
}),
Expanded(
child: Padding(
padding: const EdgeInsets.symmetric(
horizontal: 10, vertical: 0),
child: Texts('History',
variant: "bodyText",
bold: true,
color: Colors.black),
),
),
],
),
DividerWithSpacesAround(),
Row(
children: [
Checkbox(
value: true,
activeColor: Colors.red[800],
onChanged: (bool newValue) {
setState(() {});
}),
Expanded(
child: Padding(
padding: const EdgeInsets.symmetric(
horizontal: 10, vertical: 0),
child: Texts('History',
variant: "bodyText",
bold: true,
color: Colors.black),
),
),
],
),
DividerWithSpacesAround(),
Row(
children: [
Checkbox(
value: true,
activeColor: Colors.red[800],
onChanged: (bool newValue) {
setState(() {});
}),
Expanded(
child: Padding(
padding: const EdgeInsets.symmetric(
horizontal: 10, vertical: 0),
child: Texts('History',
variant: "bodyText",
bold: true,
color: Colors.black),
),
),
],
),
DividerWithSpacesAround(),
],
),
],
),
)),
),
SizedBox(
height: 10,
),
AppButton(
title: "Add SELECTED HISTORIES".toUpperCase(),
onPressed: () {},
),
],
),
Container(
child: Center(
child: Texts("eee"),
),
),
Container(
child: Center(
child: Texts("cccc"),
),
),
],
),
),
],
),
)),
);
return AddHistoryDialog();
});
}
}
@ -434,3 +199,305 @@ class _PriorityBarState extends State<PriorityBar> {
);
}
}
class AddHistoryDialog extends StatefulWidget {
final Function changePageViewIndex;
final PageController controller;
const AddHistoryDialog({Key key, this.changePageViewIndex, this.controller})
: super(key: key);
@override
_AddHistoryDialogState createState() => _AddHistoryDialogState();
}
class _AddHistoryDialogState extends State<AddHistoryDialog> {
@override
Widget build(BuildContext context) {
return FractionallySizedBox(
heightFactor: 0.7,
child: BaseView<SOAPViewModel>(
onModelReady: (model) async {
// if (model.listOfAllergies == null) {
await model.getMasterLookup(MasterKeysService.Allergies);
// }
if (model.allergySeverityList == null) {
await model.getMasterLookup(MasterKeysService.AllergySeverity);
}
},
builder: (_, model, w) => AppScaffold(
// baseViewModel: model,
isShowAppBar: false,
body: Center(
child: Container(
child: FractionallySizedBox(
widthFactor: 0.9,
child: Column(
children: [
SizedBox(
height: 10,
),
PriorityBar(onTap: (activePriority) {
widget.changePageViewIndex(activePriority);
}),
SizedBox(
height: 20,
),
Expanded(
child: PageView(
physics: NeverScrollableScrollPhysics(),
controller: widget.controller,
onPageChanged: (index) {
setState(() {
// currentIndex = index;
});
},
scrollDirection: Axis.horizontal,
children: <Widget>[
Column(
children: [
NetworkBaseView(
baseViewModel: model,
child: Container(
height:
MediaQuery.of(context).size.height * 0.5,
child: Center(
child: Container(
margin: EdgeInsets.only(top: 15),
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(12),
color: Colors.white),
child: ListView(
children: [
Column(
children: [
Row(
children: [
Checkbox(
value: true,
activeColor:
Colors.red[800],
onChanged: (bool newValue) {
setState(() {});
}),
Expanded(
child: Padding(
padding: const EdgeInsets
.symmetric(
horizontal: 10,
vertical: 0),
child: Texts('History',
variant: "bodyText",
bold: true,
color: Colors.black),
),
),
],
),
DividerWithSpacesAround(),
Row(
children: [
Checkbox(
value: true,
activeColor:
Colors.red[800],
onChanged: (bool newValue) {
setState(() {});
}),
Expanded(
child: Padding(
padding: const EdgeInsets
.symmetric(
horizontal: 10,
vertical: 0),
child: Texts('History',
variant: "bodyText",
bold: true,
color: Colors.black),
),
),
],
),
DividerWithSpacesAround(),
Row(
children: [
Checkbox(
value: true,
activeColor:
Colors.red[800],
onChanged: (bool newValue) {
setState(() {});
}),
Expanded(
child: Padding(
padding: const EdgeInsets
.symmetric(
horizontal: 10,
vertical: 0),
child: Texts('History',
variant: "bodyText",
bold: true,
color: Colors.black),
),
),
],
),
DividerWithSpacesAround(),
Row(
children: [
Checkbox(
value: true,
activeColor:
Colors.red[800],
onChanged: (bool newValue) {
setState(() {});
}),
Expanded(
child: Padding(
padding: const EdgeInsets
.symmetric(
horizontal: 10,
vertical: 0),
child: Texts('History',
variant: "bodyText",
bold: true,
color: Colors.black),
),
),
],
),
DividerWithSpacesAround(),
Row(
children: [
Checkbox(
value: true,
activeColor:
Colors.red[800],
onChanged: (bool newValue) {
setState(() {});
}),
Expanded(
child: Padding(
padding: const EdgeInsets
.symmetric(
horizontal: 10,
vertical: 0),
child: Texts('History',
variant: "bodyText",
bold: true,
color: Colors.black),
),
),
],
),
DividerWithSpacesAround(),
Row(
children: [
Checkbox(
value: true,
activeColor:
Colors.red[800],
onChanged: (bool newValue) {
setState(() {});
}),
Expanded(
child: Padding(
padding: const EdgeInsets
.symmetric(
horizontal: 10,
vertical: 0),
child: Texts('History',
variant: "bodyText",
bold: true,
color: Colors.black),
),
),
],
),
DividerWithSpacesAround(),
Row(
children: [
Checkbox(
value: true,
activeColor:
Colors.red[800],
onChanged: (bool newValue) {
setState(() {});
}),
Expanded(
child: Padding(
padding: const EdgeInsets
.symmetric(
horizontal: 10,
vertical: 0),
child: Texts('History',
variant: "bodyText",
bold: true,
color: Colors.black),
),
),
],
),
DividerWithSpacesAround(),
Row(
children: [
Checkbox(
value: true,
activeColor:
Colors.red[800],
onChanged: (bool newValue) {
setState(() {});
}),
Expanded(
child: Padding(
padding: const EdgeInsets
.symmetric(
horizontal: 10,
vertical: 0),
child: Texts('History',
variant: "bodyText",
bold: true,
color: Colors.black),
),
),
],
),
DividerWithSpacesAround(),
],
),
],
),
)),
),
),
SizedBox(
height: 10,
),
if (model.state == ViewState.Idle)
AppButton(
title: "Add SELECTED HISTORIES".toUpperCase(),
onPressed: () {},
),
],
),
Container(
child: Center(
child: Texts("eee"),
),
),
Container(
child: Center(
child: Texts("cccc"),
),
),
],
),
),
],
),
)),
),
),
));
}
}

@ -1,6 +1,7 @@
import 'package:doctor_app_flutter/config/config.dart';
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/models/SOAP/my_selected_allergy.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/SOAP/subjective/add_allergies_widget.dart';
@ -28,15 +29,16 @@ class _SubjectivePageState extends State<SubjectivePage> {
bool isChiefExpand = false;
bool isHistoryExpand = false;
bool isAllergiesExpand = false;
List<MySelectedAllergy> myAllergiesList = List();
TextEditingController messageController = TextEditingController();
@override
Widget build(BuildContext context) {
return BaseView<SOAPViewModel>(
onModelReady: (model) => model.getMasterLookup(MasterKeysService.Allergies),
// onModelReady: (model) => model.getMasterLookup(MasterKeysService.Allergies),
builder: (_, model, w) => AppScaffold(
isShowAppBar: false,
baseViewModel: model,
body: SingleChildScrollView(
physics: ScrollPhysics(),
child: Center(
@ -211,7 +213,7 @@ class _SubjectivePageState extends State<SubjectivePage> {
),
bodyWidget:Column(
children: [
AddAllergiesWidget(),
AddAllergiesWidget(myAllergiesList: myAllergiesList,),
SizedBox(
height: 30,
),

@ -0,0 +1,86 @@
import 'package:doctor_app_flutter/models/SOAP/master_key_model.dart';
import 'package:doctor_app_flutter/util/translations_delegate_base.dart';
import 'package:flutter/material.dart';
class MasterKeyDailog extends StatefulWidget {
final List<MasterKeyModel> list;
final okText;
final Function(MasterKeyModel) okFunction;
MasterKeyModel selectedValue;
MasterKeyDailog(
{@required this.list,
@required this.okText,
@required this.okFunction});
@override
_MasterKeyDailogState createState() => _MasterKeyDailogState();
}
class _MasterKeyDailogState extends State<MasterKeyDailog> {
@override
void initState() {
super.initState();
widget.selectedValue = widget.selectedValue ?? widget.list[0];
}
@override
Widget build(BuildContext context) {
return showAlertDialog(context);
}
showAlertDialog(BuildContext context) {
// set up the buttons
Widget cancelButton = FlatButton(
child: Text(TranslationBase.of(context).cancel),
onPressed: () {
Navigator.of(context).pop();
});
Widget continueButton = FlatButton(
child: Text(this.widget.okText),
onPressed: () {
this.widget.okFunction(widget.selectedValue);
Navigator.of(context).pop();
});
// set up the AlertDialog
AlertDialog alert = AlertDialog(
// title: Text(widget.title),
content: createDialogList(),
actions: [
cancelButton,
continueButton,
],
);
return alert;
}
Widget createDialogList() {
return Container(
height: MediaQuery.of(context).size.height * 0.5,
child: SingleChildScrollView(
child: Column(
children: [
...widget.list
.map((item) => RadioListTile(
title: Text(item.nameEn.toString()),
groupValue: widget.selectedValue.id.toString(),
value: item.id.toString(),
activeColor: Colors.blue.shade700,
selected: item.id.toString() == widget.selectedValue.id.toString(),
onChanged: (val) {
setState(() {
widget.selectedValue = item;
});
},
))
.toList()
],
),
),
);
}
static closeAlertDialog(BuildContext context) {
Navigator.of(context).pop();
}
}
Loading…
Cancel
Save