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['SessionID'] = SESSION_ID;
body['IsLoginForDoctorApp'] = IS_LOGIN_FOR_DOCTOR_APP; body['IsLoginForDoctorApp'] = IS_LOGIN_FOR_DOCTOR_APP;
body['PatientOutSA'] = 0; // PATIENT_OUT_SA; body['PatientOutSA'] = 0; // PATIENT_OUT_SA;
// body['VidaAuthTokenID'] = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIyODA0IiwianRpIjoiZWE0M2QxOTEtMWY1OS00ZWY1LThmYTYtM2ExYzBkNjQyNjc5IiwiZW1haWwiOiJNb2hhbWVkLlJlc3dhbkBjbG91ZHNvbHV0aW9uLXNhLmNvbSIsImlkIjoiMjgwNCIsIk5hbWUiOiJNVUhBTU1BRCBBWkFNIiwiRW1wbG95ZWVJZCI6IjE0ODUiLCJGYWNpbGl0eUdyb3VwSWQiOiIwMTAyNjYiLCJGYWNpbGl0eUlkIjoiMTUiLCJQaGFyYW1jeUZhY2lsaXR5SWQiOiI1NSIsIklTX1BIQVJNQUNZX0NPTk5FQ1RFRCI6IlRydWUiLCJEb2N0b3JJZCI6IjE0ODUiLCJTRVNTSU9OSUQiOiIyMTU3NTk0NyIsIkNsaW5pY0lkIjoiMyIsInJvbGUiOlsiU0VDVVJJVFkgQURNSU5JU1RSQVRPUlMiLCJTRVRVUCBBRE1JTklTVFJBVE9SUyIsIkNFTydTIiwiRVhFQ1VUSVZFIERJUkVDVE9SUyIsIk1BTkFHRVJTIiwiU1VQRVJWSVNPUlMiLCJDTElFTlQgU0VSVklDRVMgQ09PUkRJTkFUT1JTIiwiQ0xJRU5UIFNFUlZJQ0VTIFNVUEVSVklTT1JTIiwiQ0xJRU5UIFNFUlZJQ0VTIE1BTkdFUlMiLCJIRUFEIE5VUlNFUyIsIkRPQ1RPUlMiLCJDSElFRiBPRiBNRURJQ0FMIFNUQUZGUyIsIkJJTy1NRURJQ0FMIFRFQ0hOSUNJQU5TIiwiQklPLU1FRElDQUwgRU5HSU5FRVJTIiwiQklPLU1FRElDQUwgREVQQVJUTUVOVCBIRUFEUyIsIklUIEhFTFAgREVTSyIsIkFETUlOSVNUUkFUT1JTIiwiTEFCIEFETUlOSVNUUkFUT1IiLCJMQUIgVEVDSE5JQ0lBTiIsIkJVU0lORVNTIE9GRklDRSBTVEFGRiIsIkZJTkFOQ0UgQUNDT1VOVEFOVFMiLCJQSEFSTUFDWSBTVEFGRiIsIkFDQ09VTlRTIFNUQUZGIiwiTEFCIFJFQ0VQVElPTklTVCIsIkVSIE5VUlNFIiwiSU5QQVRJRU5UIEJJTExJTkcgU1VQRVJWSVNPUiIsIkxEUi1PUiBOVVJTRVMiLCJBRE1JU1NJT04gU1RBRkYiLCJIRUxQIERFU0sgQURNSU4iLCJBUFBST1ZBTCBTVEFGRiIsIklOUEFUSUVOVCBCSUxMSU5HIENPT1JESU5BVE9SIiwiQklMTElORyBTVEFGRiIsIkNPTlNFTlQgIiwiQ29uc2VudCAtIERlbnRhbCIsIldFQkVNUiJdLCJuYmYiOjE2MDgxMDYwOTgsImV4cCI6MTYwODk3MDA5OCwiaWF0IjoxNjA4MTA2MDk4fQ.EJ_QwlrHPQncnU_CP0HpnERPidpIl5nFQzqB2VNFbNs"; body['VidaAuthTokenID'] = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMDAyIiwianRpIjoiZjcwMTUyYzktMjAwNy00Y2FjLTkzMWUtOGI0MDlhMWFkNjc4IiwiZW1haWwiOiIiLCJpZCI6IjEwMDIiLCJOYW1lIjoiVEVNUCAtIERPQ1RPUiIsIkVtcGxveWVlSWQiOiI0NzA5IiwiRmFjaWxpdHlHcm91cElkIjoiMDEwMjY2IiwiRmFjaWxpdHlJZCI6IjE1IiwiUGhhcmFtY3lGYWNpbGl0eUlkIjoiNTUiLCJJU19QSEFSTUFDWV9DT05ORUNURUQiOiJUcnVlIiwiRG9jdG9ySWQiOiI0NzA5IiwiU0VTU0lPTklEIjoiMjE1ODU1MzAiLCJDbGluaWNJZCI6IjE3Iiwicm9sZSI6IkRPQ1RPUlMiLCJuYmYiOjE2MDg1NTMxMDAsImV4cCI6MTYwOTQxNzEwMCwiaWF0IjoxNjA4NTUzMTAwfQ.lydDI-nsHlmb4Z4vesnckCU1i3hnNayoWVacc3E5_XM";
print("URL : $url"); print("URL : $url");
print("Body : ${json.encode(body)}"); print("Body : ${json.encode(body)}");

