new pages

merge-requests/87/head
unknown 6 years ago
parent aaeaa3031e
commit 61674bec47

@ -4,7 +4,7 @@ const ONLY_LETTERS = "[a-zA-Z]";
const ONLY_DATE = "[0-9/]";
const BASE_URL = 'https://uat.hmgwebservices.com/Services/';
const PHARMACY_ITEMS_URL = "Lists.svc/REST/GetPharmcyItems";
const PHARMACY_ITEMS_URL = "Lists.svc/REST/GetPharmcyItems_Region";
const PHARMACY_LIST_URL = "Patients.svc/REST/GetPharmcyList";
const PATIENT_PROGRESS_NOTE_URL = "DoctorApplication.svc/REST/GetProgressNoteForInPatient";
const PATIENT_INSURANCE_APPROVALS_URL = "DoctorApplication.svc/REST/GetApprovalStatusForInpatient";

@ -29,7 +29,7 @@ class PharmaciesListRequestModel {
this.stamp = '2020-04-23T21:01:21.492Z',
this.ipAdress = '11.11.11.11',
this.versionID = 1.2,
this.tokenID = '@dm!n',
this.tokenID ,
this.sessionID = 'e29zoooEJ4',
this.isLoginForDoctorApp = true,
this.channel = 9,

@ -22,10 +22,10 @@ class PharmaciesItemsRequestModel {
this.patientTypeID = 1,
this.languageID = 2,
this.stamp = '2020-04-23T21:01:21.492Z',
this.ipAdress = '11.11.11.11',
this.versionID = 1.2,
this.tokenID = '@dm!n',
this.sessionID = 'e29zoooEJ4',
this.ipAdress = '10.20.10.20',
this.versionID = 5.2,
this.tokenID ,
this.sessionID = "KvFJENeAUCxyVdIfEkHw",
this.isLoginForDoctorApp = true,
this.patientOutSA = false});

