Merge branch 'development' into patients-new-design

merge-requests/422/head
mosazaid 4 years ago
commit 9dc708fd3d

@ -14,7 +14,8 @@
<application
android:name="io.flutter.app.FlutterApplication"
android:icon="@mipmap/ic_launcher"
android:label="doctor_app_flutter">
android:roundIcon="@mipmap/ic_launcher_round"
android:label="Doctors app">
<activity android:name=".ui.VideoCallActivity"></activity>
<activity
android:name=".MainActivity"

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<background android:drawable="@color/ic_launcher_background"/>
<foreground android:drawable="@mipmap/ic_launcher_foreground"/>
</adaptive-icon>

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<background android:drawable="@color/ic_launcher_background"/>
<foreground android:drawable="@mipmap/ic_launcher_foreground"/>
</adaptive-icon>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 544 B

After

Width:  |  Height:  |  Size: 5.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 442 B

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 721 B

After

Width:  |  Height:  |  Size: 6.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.0 KiB

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 67 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="ic_launcher_background">#ffffff</color>
</resources>

@ -1,122 +1,128 @@
{
"images" : [
{
"size" : "20x20",
"idiom" : "iphone",
"filename" : "Icon-App-20x20@2x.png",
"scale" : "2x"
},
{
"size" : "20x20",
"idiom" : "iphone",
"filename" : "Icon-App-20x20@3x.png",
"scale" : "3x"
},
{
"size" : "29x29",
"idiom" : "iphone",
"filename" : "Icon-App-29x29@1x.png",
"scale" : "1x"
},
{
"size" : "29x29",
"idiom" : "iphone",
"filename" : "Icon-App-29x29@2x.png",
"scale" : "2x"
},
{
"size" : "29x29",
"idiom" : "iphone",
"filename" : "Icon-App-29x29@3x.png",
"scale" : "3x"
},
{
"size" : "40x40",
"idiom" : "iphone",
"filename" : "Icon-App-40x40@2x.png",
"scale" : "2x"
},
{
"size" : "40x40",
"idiom" : "iphone",
"filename" : "Icon-App-40x40@3x.png",
"scale" : "3x"
},
{
"size" : "60x60",
"idiom" : "iphone",
"filename" : "Icon-App-60x60@2x.png",
"scale" : "2x"
},
{
"size" : "60x60",
"idiom" : "iphone",
"filename" : "Icon-App-60x60@3x.png",
"scale" : "3x"
},
{
"size" : "20x20",
"idiom" : "ipad",
"filename" : "Icon-App-20x20@1x.png",
"scale" : "1x"
},
{
"size" : "20x20",
"idiom" : "ipad",
"filename" : "Icon-App-20x20@2x.png",
"scale" : "2x"
},
{
"size" : "29x29",
"idiom" : "ipad",
"filename" : "Icon-App-29x29@1x.png",
"scale" : "1x"
},
{
"size" : "29x29",
"idiom" : "ipad",
"filename" : "Icon-App-29x29@2x.png",
"scale" : "2x"
},
{
"size" : "40x40",
"idiom" : "ipad",
"filename" : "Icon-App-40x40@1x.png",
"scale" : "1x"
},
{
"size" : "40x40",
"idiom" : "ipad",
"filename" : "Icon-App-40x40@2x.png",
"scale" : "2x"
},
{
"size" : "76x76",
"idiom" : "ipad",
"filename" : "Icon-App-76x76@1x.png",
"scale" : "1x"
},
{
"size" : "76x76",
"idiom" : "ipad",
"filename" : "Icon-App-76x76@2x.png",
"scale" : "2x"
},
{
"size" : "83.5x83.5",
"idiom" : "ipad",
"filename" : "Icon-App-83.5x83.5@2x.png",
"scale" : "2x"
},
{
"size" : "1024x1024",
"idiom" : "ios-marketing",
"filename" : "Icon-App-1024x1024@1x.png",
"scale" : "1x"
"images":[
{
"idiom":"iphone",
"size":"20x20",
"scale":"2x",
"filename":"Icon-App-20x20@2x.png"
},
{
"idiom":"iphone",
"size":"20x20",
"scale":"3x",
"filename":"Icon-App-20x20@3x.png"
},
{
"idiom":"iphone",
"size":"29x29",
"scale":"1x",
"filename":"Icon-App-29x29@1x.png"
},
{
"idiom":"iphone",
"size":"29x29",
"scale":"2x",
"filename":"Icon-App-29x29@2x.png"
},
{
"idiom":"iphone",
"size":"29x29",
"scale":"3x",
"filename":"Icon-App-29x29@3x.png"
},
{
"idiom":"iphone",
"size":"40x40",
"scale":"2x",
"filename":"Icon-App-40x40@2x.png"
},
{
"idiom":"iphone",
"size":"40x40",
"scale":"3x",
"filename":"Icon-App-40x40@3x.png"
},
{
"idiom":"iphone",
"size":"60x60",
"scale":"2x",
"filename":"Icon-App-60x60@2x.png"
},
{
"idiom":"iphone",
"size":"60x60",
"scale":"3x",
"filename":"Icon-App-60x60@3x.png"
},
{
"idiom":"iphone",
"size":"76x76",
"scale":"2x",
"filename":"Icon-App-76x76@2x.png"
},
{
"idiom":"ipad",
"size":"20x20",
"scale":"1x",
"filename":"Icon-App-20x20@1x.png"
},
{
"idiom":"ipad",
"size":"20x20",
"scale":"2x",
"filename":"Icon-App-20x20@2x.png"
},
{
"idiom":"ipad",
"size":"29x29",
"scale":"1x",
"filename":"Icon-App-29x29@1x.png"
},
{
"idiom":"ipad",
"size":"29x29",
"scale":"2x",
"filename":"Icon-App-29x29@2x.png"
},
{
"idiom":"ipad",
"size":"40x40",
"scale":"1x",
"filename":"Icon-App-40x40@1x.png"
},
{
"idiom":"ipad",
"size":"40x40",
"scale":"2x",
"filename":"Icon-App-40x40@2x.png"
},
{
"idiom":"ipad",
"size":"76x76",
"scale":"1x",
"filename":"Icon-App-76x76@1x.png"
},
{
"idiom":"ipad",
"size":"76x76",
"scale":"2x",
"filename":"Icon-App-76x76@2x.png"
},
{
"idiom":"ipad",
"size":"83.5x83.5",
"scale":"2x",
"filename":"Icon-App-83.5x83.5@2x.png"
},
{
"size" : "1024x1024",
"idiom" : "ios-marketing",
"scale" : "1x",
"filename" : "ItunesArtwork@2x.png"
}
],
"info":{
"version":1,
"author":"easyappicon"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 564 B

After

Width:  |  Height:  |  Size: 998 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 4.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.0 KiB

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

After

Width:  |  Height:  |  Size: 4.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 7.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 7.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.6 KiB

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.6 KiB

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.7 KiB

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

After

Width:  |  Height:  |  Size: 6.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.2 KiB

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.5 KiB

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 181 KiB

@ -244,6 +244,7 @@ const GET_PRESCRIPTION_REPORT_ENH =
'Services/Patients.svc/REST/GetPrescriptionReport_enh';
const GET_PHARMACY_LIST = "Services/Patients.svc/REST/GetPharmcyList";
var selectedPatientType = 1;
//*********change value to decode json from Dropdown ************

@ -824,5 +824,8 @@ const Map<String, Map<String, String>> localizedValues = {
"accepted": {"en": "Accepted", "ar": "وافقت"},
"cancelled": {"en": "Cancelled", "ar": "ألغيت"},
"unReplied": {"en": "UnReplied", "ar": "لم يتم الرد"},
"replied": {"en": "Replied", "ar": " تم الرد"},
"replied": {"en": "Replied", "ar": " تم الرد"},"typeHereToReply": {
"en": "Type here to reply",
"ar": "اكتب هنا للرد"
},
};

@ -43,6 +43,7 @@ class InsuranceApprovalModel {
int approvalNo;
String approvalStatusDescption;
int unUsedCount;
String doctorImage;
//String companyName;
String expiryDate;
@ -75,7 +76,8 @@ class InsuranceApprovalModel {
this.expiryDate,
this.rceiptOn,
this.approvalDetails,
this.appointmentNo});
this.appointmentNo,
this.doctorImage});
InsuranceApprovalDetails x = InsuranceApprovalDetails();
@ -104,6 +106,7 @@ class InsuranceApprovalModel {
eXuldAPPNO = json['EXuldAPPNO'];
projectID = json['ProjectID'];
doctorName = json['DoctorName'];
doctorImage = json['DoctorImageURL'];
clinicName = json['ClinicName'];
approvalDetails =
InsuranceApprovalDetails.fromJson(json['ApporvalDetails'][0]);
@ -126,6 +129,8 @@ class InsuranceApprovalModel {
data['DeviceTypeID'] = this.deviceTypeID;
data['PatientID'] = this.patientID;
data['TokenID'] = this.tokenID;
data['DoctorImageURL'] = this.doctorImage;
data['PatientTypeID'] = this.patientTypeID;
data['PatientType'] = this.patientType;
if (appointmentNo == null) {

@ -2,7 +2,10 @@ import 'package:doctor_app_flutter/config/config.dart';
import 'package:doctor_app_flutter/core/model/hospitals_model.dart';
import 'package:doctor_app_flutter/core/service/base/base_service.dart';
import 'package:doctor_app_flutter/models/doctor/list_gt_my_patients_question_model.dart';
import 'package:doctor_app_flutter/models/doctor/request_add_referred_doctor_remarks.dart';
import 'package:doctor_app_flutter/models/doctor/request_doctor_reply.dart';
import 'package:doctor_app_flutter/models/patient/my_referral/my_referral_patient_model.dart';
import 'package:doctor_app_flutter/models/patient/request_my_referral_patient_model.dart';
class DoctorReplyService extends BaseService {
@ -11,7 +14,11 @@ class DoctorReplyService extends BaseService {
RequestDoctorReply _requestDoctorReply = RequestDoctorReply();
List<MyReferralPatientModel> _listMyReferralPatientModel = [];
List<MyReferralPatientModel> get listMyReferralPatientModel => _listMyReferralPatientModel;
Future getDoctorReply() async {
hasError = false;
await baseAppClient.post(GT_MY_PATIENT_QUESTION,
onSuccess: (dynamic response, int statusCode) {
_listDoctorWorkingHoursTable.clear();
@ -24,4 +31,32 @@ class DoctorReplyService extends BaseService {
super.error = error;
}, body: _requestDoctorReply.toJson(),);
}
Future replay(
String referredDoctorRemarks, MyReferralPatientModel model) async {
RequestMyReferralPatientModel _requestMyReferralPatient =
RequestMyReferralPatientModel();
RequestAddReferredDoctorRemarks _requestAddReferredDoctorRemarks =
RequestAddReferredDoctorRemarks();
_requestAddReferredDoctorRemarks.admissionNo = model.admissionNo;
_requestAddReferredDoctorRemarks.patientID = model.patientID;
_requestAddReferredDoctorRemarks.referredDoctorRemarks =
referredDoctorRemarks;
_requestAddReferredDoctorRemarks.lineItemNo = model.lineItemNo;
_requestAddReferredDoctorRemarks.referringDoctor = model.referringDoctor;
await baseAppClient.post(
ADD_REFERRED_DOCTOR_REMARKS,
body: _requestAddReferredDoctorRemarks.toJson(),
onSuccess: (dynamic body, int statusCode) {
model.referredDoctorRemarks = referredDoctorRemarks;
listMyReferralPatientModel[listMyReferralPatientModel.indexOf(model)] =
model;
},
onFailure: (String error, int statusCode) {
hasError = true;
super.error = error;
},
);
}
}

@ -1,6 +1,7 @@
import 'package:doctor_app_flutter/core/enum/viewstate.dart';
import 'package:doctor_app_flutter/core/service/doctor_reply_service.dart';
import 'package:doctor_app_flutter/models/doctor/list_gt_my_patients_question_model.dart';
import 'package:doctor_app_flutter/models/patient/my_referral/my_referral_patient_model.dart';
import '../../locator.dart';
import 'base_view_model.dart';
@ -19,4 +20,14 @@ class DoctorReplayViewModel extends BaseViewModel {
} else
setState(ViewState.Idle);
}
Future replay(String referredDoctorRemarks, MyReferralPatientModel model) async {
setState(ViewState.BusyLocal);
await _doctorReplyService.replay(referredDoctorRemarks, model);
if (_doctorReplyService.hasError) {
error = _doctorReplyService.error;
setState(ViewState.ErrorLocal);
} else
setState(ViewState.Idle);
}
}

@ -196,14 +196,14 @@ class _DashboardScreenState extends State<DashboardScreen> {
return Row(
mainAxisSize: MainAxisSize.max,
children: <Widget>[
AppText(
item.clinicName,
fontSize: SizeConfig
.textMultiplier *
2.1,
color: Colors.black,
fontWeight: FontWeight.bold,
),
AppText(item.clinicName,
fontSize: SizeConfig
.textMultiplier *
1.6,
color: Colors.black,
fontWeight: FontWeight.bold,
textAlign:
TextAlign.center),
],
);
}).toList();
@ -1004,7 +1004,7 @@ class _DashboardScreenState extends State<DashboardScreen> {
top: 10, left: 10, right: 0),
child: Icon(
DoctorApp.search,
size: 35,
size: 32,
color: Colors.white,
)),
Container(
@ -1014,6 +1014,7 @@ class _DashboardScreenState extends State<DashboardScreen> {
.searchmedicinepatient,
color: Colors.white,
textAlign: TextAlign.start,
fontSize: 14,
))
],
),
@ -1385,7 +1386,7 @@ class DashboardItem extends StatelessWidget {
height: height != null
? height
: MediaQuery.of(context).orientation == Orientation.portrait
? MediaQuery.of(context).size.height * 0.16
? MediaQuery.of(context).size.height * 0.18
: MediaQuery.of(context).size.height * 0.36,
decoration: BoxDecoration(
color: !hasBorder

@ -0,0 +1,330 @@
import 'package:doctor_app_flutter/config/size_config.dart';
import 'package:doctor_app_flutter/core/viewModel/doctor_replay_view_model.dart';
import 'package:doctor_app_flutter/models/doctor/list_gt_my_patients_question_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/util/translations_delegate_base.dart';
import 'package:doctor_app_flutter/widgets/shared/TextFields.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/card_with_bg_widget.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
import 'package:hexcolor/hexcolor.dart';
class DoctorReplayChat extends StatelessWidget {
final ListGtMyPatientsQuestions reply;
TextEditingController msgController = TextEditingController();
DoctorReplayChat(
{Key key, this.reply,
});
@override
Widget build(BuildContext context) {
return BaseView<DoctorReplayViewModel>(
onModelReady: (model) async {},
builder: (_, model, w) => AppScaffold(
baseViewModel: model,
isShowAppBar: false,
body: Container(
color: Color(0XFFF2F2F2),
child: Stack(
children: [
Container(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Container(
padding: EdgeInsets.only(
left: 0, right: 5, bottom: 5, top: 5),
decoration: BoxDecoration(
color: Colors.white,
),
height: 150,
child: Container(
padding: EdgeInsets.only(
left: 10, right: 10, bottom: 10),
margin: EdgeInsets.only(top: 50),
child: Column(
children: [
Row(
mainAxisAlignment:
MainAxisAlignment.spaceBetween,
children: [
RichText(
text: TextSpan(
style: TextStyle(
fontSize: 1.6 *
SizeConfig.textMultiplier,
color: Colors.black),
children: <TextSpan>[
new TextSpan(
text: reply.patientName
.toString(),
style: TextStyle(
color: Color(0xFF2B353E),
fontWeight: FontWeight.bold,
fontFamily: 'Poppins',
fontSize: 20)),
],
),
),
InkWell(
onTap: () {
Navigator.pop(context);
},
child: Icon(FontAwesomeIcons.times,
size: 30,
color: Color(0xFF2B353E)))
],
),
Row(
mainAxisAlignment:
MainAxisAlignment.spaceBetween,
children: [
InkWell(
onTap: () {
// TODO: move to doctor profile
},
child: RichText(
text: TextSpan(
style: TextStyle(
fontSize: 1.6 *
SizeConfig.textMultiplier,
color: Colors.black),
children: <TextSpan>[
new TextSpan(
text:
'Tap here to view patient profile'
.toString(),
style: TextStyle(
fontFamily: 'Poppins',
fontSize: 12)),
],
),
),
),
],
),
],
),
),
),
Expanded(
child: Padding(
padding: const EdgeInsets.all(16.0),
child: SingleChildScrollView(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
SizedBox(height: 30,),
Container(
// color: Color(0xFF2B353E),
width: MediaQuery.of(context).size.width * 0.8,
padding: EdgeInsets.all(10),
decoration: BoxDecoration(
color: Color(0xFF2B353E),
borderRadius: BorderRadius.all(
Radius.circular(10.0),
),
border: Border.all(
color: HexColor('#707070') ,
width: 0.30),
),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Container(
margin: EdgeInsets.only(top: 5),
width: 60,
height: 60,
child: Image.asset(
1 == 1
? 'assets/images/male_avatar.png'
: 'assets/images/female_avatar.png',
fit: BoxFit.cover,
),
),
Column(
children: [
AppText(
"07 Jan 2021",
fontSize: 2.5 * SizeConfig.textMultiplier,
fontFamily: 'Poppins',
color: Colors.white,
// fontSize: 18
),
AppText(
"07:00 PM",
fontSize: 2.5 * SizeConfig.textMultiplier,
fontFamily: 'Poppins',
color: Colors.white,
// fontSize: 18
),
],
),
],
),
SizedBox(
height: 10,
),
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Column(
children: [
Padding(
padding: const EdgeInsets.all(8.0),
child: Container(
width: MediaQuery.of(context).size.width * 0.7,
child: AppText(
"This procedure should be taken only when the patient is below 99o",
fontSize: 15,
fontFamily: 'Poppins',
color: Colors.white,
// fontSize: 18
),
),
),
],
),
],
),
],
),
),
SizedBox(height: 30,),
Row(
mainAxisAlignment: MainAxisAlignment.end,
children: [
Container(
// color: Color(0xFF2B353E),
width: MediaQuery.of(context).size.width * 0.8,
padding: EdgeInsets.all(5),
decoration: BoxDecoration(
color: Colors.white,// Color(0xFF2B353E),
borderRadius: BorderRadius.all(
Radius.circular(10.0),
),
border: Border.all(
color: HexColor('#707070') ,
width: 0.30),
),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Container(
margin: EdgeInsets.only(top: 5),
width: 60,
height: 60,
child: Image.asset(
1 == 1
? 'assets/images/male_avatar.png'
: 'assets/images/female_avatar.png',
fit: BoxFit.cover,
),
),
Column(
children: [
AppText(
"07 Jan 2021",
fontSize: 2.5 * SizeConfig.textMultiplier,
fontFamily: 'Poppins',
color: Color(0xFF2B353E),
// fontSize: 18
),
AppText(
"07:00 PM",
fontSize: 2.5 * SizeConfig.textMultiplier,
fontFamily: 'Poppins',
color: Color(0xFF2B353E),
// fontSize: 18
),
],
),
],
),
SizedBox(
height: 10,
),
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Column(
children: [
Padding(
padding: const EdgeInsets.all(8.0),
child: Container(
width: MediaQuery.of(context).size.width * 0.7,
child: AppText(
"This procedure should be taken only when the patient is below 99o",
fontSize: 15,
fontFamily: 'Poppins',
color: Color(0xFF2B353E),
// fontSize: 18
),
),
),
],
),
],
),
],
),
),
],
),
],
),
),
),
)
],
),
),
],
),
),
bottomSheet: Container(
child:TextFields(
hasLabelText: msgController.text != ''
? true
: false,
showLabelText: false,
hintText: TranslationBase
.of(context)
.typeHereToReply,
fontSize: 13.5,
suffixIcon: FontAwesomeIcons.arrowRight,
suffixIconColor: Colors.green,
// hintColor: Colors.black,
fontWeight: FontWeight.w600,
maxLines: 50,
minLines: 3,
controller: msgController,
validator: (value) {
if (value == null || value == "")
return TranslationBase.of(context)
.emptyMessage;
else
return null;
}),
height: MediaQuery.of(context).size.height * 0.1,
),
));
}
}