@ -1,45 +1,80 @@
import 'package:doctor_app_flutter/config/config.dart'; 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/master_lookup_key.dart';
import 'package:doctor_app_flutter/core/service/base/base_service.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/get_Allergies_request_model.dart';
import 'package:doctor_app_flutter/models/SOAP/master_key_model.dart';
class SOAPService extends BaseService { class SOAPService extends BaseService {
List<MasterKeyModel> get listOfAllergies => _listOfAllergies;
List<dynamic> get listOfAllergies => _listOfAllergies; List<MasterKeyModel> get allergySeverityList => _allergySeverityList;
List<dynamic> _listOfAllergies = []; List<MasterKeyModel> _listOfAllergies = [];
List<MasterKeyModel> _allergySeverityList = [];
Future getAllergies(GetAllergiesRequestModel getAllergiesRequestModel) async { Future getAllergies(GetAllergiesRequestModel getAllergiesRequestModel) async {
await baseAppClient.post(GET_ALLERGIES, await baseAppClient.post(
GET_ALLERGIES,
onSuccess: (dynamic response, int statusCode) { onSuccess: (dynamic response, int statusCode) {
_listOfAllergies.clear(); _listOfAllergies.clear();
response['List_Allergies']['entityList'].forEach((v) { response['List_Allergies']['entityList'].forEach((v) {
_listOfAllergies _listOfAllergies.add(MasterKeyModel.fromJson(v));
.add(AllergyModel.fromJson(v));
}); });
}, onFailure: (String error, int statusCode) { },
onFailure: (String error, int statusCode) {
hasError = true; hasError = true;
super.error = error; super.error = error;
}, body: getAllergiesRequestModel.toJson(),); },
body: getAllergiesRequestModel.toJson(),
);
} }
Future getMasterLookup(MasterKeysService masterKeys) async { Future getMasterLookup(MasterKeysService masterKeys) async {
Map<String, dynamic> body = { Map<String, dynamic> body = {
"MasterInput" : masterKeys.getMasterKeyService() "MasterInput": masterKeys.getMasterKeyService()
}; };
print("fdfd");
await baseAppClient.post(GET_MASTER_LOOKUP_LIST, await baseAppClient.post(GET_MASTER_LOOKUP_LIST,
onSuccess: (dynamic response, int statusCode) { onSuccess: (dynamic response, int statusCode) {
_listOfAllergies.clear(); setMasterLookupInCorrectArray(
response['MasterLookUpList']['entityList'].forEach((v) { response['MasterLookUpList']['entityList'], masterKeys);
_listOfAllergies
.add(v);
});
}, onFailure: (String error, int statusCode) { }, onFailure: (String error, int statusCode) {
hasError = true; hasError = true;
super.error = error; super.error = error;
}, body: body); }, body: body);
} }
setMasterLookupInCorrectArray(entryList, MasterKeysService masterKeys) {
switch (masterKeys) {
case MasterKeysService.Allergies:
_listOfAllergies.clear();
entryList.forEach((v) {
_listOfAllergies
.add(MasterKeyModel.fromJson(v));
});
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/core/service/SOAP_service.dart';
import 'package:doctor_app_flutter/models/SOAP/Allergy_model.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/get_Allergies_request_model.dart';
import 'package:doctor_app_flutter/models/SOAP/master_key_model.dart';
import '../../locator.dart'; import '../../locator.dart';
import 'base_view_model.dart'; import 'base_view_model.dart';
@ -10,7 +11,8 @@ import 'base_view_model.dart';
class SOAPViewModel extends BaseViewModel { class SOAPViewModel extends BaseViewModel {
SOAPService _SOAPService = locator<SOAPService>(); 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 { Future getAllergies(GetAllergiesRequestModel getAllergiesRequestModel) async {
setState(ViewState.Busy); 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/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/util/translations_delegate_base.dart';
import 'package:doctor_app_flutter/widgets/shared/Text.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/TextFields.dart';
import 'package:doctor_app_flutter/widgets/shared/app_buttons_widget.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/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:eva_icons_flutter/eva_icons_flutter.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:font_awesome_flutter/font_awesome_flutter.dart'; import 'package:font_awesome_flutter/font_awesome_flutter.dart';
class AddAllergiesWidget extends StatefulWidget { class AddAllergiesWidget extends StatefulWidget {
final List<MySelectedAllergy> myAllergiesList;
AddAllergiesWidget({Key key, this.myAllergiesList});
@override @override
_AddAllergiesWidgetState createState() => _AddAllergiesWidgetState(); _AddAllergiesWidgetState createState() => _AddAllergiesWidgetState();
} }
class _AddAllergiesWidgetState extends State<AddAllergiesWidget> { class _AddAllergiesWidgetState extends State<AddAllergiesWidget> {
List<MySelectedAllergy> myAllergiesList;
List<dynamic> allergiesList;
dynamic _referTo;
dynamic _selectedBranch;
dynamic _selectedClinic;
dynamic _selectedDoctor;
TextEditingController remarkController = TextEditingController(); TextEditingController remarkController = TextEditingController();
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
final screenSize = MediaQuery final screenSize = MediaQuery.of(context).size;
.of(context)
.size;
return Column( return Column(
children: [ children: [
Container( Container(
margin: margin: EdgeInsets.only(left: 10, right: 10, top: 15),
EdgeInsets.only(left: 10, right: 10, top: 15),
child: TextFields( child: TextFields(
hintText: "Add Allergies", hintText: "Add Allergies",
fontSize: 13.5, fontSize: 13.5,
@ -49,7 +51,8 @@ class _AddAllergiesWidgetState extends State<AddAllergiesWidget> {
// controller: messageController, // controller: messageController,
validator: (value) { validator: (value) {
if (value == null) if (value == null)
return TranslationBase.of(context) return TranslationBase
.of(context)
.emptyMessage; .emptyMessage;
else else
return null; return null;
@ -62,16 +65,21 @@ class _AddAllergiesWidgetState extends State<AddAllergiesWidget> {
margin: margin:
EdgeInsets.only(left: 15, right: 15, top: 15), EdgeInsets.only(left: 15, right: 15, top: 15),
child: Column( child: Column(
children: widget.myAllergiesList.map((selectedAllergy) {
return Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
Row( Row(
mainAxisAlignment: mainAxisAlignment:
MainAxisAlignment.spaceBetween, MainAxisAlignment.spaceBetween,
children: [ children: [
Texts('White Egg'.toUpperCase(), Texts(selectedAllergy.selectedAllergy.nameEn
.toUpperCase(),
variant: "bodyText", variant: "bodyText",
bold: true, bold: true,
color: Colors.black), color: Colors.black),
Texts('Severe'.toUpperCase(), Texts(selectedAllergy.selectedAllergySeverity.nameEn
.toUpperCase(),
variant: "bodyText", variant: "bodyText",
bold: true, bold: true,
color: AppGlobal.appPrimaryColor), color: AppGlobal.appPrimaryColor),
@ -81,30 +89,13 @@ class _AddAllergiesWidgetState extends State<AddAllergiesWidget> {
size: 20, size: 20,
) )
], ],
), ), SizedBox(
SizedBox(
height: 20, 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,
)
],
),
], ],
);
}).toList()
), ),
) )
], ],
@ -112,9 +103,38 @@ class _AddAllergiesWidgetState extends State<AddAllergiesWidget> {
} }
openAllergiesList(BuildContext context) { openAllergiesList(BuildContext context) {
final screenSize = MediaQuery showModalBottomSheet(
.of(context) backgroundColor: Colors.white,
.size; isScrollControlled: true,
context: context,
builder: (context) {
return AddAllergies(
addAllergiesFun: (MySelectedAllergy mySelectedAllergy) {
widget.myAllergiesList.add(mySelectedAllergy);
Navigator.of(context).pop();
},);
});
}
}
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, InputDecoration textFieldSelectorDecoration(String hintText,
String selectedText, bool isDropDown) { String selectedText, bool isDropDown) {
return InputDecoration( return InputDecoration(
@ -137,15 +157,30 @@ class _AddAllergiesWidgetState extends State<AddAllergiesWidget> {
color: Colors.grey.shade600, color: Colors.grey.shade600,
), ),
); );
}; }
showModalBottomSheet(
backgroundColor: Colors.white, @override
isScrollControlled: true, Widget build(BuildContext context) {
context: context, final screenSize = MediaQuery
builder: (context) { .of(context)
.size;
return FractionallySizedBox( return FractionallySizedBox(
heightFactor: 0.7, heightFactor: 0.7,
child: Container( 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( child: FractionallySizedBox(
widthFactor: 0.9, widthFactor: 0.9,
child: Column( child: Column(
@ -166,28 +201,16 @@ class _AddAllergiesWidgetState extends State<AddAllergiesWidget> {
Container( Container(
height: screenSize.height * 0.070, height: screenSize.height * 0.070,
child: InkWell( child: InkWell(
onTap: allergiesList != null onTap: model.listOfAllergies != null
? () { ? () {
ListSelectDialog dialog = ListSelectDialog( MasterKeyDailog dialog = MasterKeyDailog(
list: allergiesList, list: model.listOfAllergies,
attributeName: 'name',
attributeValueId: 'id',
okText: TranslationBase okText: TranslationBase
.of(context) .of(context)
.ok, .ok,
okFunction: (selectedValue) { okFunction: (MasterKeyModel selectedValue) {
setState(() { setState(() {
_referTo = selectedValue; _selectedAllergy = selectedValue;
_selectedBranch = null;
_selectedClinic = null;
_selectedDoctor = null;
// model.getDoctorBranch().then((value) {
// _selectedBranch = value;
// if (_referTo['id'] == 1) {
// model.getClinics(
// _selectedBranch['ID']);
// }
// });
}); });
}, },
); );
@ -203,7 +226,9 @@ class _AddAllergiesWidgetState extends State<AddAllergiesWidget> {
child: TextField( child: TextField(
decoration: textFieldSelectorDecoration( decoration: textFieldSelectorDecoration(
"Select Allergy", "Select Allergy",
_referTo != null ? _referTo['name'] : null, _selectedAllergy != null
? _selectedAllergy.nameEn
: null,
true), true),
enabled: false, enabled: false,
), ),
@ -214,21 +239,17 @@ class _AddAllergiesWidgetState extends State<AddAllergiesWidget> {
), Container( ), Container(
height: screenSize.height * 0.070, height: screenSize.height * 0.070,
child: InkWell( child: InkWell(
onTap: allergiesList != null onTap: model.allergySeverityList != null
? () { ? () {
ListSelectDialog dialog = ListSelectDialog( MasterKeyDailog dialog = MasterKeyDailog(
list: allergiesList, list: model.allergySeverityList,
attributeName: 'name',
attributeValueId: 'id',
okText: TranslationBase okText: TranslationBase
.of(context) .of(context)
.ok, .ok,
okFunction: (selectedValue) { okFunction: (selectedValue) {
setState(() { setState(() {
_referTo = selectedValue; _selectedAllergySeverity =
_selectedBranch = null; selectedValue;
_selectedClinic = null;
_selectedDoctor = null;
// model.getDoctorBranch().then((value) { // model.getDoctorBranch().then((value) {
// _selectedBranch = value; // _selectedBranch = value;
// if (_referTo['id'] == 1) { // if (_referTo['id'] == 1) {
@ -251,7 +272,9 @@ class _AddAllergiesWidgetState extends State<AddAllergiesWidget> {
child: TextField( child: TextField(
decoration: textFieldSelectorDecoration( decoration: textFieldSelectorDecoration(
"Select Severity", "Select Severity",
_referTo != null ? _referTo['name'] : null, _selectedAllergySeverity != null
? _selectedAllergySeverity.nameEn
: null,
true), true),
enabled: false, enabled: false,
), ),
@ -261,7 +284,8 @@ class _AddAllergiesWidgetState extends State<AddAllergiesWidget> {
height: 10, height: 10,
), ),
Container( Container(
margin: EdgeInsets.only(left: 0, right: 0, top: 15), margin: EdgeInsets.only(
left: 0, right: 0, top: 15),
child: TextFields( child: TextFields(
hintText: "Remarks", hintText: "Remarks",
fontSize: 13.5, fontSize: 13.5,
@ -272,26 +296,37 @@ class _AddAllergiesWidgetState extends State<AddAllergiesWidget> {
controller: remarkController, controller: remarkController,
validator: (value) { validator: (value) {
if (value == null) if (value == null)
return TranslationBase.of(context).emptyMessage; return TranslationBase
.of(context)
.emptyMessage;
else else
return null; return null;
}), }),
),SizedBox( ), SizedBox(
height: 10, height: 10,
), ),
AppButton( AppButton(
title: "Add".toUpperCase(), title: "Add".toUpperCase(),
onPressed: () { onPressed: () {
MySelectedAllergy mySelectedAllergy = new MySelectedAllergy(
remark: remarkController.text,
selectedAllergy: _selectedAllergy,
selectedAllergySeverity: _selectedAllergySeverity);
widget.addAllergiesFun(mySelectedAllergy);
}, },
), ),
] ]
), ),
),
),
)), )),
),
); );
});
} }
} }

@ -1,10 +1,15 @@
import 'package:doctor_app_flutter/config/config.dart'; 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/util/translations_delegate_base.dart';
import 'package:doctor_app_flutter/widgets/shared/Text.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/TextFields.dart';
import 'package:doctor_app_flutter/widgets/shared/app_buttons_widget.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/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:eva_icons_flutter/eva_icons_flutter.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:font_awesome_flutter/font_awesome_flutter.dart'; import 'package:font_awesome_flutter/font_awesome_flutter.dart';
@ -111,8 +116,119 @@ class _AddHistoryWidgetState extends State<AddHistoryWidget>
isScrollControlled: true, isScrollControlled: true,
context: context, context: context,
builder: (context) { builder: (context) {
return AddHistoryDialog();
});
}
}
class PriorityBar extends StatefulWidget {
final Function onTap;
const PriorityBar({Key key, this.onTap}) : super(key: key);
@override
_PriorityBarState createState() => _PriorityBarState();
}
class _PriorityBarState extends State<PriorityBar> {
int _activePriority = 0;
List<String> _priorities = [
"Family",
"Surgical/Sports",
"Medical",
];
BoxDecoration containerBorderDecoration(
Color containerColor, Color borderColor) {
return BoxDecoration(
color: containerColor,
shape: BoxShape.rectangle,
borderRadius: BorderRadius.all(Radius.circular(6)),
border: Border.fromBorderSide(BorderSide(
color: borderColor,
width: 2.0,
)),
);
}
@override
Widget build(BuildContext context) {
final screenSize = MediaQuery.of(context).size;
return Container(
height: screenSize.height * 0.070,
decoration:
containerBorderDecoration(Color(0Xffffffff), Color(0xFFCCCCCC)),
child: Row(
mainAxisSize: MainAxisSize.max,
crossAxisAlignment: CrossAxisAlignment.center,
children: _priorities.map((item) {
bool _isActive = _priorities[_activePriority] == item ? true : false;
return Expanded(
child: InkWell(
child: Center(
child: Container(
height: screenSize.height * 0.070,
decoration: containerBorderDecoration(
_isActive ? HexColor("#B8382B") : Colors.white,
_isActive ? HexColor("#B8382B") : Colors.white),
child: Center(
child: Text(
item,
style: TextStyle(
fontSize: 12,
color: _isActive
? Colors.white
: Colors.black, //Colors.black,
fontWeight: FontWeight.bold,
),
),
)),
),
onTap: () {
widget.onTap(_priorities.indexOf(item));
setState(() {
_activePriority = _priorities.indexOf(item);
});
}),
);
}).toList(),
),
);
}
}
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( return FractionallySizedBox(
heightFactor: 0.7, 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: Container(
child: FractionallySizedBox( child: FractionallySizedBox(
widthFactor: 0.9, widthFactor: 0.9,
@ -122,7 +238,7 @@ class _AddHistoryWidgetState extends State<AddHistoryWidget>
height: 10, height: 10,
), ),
PriorityBar(onTap: (activePriority) { PriorityBar(onTap: (activePriority) {
changePageViewIndex(activePriority); widget.changePageViewIndex(activePriority);
}), }),
SizedBox( SizedBox(
height: 20, height: 20,
@ -130,18 +246,21 @@ class _AddHistoryWidgetState extends State<AddHistoryWidget>
Expanded( Expanded(
child: PageView( child: PageView(
physics: NeverScrollableScrollPhysics(), physics: NeverScrollableScrollPhysics(),
controller: _controller, controller: widget.controller,
onPageChanged: (index) { onPageChanged: (index) {
setState(() { setState(() {
_currentIndex = index; // currentIndex = index;
}); });
}, },
scrollDirection: Axis.horizontal, scrollDirection: Axis.horizontal,
children: <Widget>[ children: <Widget>[
Column( Column(
children: [ children: [
Container( NetworkBaseView(
height: MediaQuery.of(context).size.height * 0.5, baseViewModel: model,
child: Container(
height:
MediaQuery.of(context).size.height * 0.5,
child: Center( child: Center(
child: Container( child: Container(
margin: EdgeInsets.only(top: 15), margin: EdgeInsets.only(top: 15),
@ -156,14 +275,17 @@ class _AddHistoryWidgetState extends State<AddHistoryWidget>
children: [ children: [
Checkbox( Checkbox(
value: true, value: true,
activeColor: Colors.red[800], activeColor:
Colors.red[800],
onChanged: (bool newValue) { onChanged: (bool newValue) {
setState(() {}); setState(() {});
}), }),
Expanded( Expanded(
child: Padding( child: Padding(
padding: const EdgeInsets.symmetric( padding: const EdgeInsets
horizontal: 10, vertical: 0), .symmetric(
horizontal: 10,
vertical: 0),
child: Texts('History', child: Texts('History',
variant: "bodyText", variant: "bodyText",
bold: true, bold: true,
@ -177,14 +299,17 @@ class _AddHistoryWidgetState extends State<AddHistoryWidget>
children: [ children: [
Checkbox( Checkbox(
value: true, value: true,
activeColor: Colors.red[800], activeColor:
Colors.red[800],
onChanged: (bool newValue) { onChanged: (bool newValue) {
setState(() {}); setState(() {});
}), }),
Expanded( Expanded(
child: Padding( child: Padding(
padding: const EdgeInsets.symmetric( padding: const EdgeInsets
horizontal: 10, vertical: 0), .symmetric(
horizontal: 10,
vertical: 0),
child: Texts('History', child: Texts('History',
variant: "bodyText", variant: "bodyText",
bold: true, bold: true,
@ -198,14 +323,17 @@ class _AddHistoryWidgetState extends State<AddHistoryWidget>
children: [ children: [
Checkbox( Checkbox(
value: true, value: true,
activeColor: Colors.red[800], activeColor:
Colors.red[800],
onChanged: (bool newValue) { onChanged: (bool newValue) {
setState(() {}); setState(() {});
}), }),
Expanded( Expanded(
child: Padding( child: Padding(
padding: const EdgeInsets.symmetric( padding: const EdgeInsets
horizontal: 10, vertical: 0), .symmetric(
horizontal: 10,
vertical: 0),
child: Texts('History', child: Texts('History',
variant: "bodyText", variant: "bodyText",
bold: true, bold: true,
@ -219,14 +347,17 @@ class _AddHistoryWidgetState extends State<AddHistoryWidget>
children: [ children: [
Checkbox( Checkbox(
value: true, value: true,
activeColor: Colors.red[800], activeColor:
Colors.red[800],
onChanged: (bool newValue) { onChanged: (bool newValue) {
setState(() {}); setState(() {});
}), }),
Expanded( Expanded(
child: Padding( child: Padding(
padding: const EdgeInsets.symmetric( padding: const EdgeInsets
horizontal: 10, vertical: 0), .symmetric(
horizontal: 10,
vertical: 0),
child: Texts('History', child: Texts('History',
variant: "bodyText", variant: "bodyText",
bold: true, bold: true,
@ -240,14 +371,17 @@ class _AddHistoryWidgetState extends State<AddHistoryWidget>
children: [ children: [
Checkbox( Checkbox(
value: true, value: true,
activeColor: Colors.red[800], activeColor:
Colors.red[800],
onChanged: (bool newValue) { onChanged: (bool newValue) {
setState(() {}); setState(() {});
}), }),
Expanded( Expanded(
child: Padding( child: Padding(
padding: const EdgeInsets.symmetric( padding: const EdgeInsets
horizontal: 10, vertical: 0), .symmetric(
horizontal: 10,
vertical: 0),
child: Texts('History', child: Texts('History',
variant: "bodyText", variant: "bodyText",
bold: true, bold: true,
@ -261,14 +395,17 @@ class _AddHistoryWidgetState extends State<AddHistoryWidget>
children: [ children: [
Checkbox( Checkbox(
value: true, value: true,
activeColor: Colors.red[800], activeColor:
Colors.red[800],
onChanged: (bool newValue) { onChanged: (bool newValue) {
setState(() {}); setState(() {});
}), }),
Expanded( Expanded(
child: Padding( child: Padding(
padding: const EdgeInsets.symmetric( padding: const EdgeInsets
horizontal: 10, vertical: 0), .symmetric(
horizontal: 10,
vertical: 0),
child: Texts('History', child: Texts('History',
variant: "bodyText", variant: "bodyText",
bold: true, bold: true,
@ -282,14 +419,17 @@ class _AddHistoryWidgetState extends State<AddHistoryWidget>
children: [ children: [
Checkbox( Checkbox(
value: true, value: true,
activeColor: Colors.red[800], activeColor:
Colors.red[800],
onChanged: (bool newValue) { onChanged: (bool newValue) {
setState(() {}); setState(() {});
}), }),
Expanded( Expanded(
child: Padding( child: Padding(
padding: const EdgeInsets.symmetric( padding: const EdgeInsets
horizontal: 10, vertical: 0), .symmetric(
horizontal: 10,
vertical: 0),
child: Texts('History', child: Texts('History',
variant: "bodyText", variant: "bodyText",
bold: true, bold: true,
@ -303,14 +443,17 @@ class _AddHistoryWidgetState extends State<AddHistoryWidget>
children: [ children: [
Checkbox( Checkbox(
value: true, value: true,
activeColor: Colors.red[800], activeColor:
Colors.red[800],
onChanged: (bool newValue) { onChanged: (bool newValue) {
setState(() {}); setState(() {});
}), }),
Expanded( Expanded(
child: Padding( child: Padding(
padding: const EdgeInsets.symmetric( padding: const EdgeInsets
horizontal: 10, vertical: 0), .symmetric(
horizontal: 10,
vertical: 0),
child: Texts('History', child: Texts('History',
variant: "bodyText", variant: "bodyText",
bold: true, bold: true,
@ -326,9 +469,11 @@ class _AddHistoryWidgetState extends State<AddHistoryWidget>
), ),
)), )),
), ),
),
SizedBox( SizedBox(
height: 10, height: 10,
), ),
if (model.state == ViewState.Idle)
AppButton( AppButton(
title: "Add SELECTED HISTORIES".toUpperCase(), title: "Add SELECTED HISTORIES".toUpperCase(),
onPressed: () {}, onPressed: () {},
@ -351,86 +496,8 @@ class _AddHistoryWidgetState extends State<AddHistoryWidget>
], ],
), ),
)), )),
);
});
}
}
class PriorityBar extends StatefulWidget {
final Function onTap;
const PriorityBar({Key key, this.onTap}) : super(key: key);
@override
_PriorityBarState createState() => _PriorityBarState();
}
class _PriorityBarState extends State<PriorityBar> {
int _activePriority = 0;
List<String> _priorities = [
"Family",
"Surgical/Sports",
"Medical",
];
BoxDecoration containerBorderDecoration(
Color containerColor, Color borderColor) {
return BoxDecoration(
color: containerColor,
shape: BoxShape.rectangle,
borderRadius: BorderRadius.all(Radius.circular(6)),
border: Border.fromBorderSide(BorderSide(
color: borderColor,
width: 2.0,
)),
);
}
@override
Widget build(BuildContext context) {
final screenSize = MediaQuery.of(context).size;
return Container(
height: screenSize.height * 0.070,
decoration:
containerBorderDecoration(Color(0Xffffffff), Color(0xFFCCCCCC)),
child: Row(
mainAxisSize: MainAxisSize.max,
crossAxisAlignment: CrossAxisAlignment.center,
children: _priorities.map((item) {
bool _isActive = _priorities[_activePriority] == item ? true : false;
return Expanded(
child: InkWell(
child: Center(
child: Container(
height: screenSize.height * 0.070,
decoration: containerBorderDecoration(
_isActive ? HexColor("#B8382B") : Colors.white,
_isActive ? HexColor("#B8382B") : Colors.white),
child: Center(
child: Text(
item,
style: TextStyle(
fontSize: 12,
color: _isActive
? Colors.white
: Colors.black, //Colors.black,
fontWeight: FontWeight.bold,
), ),
), ),
)), ));
),
onTap: () {
widget.onTap(_priorities.indexOf(item));
setState(() {
_activePriority = _priorities.indexOf(item);
});
}),
);
}).toList(),
),
);
} }
} }

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