@ -2,15 +2,19 @@ import 'dart:convert';
import 'package:doctor_app_flutter/client/app_client.dart';
import 'package:doctor_app_flutter/config/config.dart';
import 'package:doctor_app_flutter/config/shared_pref_kay.dart';
import 'package:doctor_app_flutter/models/pharmacies_List_request_model.dart';
import 'package:doctor_app_flutter/models/pharmacies_items_request_model.dart';
import 'package:doctor_app_flutter/util/dr_app_shared_pref.dart';
import 'package:doctor_app_flutter/util/helpers.dart';
import 'package:flutter/cupertino.dart';
class MedicineProvider with ChangeNotifier {
DrAppSharedPreferances sharedPref = new DrAppSharedPreferances();
var pharmacyItemsList = [];
var pharmaciesList = [];
bool isFinished = false;
bool isFinished = true;
bool hasError = false;
String errorMsg = '';
@ -18,12 +22,15 @@ class MedicineProvider with ChangeNotifier {
PharmaciesListRequestModel _listRequestModel = PharmaciesListRequestModel();
Future<String> getMedicineItem(String itemName) async {
resetDefaultValues();
try {
if (await Helpers.checkConnection()) {
_itemsRequestModel.phrItemName = itemName;
final response = await AppClient.post(PHARMACY_ITEMS_URL,
body: json.encode(_itemsRequestModel.toJson()));
final int statusCode = response.statusCode;
isFinished = true;
if (statusCode < 200 || statusCode >= 400 || json == null) {
isFinished = true;
hasError = true;
@ -31,7 +38,7 @@ class MedicineProvider with ChangeNotifier {
} else {
var parsed = json.decode(response.body.toString());
if (parsed['MessageStatus'] == 1) {
pharmacyItemsList = parsed['ListPharmcy'];
pharmacyItemsList = parsed['ListPharmcy_Region'];
hasError = false;
isFinished = true;
errorMsg = "Done";
@ -54,12 +61,16 @@ class MedicineProvider with ChangeNotifier {
}
Future<String> getPharmaciesList(int itemId) async {
String token = await sharedPref.getString(TOKEN);
resetDefaultValues();
try {
if (await Helpers.checkConnection()) {
_listRequestModel.itemID = itemId;
_listRequestModel.tokenID = token;
final response = await AppClient.post(PHARMACY_LIST_URL,
body: json.encode(_listRequestModel.toJson()));
final int statusCode = response.statusCode;
isFinished = true;
if (statusCode < 200 || statusCode >= 400 || json == null) {
isFinished = true;
hasError = true;
@ -88,4 +99,11 @@ class MedicineProvider with ChangeNotifier {
return errorMsg;
}
resetDefaultValues() {
isFinished = false;
hasError = false;
errorMsg = '';
notifyListeners();
}
}

@ -30,6 +30,11 @@ class PatientsProvider with ChangeNotifier {
List<LabOrdersResModel> patientLabResultOrdersList = [];
List<PrescriptionResModel> patientPrescriptionsList = [];
List<RadiologyResModel> patientRadiologyList = [];
/*@author: ibrahe albitar
*@Date:2/6/2020
*@desc: getPatientPrescriptions
*/
var patientProgressNoteList = [];
var insuranceApporvalsList = [];
@ -283,7 +288,10 @@ class PatientsProvider with ChangeNotifier {
}
}
/*@author: ibrahe albitar
*@Date:2/6/2020
*@desc: getPatientPrescriptions
*/
getPatientProgressNote(patient) async{
setBasicData();
try {
@ -315,7 +323,10 @@ class PatientsProvider with ChangeNotifier {
handelCatchErrorCase(err);
}
}
/*@author: ibrahe albitar
*@Date:2/6/2020
*@desc: getPatientPrescriptions
*/
getPatientInsuranceApprovals(patient) async{
setBasicData();

@ -9,6 +9,8 @@ import 'package:doctor_app_flutter/widgets/medicine/medicine_item_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_text_form_field.dart';
import 'package:doctor_app_flutter/widgets/shared/app_texts_widget.dart';
import 'package:doctor_app_flutter/widgets/shared/dr_app_circular_progress_Indeicator.dart';
import 'package:doctor_app_flutter/widgets/shared/rounded_container_widget.dart';
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
@ -31,45 +33,51 @@ class _MedicineSearchState extends State<MedicineSearchScreen> {
MedicineProvider _medicineProvider;
bool _isInit = true;
@override
void didChangeDependencies() {
super.didChangeDependencies();
if (_isInit) {
_medicineProvider = Provider.of<MedicineProvider>(context);
}
_isInit = false;
}
@override
Widget build(BuildContext context) {
_medicineProvider = Provider.of(context);
return AppScaffold(
appBarTitle: "Search Medicine",
body: Column(
children: <Widget>[
RoundedContainer(
child: Column(
children: <Widget>[
Icon(
Icons.search,
size: SizeConfig.imageSizeMultiplier * 15,
),
Padding(
padding: EdgeInsets.only(
bottom: SizeConfig.heightMultiplier * 5,
right: SizeConfig.heightMultiplier * 3,
left: SizeConfig.heightMultiplier * 3,
bottom: SizeConfig.heightMultiplier * 1,
right: SizeConfig.heightMultiplier * 2,
left: SizeConfig.heightMultiplier * 2,
top: SizeConfig.heightMultiplier * 3),
child: AppTextFormField(
hintText: 'Type Medicine Name Here..',
hintText: 'Search Medicine Name Here..',
controller: myController,
onSaved: (value) {},
// validator: (value) {
// return TextValidator().validateName(value);
// },
inputFormatter: ONLY_LETTERS),
)
],
)),
),
Container(
margin: EdgeInsets.all(SizeConfig.widthMultiplier * 5),
margin: EdgeInsets.only(bottom: 5,
left: 10,
right: 10,
top: 0),
child: Wrap(
alignment: WrapAlignment.center,
children: <Widget>[
AppButton(
title: "Search",
color: Color(0xff58434F),
color: Color(PRIMARY_COLOR),
onPressed: () {
searchMedicine(context);
},
@ -77,17 +85,40 @@ class _MedicineSearchState extends State<MedicineSearchScreen> {
],
),
),
Container(
margin: EdgeInsets.only(left: SizeConfig.heightMultiplier * 2),
child: Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
AppText(
"You find " + (data == null ? "0": data.length.toString())+" items in search",
fontWeight: FontWeight.bold,
margin: 5,),
],
),
),
Expanded(
child: Container(
width: SizeConfig.screenWidth * 0.80,
child: ListView.builder(
child: !_medicineProvider.isFinished
? DrAppCircularProgressIndeicator()
: _medicineProvider.hasError
? Center(
child: Text(
_medicineProvider.errorMsg,
style: TextStyle(
color: Theme.of(context).errorColor),
),
):ListView.builder(
scrollDirection: Axis.vertical,
shrinkWrap: true,
itemCount: data == null ? 0 : data.length,
itemBuilder: (BuildContext context, int index) {
return InkWell(
child: MedicineItemWidget(
label: data[index]["ItemDescription"],
url: data[index]["ProductImageBase64"],
),
onTap: () {
Navigator.push(

@ -15,7 +15,6 @@ import 'package:provider/provider.dart';
import 'package:maps_launcher/maps_launcher.dart';
import 'package:url_launcher/url_launcher.dart';
DrAppSharedPreferances sharedPref = DrAppSharedPreferances();
class PharmaciesListScreen extends StatefulWidget {
@ -32,118 +31,139 @@ class _PharmaciesListState extends State<PharmaciesListScreen> {
var _data;
Helpers helpers = new Helpers();
MedicineProvider _medicineProvider;
bool _isInit = true;
//bool _isOutOfStuck = false;
@override
void didChangeDependencies() {
super.didChangeDependencies();
if (_isInit) {
_medicineProvider = Provider.of<MedicineProvider>(context);
pharmaciesList();
}
_isInit = false;
}
@override
Widget build(BuildContext context) {
_medicineProvider = Provider.of(context);
pharmaciesList();
return AppScaffold(
appBarTitle: "Pharmacies List",
body: Column(
children: <Widget>[
RoundedContainer(
child: !_medicineProvider.isFinished
? DrAppCircularProgressIndeicator()
: _medicineProvider.hasError
? Center(
child: Text(
_medicineProvider.errorMsg,
style: TextStyle(
color: Theme.of(context).errorColor),
body: Column(children: <Widget>[
RoundedContainer(
child: !_medicineProvider.isFinished
? DrAppCircularProgressIndeicator()
: _medicineProvider.hasError
? Center(
child: Text(
_medicineProvider.errorMsg,
style:
TextStyle(color: Theme.of(context).errorColor),
),
)
: Column(
mainAxisAlignment: MainAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.stretch,
children: <Widget>[
AppText(
"Description",
margin: 10,
fontWeight: FontWeight.bold,
),
)
: Column(
mainAxisAlignment: MainAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.stretch,
children: <Widget>[
AppText(
"Description",
margin: 10,
fontWeight: FontWeight.bold,
),
AppText(
_data[0]["ItemDescription"],
marginLeft: 10,
marginTop: 0,
marginRight: 10,
marginBottom: 10,
),
AppText(
"Price",
margin: 10,
fontWeight: FontWeight.bold,
),
AppText(
_data[0]["SellingPrice"].toString(),
marginLeft: 10,
marginTop: 0,
marginRight: 10,
marginBottom: 10,
),
],
)),
Container(
margin: EdgeInsets.all(SizeConfig.widthMultiplier * 5),
child: Align(
alignment: Alignment.centerLeft,
child: AppText(
"You can Find it in",
fontWeight: FontWeight.bold,
fontSize: SizeConfig.textMultiplier * 3,
))),
Expanded(
child: Container(
width: SizeConfig.screenWidth * 0.80,
child: ListView.builder(
AppText(
_data[0]["ItemDescription"],
marginLeft: 10,
marginTop: 0,
marginRight: 10,
marginBottom: 10,
),
AppText(
"Price",
margin: 10,
fontWeight: FontWeight.bold,
),
AppText(
_data[0]["SellingPrice"].toString(),
marginLeft: 10,
marginTop: 0,
marginRight: 10,
marginBottom: 10,
),
],
)),
Container(
margin: EdgeInsets.all(SizeConfig.widthMultiplier * 5),
child: Align(
alignment: Alignment.centerLeft,
child: AppText(
"You can Find it in",
fontWeight: FontWeight.bold,
fontSize: SizeConfig.textMultiplier * 3,
))),
Expanded(
child: Container(
width: SizeConfig.screenWidth * 0.99,
child: ListView.builder(
scrollDirection: Axis.vertical,
shrinkWrap: true,
itemCount: _data == null ? 0 : _data.length,
itemBuilder: (BuildContext context, int index) {
return Column(
children: <Widget>[
MedicineItemWidget(
label: _data[index]["LocationDescription"],
),
Container(
margin: EdgeInsets.only(bottom: 10),
child: Row(
children: <Widget>[
Expanded(flex: 2, child: SizedBox()),
Expanded(
flex: 6,
child: AppButton(
title: "Call",
fontSize: 2,
color: Colors.brown[200],
padding: 0,
onPressed: () => launch("tel://"+_data[index]["PhoneNumber"])),
return RoundedContainer(
child: Row(
children: <Widget>[
Expanded(
flex: 1,
child: ClipRRect(
borderRadius:BorderRadius.all(Radius.circular(7)),
child: Image.network(
_data[index]["ProjectImageURL"],
height: SizeConfig.imageSizeMultiplier * 15,
width: SizeConfig.imageSizeMultiplier * 15,
fit: BoxFit.cover,
),
Expanded(flex: 1, child: SizedBox()),
Expanded(
flex: 6,
child: AppButton(
title: "Direction",
fontSize: 2,
color: Color(PRIMARY_COLOR),
padding: 0,
onPressed: () {
MapsLauncher.launchCoordinates(double.parse(_data[index]["Latitude"]), double.parse( _data[index]["Longitude"]), _data[index]["LocationDescription"] );
}),
),
),
Expanded(
flex: 4,
child: AppText(
_data[index]["LocationDescription"],
margin: 10,
),
),
Expanded(
flex: 2,
child: Wrap(
direction: Axis.horizontal,
alignment: WrapAlignment.end,
crossAxisAlignment: WrapCrossAlignment.end,
children: <Widget>[
Padding(
padding: EdgeInsets.all(5),
child: InkWell(child: Icon(Icons.call, color: Colors.red,),onTap: ()=>launch(
"tel://" + _data[index]["PhoneNumber"]),),
),
Expanded(flex: 2, child: SizedBox()),
],
Padding(
padding: EdgeInsets.all(5),
child: InkWell(child: Icon(Icons.pin_drop, color: Colors.red,),onTap: () {
MapsLauncher.launchCoordinates(
double.parse(_data[index]["Latitude"]),
double.parse(_data[index]["Longitude"]),
_data[index]["LocationDescription"]);
},),
),
],
),
),
)
],
],
),
);
},
),
),
}),
),
],
));
)
]));
}
Future<bool> pharmaciesList() async {

@ -1,5 +1,9 @@
import 'dart:convert';
import 'dart:typed_data';
import 'package:doctor_app_flutter/config/config.dart';
import 'package:doctor_app_flutter/config/size_config.dart';
import 'package:doctor_app_flutter/widgets/shared/profile_image_widget.dart';
import '../shared/rounded_container_widget.dart';
import '../shared/app_texts_widget.dart';
@ -19,8 +23,9 @@ final String label;
final Color backgroundColor;
final bool showBorder;
final Color borderColor;
final String url;
MedicineItemWidget({ @required this.label, this.backgroundColor = Colors.white, this.showBorder = false, this.borderColor = Colors.white});
MedicineItemWidget({ @required this.label, this.backgroundColor = Colors.white, this.showBorder = false, this.borderColor = Colors.white, this.url});
@override
_MedicineItemWidgetState createState() => _MedicineItemWidgetState();
}
@ -30,23 +35,41 @@ class _MedicineItemWidgetState extends State<MedicineItemWidget> {
Widget build(BuildContext context) {
return new RoundedContainer(
height: SizeConfig.heightMultiplier * 8,
child:Row(
crossAxisAlignment: CrossAxisAlignment.stretch,
mainAxisAlignment: MainAxisAlignment.start,
children: <Widget>[
RoundedContainer(
width: SizeConfig.widthMultiplier * 2,
backgroundColor: Color(PRIMARY_COLOR),
margin: 0,
topLeft: 6,
topRight: 0,
bottomLeft: 6,
bottomRight: 0,
customCornerRaduis: true,
child: SizedBox(width: SizeConfig.widthMultiplier, height: SizeConfig.heightMultiplier*3,),
child:Padding(
padding: const EdgeInsets.all(5.0),
child: Row(
crossAxisAlignment: CrossAxisAlignment.stretch,
mainAxisAlignment: MainAxisAlignment.start,
children: <Widget>[
if(widget.url != null) Container(
height: 39,
width: 39,
child: ClipRRect(
borderRadius:BorderRadius.all(Radius.circular(7)),
child: Image.memory(
dataFromBase64String(widget.url),
height: SizeConfig.imageSizeMultiplier * 15,
width: SizeConfig.imageSizeMultiplier * 15,
fit: BoxFit.cover,
),
),
),
Expanded(child: Padding( padding: EdgeInsets.all(5), child: Align( alignment: Alignment.centerLeft, child: AppText(widget.label))))
],),
Expanded(child: Padding( padding: EdgeInsets.all(5), child: Align( alignment: Alignment.centerLeft, child: AppText(widget.label))))
],),
),
backgroundColor: widget.backgroundColor, showBorder: widget.showBorder, borderColor: widget.borderColor, margin: 4, raduis: 10,);
}
Image imageFromBase64String(String base64String) {
return Image.memory(base64Decode(base64String));
}
Uint8List dataFromBase64String(String base64String) {
return base64Decode(base64String);
}
String base64String(Uint8List data) {
return base64Encode(data);
}
}

@ -29,21 +29,22 @@ class AppButton extends StatefulWidget {
splashColor: widget.color,
child: Padding(
padding: EdgeInsets.only(
top: 10,
bottom: 10,
right: SizeConfig.widthMultiplier * widget.padding,
left: SizeConfig.widthMultiplier * widget.padding
top: 15,
bottom: 15,
//right: SizeConfig.widthMultiplier * widget.padding,
//left: SizeConfig.widthMultiplier * widget.padding
),
child: Row(
mainAxisSize: MainAxisSize.min,
mainAxisSize: MainAxisSize.max,
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
/*Icon(
if (widget.icon != null) Icon(
widget.icon,
color: Colors.white,
),
SizedBox(
width: 10.0,
),*/
if (widget.icon != null) SizedBox(
width: 5.0,
),
AppText(
widget.title,
color: Colors.white,
@ -54,7 +55,7 @@ class AppButton extends StatefulWidget {
),
),
onPressed: widget.onPressed,
shape: const StadiumBorder(),
shape: const RoundedRectangleBorder(borderRadius: BorderRadius.all(Radius.circular(10))),
);
}
}

@ -36,17 +36,16 @@ class AppTextFormField extends FormField<String> {
hintText: hintText,
hintStyle: TextStyle(fontSize: SizeConfig.textMultiplier * 2),
enabledBorder: OutlineInputBorder(
borderRadius: BorderRadius.all(Radius.circular(30)),
borderRadius: BorderRadius.all(Radius.circular(10)),
borderSide: BorderSide(color: Color(0xff707070)),
),
focusedBorder: OutlineInputBorder(
borderRadius: BorderRadius.all(Radius.circular(30)),
borderRadius: BorderRadius.all(Radius.circular(10)),
)
//BorderRadius.all(Radius.circular(20));
),
onTap: onTap,
controller: controller,
controller: controller,
),
state.hasError?
Text(

Loading…
Cancel
Save