@ -1,5 +1,6 @@
import 'package:doctor_app_flutter/core/viewModel/doctor_replay_view_model.dart';
import 'package:doctor_app_flutter/screens/base/base_view.dart';
import 'package:doctor_app_flutter/screens/doctor/doctor_repaly_chat.dart';
import 'package:doctor_app_flutter/util/translations_delegate_base.dart';
import 'package:doctor_app_flutter/widgets/doctor/doctor_reply_widget.dart';
import 'package:doctor_app_flutter/widgets/shared/app_scaffold_widget.dart';
@ -18,7 +19,9 @@ class DoctorReplyScreen extends StatelessWidget {
@override
Widget build(BuildContext context) {
return BaseView<DoctorReplayViewModel>(
onModelReady: (model) => model.getDoctorReply(),
onModelReady: (model) {
model.getDoctorReply();
},
builder: (_, model, w) => AppScaffold(
baseViewModel: model,
appBarTitle: TranslationBase.of(context).replay2,
@ -35,7 +38,15 @@ class DoctorReplyScreen extends StatelessWidget {
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children:
model.listDoctorWorkingHoursTable.map((reply) {
return DoctorReplyWidget(reply: reply);
return InkWell(
onTap: () {
Navigator.push(
context,
MaterialPageRoute(
builder: (BuildContext context) =>
DoctorReplayChat(reply: reply)));
},
child: DoctorReplyWidget(reply: reply));
}).toList(),
)
],

File diff suppressed because it is too large Load Diff

@ -0,0 +1,329 @@
import 'package:doctor_app_flutter/config/size_config.dart';
import 'package:doctor_app_flutter/core/viewModel/InsuranceViewModel.dart';
import 'package:doctor_app_flutter/core/viewModel/project_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/util/date-utils.dart';
import 'package:doctor_app_flutter/util/translations_delegate_base.dart';
import 'package:doctor_app_flutter/widgets/patients/profile/patient-profile-header-new-design-app-bar.dart';
import 'package:doctor_app_flutter/widgets/shared/Text.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:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
class InsuranceApprovalsDetails extends StatefulWidget {
PatiantInformtion patient;
int indexInsurance;
InsuranceApprovalsDetails({this.patient, this.indexInsurance});
@override
_InsuranceApprovalsDetailsState createState() =>
_InsuranceApprovalsDetailsState(
patient: patient, indexInsurance: indexInsurance);
}
class _InsuranceApprovalsDetailsState extends State<InsuranceApprovalsDetails> {
PatiantInformtion patient;
int indexInsurance;
_InsuranceApprovalsDetailsState({this.patient, this.indexInsurance});
@override
Widget build(BuildContext context) {
ProjectViewModel projectViewModel = Provider.of(context);
final routeArgs = ModalRoute.of(context).settings.arguments as Map;
return BaseView<InsuranceViewModel>(
onModelReady: patient.appointmentNo != null
? (model) => model.getInsuranceApproval(patient,
appointmentNo: patient.appointmentNo)
: (model) => model.getInsuranceApproval(patient),
builder: (BuildContext context, InsuranceViewModel model, Widget child) =>
AppScaffold(
isShowAppBar: true,
baseViewModel: model,
appBar: PatientProfileHeaderNewDesignAppBar(
patient, patient.patientType.toString(), patient.arrivedOn),
body: SingleChildScrollView(
child: Container(
child: Column(
children: [
Padding(
padding: const EdgeInsets.all(8.0),
child: Column(
children: [
Row(
children: [
AppText(
'Insurance',
fontSize: 15.0,
fontWeight: FontWeight.w600,
fontFamily: 'Poppins',
),
],
),
Row(
children: [
AppText(
'Approvals',
fontSize: 30.0,
fontWeight: FontWeight.w700,
),
],
),
],
),
),
Container(
margin: EdgeInsets.all(10),
decoration: BoxDecoration(
border: Border.all(
width: 0.5,
color: Colors.white,
),
borderRadius: BorderRadius.all(
Radius.circular(15.0),
),
color: Colors.white),
child: Padding(
padding: const EdgeInsets.all(8.0),
child: Column(
children: [
Row(
children: [
Texts(
model.insuranceApproval[indexInsurance]
.approvalDetails.status,
color:
model.insuranceApproval[indexInsurance]
.approvalDetails.status ==
"Approved"
? Color(0xff359846)
: Color(0xffD02127),
),
],
),
Row(
children: [
Texts(
model.insuranceApproval[indexInsurance]
.doctorName
.toUpperCase(),
color: Colors.black,
fontSize: 18,
fontWeight: FontWeight.bold,
)
],
),
Padding(
padding:
const EdgeInsets.symmetric(horizontal: 8.0),
child: Row(
children: [
Column(
children: [
Container(
height: 85.0,
width: 85.0,
child: CircleAvatar(
radius:
SizeConfig.imageSizeMultiplier *
12,
// radius: (52)
child: ClipRRect(
borderRadius:
BorderRadius.circular(50),
child: Image.network(
model
.insuranceApproval[
indexInsurance]
.doctorImage,
fit: BoxFit.fill,
width: 700,
),
),
backgroundColor: Colors.transparent,
),
),
],
),
Padding(
padding: const EdgeInsets.symmetric(
horizontal: 8.0),
child: Column(
crossAxisAlignment:
CrossAxisAlignment.start,
//mainAxisAlignment: MainAxisAlignment.center,
children: [
SizedBox(
height: 25.0,
),
Row(
children: [
Texts(
'Clinic: ',
color: Colors.grey[500],
),
Texts(
model
.insuranceApproval[
indexInsurance]
.clinicName,
)
],
),
Row(
children: <Widget>[
Texts(
'Approval No: ',
color: Colors.grey[500],
),
Texts(
model
.insuranceApproval[
indexInsurance]
.approvalNo
.toString(),
)
],
),
Row(
children: <Widget>[
Texts(
'Unused Count:',
color: Colors.grey[500],
),
Texts(model
.insuranceApproval[
indexInsurance]
.unUsedCount
.toString())
],
),
Row(
children: <Widget>[
Texts(
'Company Name :',
color: Colors.grey[500],
),
Texts('Sample')
],
),
SizedBox(
height: 25.0,
),
Row(
children: [
Texts(
'Receipt on :',
color: Colors.grey[500],
),
Texts(
'${DateUtils.getDayMonthYearDateFormatted(DateUtils.getDateTimeFromServerFormat(model.insuranceApproval[indexInsurance].rceiptOn), isArabic: projectViewModel.isArabic)}',
color: Colors.black,
fontWeight: FontWeight.w600,
fontSize: 14,
),
],
),
Row(
children: [
Texts(
'Exp on:',
color: Colors.grey[500],
),
Texts(
'${DateUtils.getDayMonthYearDateFormatted(DateUtils.getDateTimeFromServerFormat(model.insuranceApproval[indexInsurance].expiryDate), isArabic: projectViewModel.isArabic)}',
color: Colors.black,
fontWeight: FontWeight.w600,
fontSize: 14,
),
],
),
],
),
),
],
),
),
SizedBox(
height: 20.0,
),
Container(
child: Column(
children: [
Row(
mainAxisAlignment:
MainAxisAlignment.spaceAround,
children: [
Texts('Procedure'),
Texts('Status'),
Texts('Usage Status')
],
),
Divider(
color: Colors.black45,
),
Row(
mainAxisAlignment:
MainAxisAlignment.spaceAround,
children: [
Container(
height: MediaQuery.of(context)
.size
.height *
0.2, //130.0,
width: MediaQuery.of(context)
.size
.width *
0.33,
child: Texts(model
.insuranceApproval[indexInsurance]
.approvalDetails
.procedureName),
),
Container(
height: MediaQuery.of(context)
.size
.height *
0.2,
width: MediaQuery.of(context)
.size
.width *
0.33,
child: Texts(model
.insuranceApproval[indexInsurance]
.approvalDetails
.status),
),
Container(
height: MediaQuery.of(context)
.size
.height *
0.2,
width: MediaQuery.of(context)
.size
.width *
0.25,
child: Texts(model
.insuranceApproval[indexInsurance]
.approvalDetails
.isInvoicedDesc),
),
],
)
],
),
),
],
),
),
),
],
),
),
)),
);
}
}

@ -48,7 +48,7 @@ class RadiologyDetailsPage extends StatelessWidget {
crossAxisAlignment: CrossAxisAlignment.center,
children: <Widget>[
Container(
margin: EdgeInsets.all(8),
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.circular(12),
@ -62,17 +62,19 @@ class RadiologyDetailsPage extends StatelessWidget {
Padding(
padding: const EdgeInsets.all(8.0),
child: Texts(
'${finalRadiology.reportData}',
'${finalRadiology.reportData.trim()}',
textAlign: TextAlign.start,
fontSize: 17,
color: Colors.grey,
),
),
SizedBox(height: 25,),
if(model.radImageURL.isNotEmpty)
Center(
child: Container(
width: MediaQuery.of(context).size.width * 0.8,
child: Button(
color: Colors.red,
onTap: () {
launch(model.radImageURL);

@ -1204,6 +1204,7 @@ class TranslationBase {
String get cancelled => localizedValues['cancelled'][locale.languageCode];
String get unReplied => localizedValues['unReplied'][locale.languageCode];
String get replied => localizedValues['replied'][locale.languageCode];
String get typeHereToReply => localizedValues['typeHereToReply'][locale.languageCode];
}
class TranslationBaseDelegate extends LocalizationsDelegate<TranslationBase> {

@ -78,10 +78,18 @@ class MyScheduleWidget extends StatelessWidget {
SizedBox(
height: 5,
),
AppText(
work.from + ' - ' + work.to,
fontSize: 2.0 * SizeConfig.textMultiplier,
fontWeight: FontWeight.w300,
Container(
width: MediaQuery.of(context).size.width*0.55,
child: Expanded(
child: Padding(
padding: const EdgeInsets.all(8.0),
child: AppText(
work.from + ' - ' + work.to,
fontSize: 15,
fontWeight: FontWeight.w300,
),
),
),
)
],
),

@ -369,7 +369,7 @@ class PatientProfileHeaderWhitAppointmentAppBar extends StatelessWidget with Pre
'${TranslationBase.of(context).dr}$doctorName',
color: Colors.black,
fontWeight: FontWeight.w600,
fontSize: 14,
fontSize: 12,
),
if (orderNo != null && !isPrescriptions)
Row(
@ -377,10 +377,10 @@ class PatientProfileHeaderWhitAppointmentAppBar extends StatelessWidget with Pre
Texts(
'Order No: ',
color: Colors.grey[800],
fontSize: 14
fontSize: 12
),
Texts(
orderNo ?? '',fontSize: 14
orderNo ?? '',fontSize: 12
)
],
),
@ -390,11 +390,11 @@ class PatientProfileHeaderWhitAppointmentAppBar extends StatelessWidget with Pre
Texts(
'Invoice: ',
color: Colors.grey[800],
fontSize: 14
fontSize: 12
),
Texts(
invoiceNO,
fontSize: 14
fontSize: 12
)
],
),
@ -404,11 +404,11 @@ class PatientProfileHeaderWhitAppointmentAppBar extends StatelessWidget with Pre
Texts(
'Branch: ',
color: Colors.grey[800],
fontSize: 14
fontSize: 12
),
Texts(
branch?? '',
fontSize: 14
fontSize: 12
)
],
),
@ -418,11 +418,11 @@ class PatientProfileHeaderWhitAppointmentAppBar extends StatelessWidget with Pre
Texts(
'Clinic: ',
color: Colors.grey[800],
fontSize: 14
fontSize: 12
),
Texts(
clinic?? '',
fontSize: 14
fontSize: 12
)
],
),
@ -432,7 +432,7 @@ class PatientProfileHeaderWhitAppointmentAppBar extends StatelessWidget with Pre
child: Texts(
!isPrescriptions? 'Result Date: ': 'Prescriptions Date ',
color: Colors.grey[800],
fontSize: 14,
fontSize: 12,
),
),
Texts(
@ -495,5 +495,5 @@ class PatientProfileHeaderWhitAppointmentAppBar extends StatelessWidget with Pre
}
@override
Size get preferredSize => Size(double.maxFinite,280);
Size get preferredSize => Size(double.maxFinite,290);
}

@ -134,16 +134,6 @@ class ProfileMedicalInfoWidgetSearch extends StatelessWidget {
nameLine1: TranslationBase.of(context).progress,
nameLine2: TranslationBase.of(context).note,
icon: 'patient/Progress_notes.png'),
if (int.parse(patientType) == 7 || int.parse(patientType) == 6)
PatientProfileButton(
key: key,
patient: patient,
patientType: patientType,
arrivalType: arrivalType,
route: ORDER_PROCEDURE,
nameLine1: TranslationBase.of(context).orders,
nameLine2: TranslationBase.of(context).procedures,
icon: 'patient/Order_Procedures.png'),
],
),
);

@ -105,9 +105,11 @@ class DoctorCard extends StatelessWidget {
Texts(
'order No:',
color: Colors.grey[500],
fontSize: 14,
),
Texts(
orderNo ?? '',
fontSize: 14,
)
],
),
@ -116,10 +118,12 @@ class DoctorCard extends StatelessWidget {
children: <Widget>[
Texts(
'Invoice:',
fontSize: 14,
color: Colors.grey[500],
),
Texts(
invoiceNO,
fontSize: 14,
)
],
),
@ -129,9 +133,11 @@ class DoctorCard extends StatelessWidget {
Texts(
'Clinic: ',
color: Colors.grey[500],
fontSize: 14,
),
Texts(
clinic,
fontSize: 14,
)
],
),
@ -140,10 +146,12 @@ class DoctorCard extends StatelessWidget {
children: <Widget>[
Texts(
'Branch: ',
fontSize: 14,
color: Colors.grey[500],
),
Texts(
branch,
fontSize: 14,
)
],
)

@ -0,0 +1,182 @@
import 'package:doctor_app_flutter/core/viewModel/project_view_model.dart';
import 'package:doctor_app_flutter/util/date-utils.dart';
import 'package:doctor_app_flutter/util/translations_delegate_base.dart';
import 'package:doctor_app_flutter/widgets/patients/profile/large_avatar.dart';
import 'package:eva_icons_flutter/eva_icons_flutter.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
import 'package:provider/provider.dart';
import 'StarRating.dart';
import 'Text.dart';
class DoctorCardInsurance extends StatelessWidget {
final String doctorName;
final String branch;
final DateTime appointmentDate;
final String profileUrl;
final String invoiceNO;
final String orderNo;
final Function onTap;
final bool isPrescriptions;
final String clinic;
final String approvalStatus;
final String patientOut;
DoctorCardInsurance(
{this.doctorName,
this.branch,
this.profileUrl,
this.invoiceNO,
this.onTap,
this.appointmentDate,
this.orderNo,
this.isPrescriptions = false,
this.clinic,
this.approvalStatus,
this.patientOut});
@override
Widget build(BuildContext context) {
ProjectViewModel projectViewModel = Provider.of(context);
return Container(
margin: EdgeInsets.all(10),
decoration: BoxDecoration(
border: Border(
left: BorderSide(
color: approvalStatus == "Approved"
? Color(0xff359846)
: Color(0xffD02127),
width: 3.5),
top: BorderSide(color: Colors.white, width: 0.5),
bottom: BorderSide(color: Colors.white, width: 0.5),
right: BorderSide(color: Colors.white, width: 0.5),
),
color: Colors.white),
child: Padding(
padding: const EdgeInsets.all(15.0),
child: InkWell(
onTap: onTap,
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Texts(
"$approvalStatus",
color: approvalStatus == "Approved"
? Color(0xff359846)
: Color(0xffD02127),
),
Container(
decoration: BoxDecoration(
borderRadius: BorderRadius.all(
Radius.circular(25.0),
),
color: Color(0xff2E303A)),
child: Padding(
padding: const EdgeInsets.all(5.0),
child: Texts(
'$patientOut',
color: Colors.white,
fontSize: 15.0,
),
),
)
],
),
Row(
children: [
Expanded(
child: Texts(
doctorName,
bold: true,
)),
],
),
Row(
crossAxisAlignment: CrossAxisAlignment.end,
children: <Widget>[
Container(
child: LargeAvatar(
name: doctorName,
url: profileUrl,
),
width: 55,
height: 55,
),
Expanded(
flex: 4,
child: Container(
margin: EdgeInsets.all(10),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
if (orderNo != null && !isPrescriptions)
Row(
children: <Widget>[
Texts(
'order No:',
color: Colors.grey[500],
),
Texts(
orderNo ?? '',
)
],
),
if (invoiceNO != null && !isPrescriptions)
Row(
children: <Widget>[
Texts(
'Invoice:',
color: Colors.grey[500],
),
Texts(
invoiceNO,
)
],
),
if (isPrescriptions)
Row(
children: <Widget>[
Texts(
'Clinic: ',
color: Colors.grey[500],
),
Expanded(
child: Texts(
clinic,
),
)
],
),
if (branch != null)
Row(
children: <Widget>[
Texts(
'Approval No: ',
color: Colors.grey[500],
),
Texts(
branch,
)
],
)
]),
),
),
Icon(
EvaIcons.eye,
size: 38.0,
)
],
),
],
),
),
),
);
}
}

@ -35,13 +35,13 @@ class _DrawerItemState extends State<DrawerItem> {
color: widget.color ?? Colors.black87,
size: SizeConfig.imageSizeMultiplier * 5,
),
Column(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisAlignment: MainAxisAlignment.start,
children: <Widget>[
Container(
width: MediaQuery.of(context).size.width *0.45,
child: Expanded(
Expanded(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisAlignment: MainAxisAlignment.start,
children: <Widget>[
Container(
width: MediaQuery.of(context).size.width *0.45,
child: AppText(
widget.title,
marginLeft: 5,
@ -52,15 +52,15 @@ class _DrawerItemState extends State<DrawerItem> {
fontWeight: FontWeight.bold,
),
),
),
AppText(
widget.subTitle,
visibility: !widget.subTitle.isNullOrEmpty(),
color: widget.color ?? Colors.black,
marginLeft: 5,
fontSize: SizeConfig.textMultiplier * 2.5,
),
],
AppText(
widget.subTitle,
visibility: !widget.subTitle.isNullOrEmpty(),
color: widget.color ?? Colors.black,
marginLeft: 5,
fontSize: SizeConfig.textMultiplier * 2.5,
),
],
),
),
],
));

Loading…
Cancel
Save