referral finalised

merge-update-with-lab-changes
haroon amjad 5 years ago
parent 82e23efd32
commit 65fbd7af8e

@ -1163,5 +1163,20 @@ const Map localizedValues = {
"en": "The referral request has been submitted successfully, you will be contacted ASAP to complete the process. Referral request no is ",
"ar": " تم إرسال طلب الإحالة بنجاح ، وسيتم الاتصال بك في أسرع وقت ممكن لإكمال العملية. رقم طلب الإحالة"
},
"referralStatus": {
"en": "Referral Status",
"ar": "حالة الإحالة"
},
"referralDate": {
"en": "Referral Date",
"ar": "تاريخ الإحالة"
},
"patientName": {
"en": "Patient Name",
"ar": "اسم المريض"
},
"referralNumber": {
"en": "Referral Number",
"ar": "رقم الإحالة"
}
};

@ -0,0 +1,128 @@
class GetEReferralResponseModel {
dynamic acceptedBrachCode;
dynamic acceptedBranchName;
dynamic acceptedBranchNameAr;
Channel channel;
dynamic identityCardAttachment;
String identityNumber;
dynamic insuranceCardAttachment;
bool isInsuredPatient;
String otherRelationship;
String patientContactNo;
int patientId;
String patientName;
int preferredBranchCode;
String preferredBranchName;
String referralDate;
int referralNumber;
Channel relationshipType;
String requesterContactNo;
String requesterName;
String status;
String statusAr;
GetEReferralResponseModel(
{this.acceptedBrachCode,
this.acceptedBranchName,
this.acceptedBranchNameAr,
this.channel,
this.identityCardAttachment,
this.identityNumber,
this.insuranceCardAttachment,
this.isInsuredPatient,
this.otherRelationship,
this.patientContactNo,
this.patientId,
this.patientName,
this.preferredBranchCode,
this.preferredBranchName,
this.referralDate,
this.referralNumber,
this.relationshipType,
this.requesterContactNo,
this.requesterName,
this.status,
this.statusAr});
GetEReferralResponseModel.fromJson(Map<String, dynamic> json) {
acceptedBrachCode = json['AcceptedBrachCode'];
acceptedBranchName = json['AcceptedBranchName'];
acceptedBranchNameAr = json['AcceptedBranchNameAr'];
channel =
json['Channel'] != null ? new Channel.fromJson(json['Channel']) : null;
identityCardAttachment = json['IdentityCardAttachment'];
identityNumber = json['IdentityNumber'];
insuranceCardAttachment = json['InsuranceCardAttachment'];
isInsuredPatient = json['IsInsuredPatient'];
otherRelationship = json['OtherRelationship'];
patientContactNo = json['PatientContactNo'];
patientId = json['PatientId'];
patientName = json['PatientName'];
preferredBranchCode = json['PreferredBranchCode'];
preferredBranchName = json['PreferredBranchName'];
referralDate = json['ReferralDate'];
referralNumber = json['ReferralNumber'];
relationshipType = json['RelationshipType'] != null
? new Channel.fromJson(json['RelationshipType'])
: null;
requesterContactNo = json['RequesterContactNo'];
requesterName = json['RequesterName'];
status = json['Status'];
statusAr = json['StatusAr'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['AcceptedBrachCode'] = this.acceptedBrachCode;
data['AcceptedBranchName'] = this.acceptedBranchName;
data['AcceptedBranchNameAr'] = this.acceptedBranchNameAr;
if (this.channel != null) {
data['Channel'] = this.channel.toJson();
}
data['IdentityCardAttachment'] = this.identityCardAttachment;
data['IdentityNumber'] = this.identityNumber;
data['InsuranceCardAttachment'] = this.insuranceCardAttachment;
data['IsInsuredPatient'] = this.isInsuredPatient;
data['OtherRelationship'] = this.otherRelationship;
data['PatientContactNo'] = this.patientContactNo;
data['PatientId'] = this.patientId;
data['PatientName'] = this.patientName;
data['PreferredBranchCode'] = this.preferredBranchCode;
data['PreferredBranchName'] = this.preferredBranchName;
data['ReferralDate'] = this.referralDate;
data['ReferralNumber'] = this.referralNumber;
if (this.relationshipType != null) {
data['RelationshipType'] = this.relationshipType.toJson();
}
data['RequesterContactNo'] = this.requesterContactNo;
data['RequesterName'] = this.requesterName;
data['Status'] = this.status;
data['StatusAr'] = this.statusAr;
return data;
}
}
class Channel {
int iD;
String text;
String textAr;
String textEn;
Channel({this.iD, this.text, this.textAr, this.textEn});
Channel.fromJson(Map<String, dynamic> json) {
iD = json['ID'];
text = json['Text'];
textAr = json['Text_Ar'];
textEn = json['Text_En'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['ID'] = this.iD;
data['Text'] = this.text;
data['Text_Ar'] = this.textAr;
data['Text_En'] = this.textEn;
return data;
}
}

@ -122,9 +122,7 @@ class EReferralService extends BaseService {
Future getEReferrals(
SearchEReferralRequestModel searchEReferralRequestModel) async {
hasError = false;
dynamic localRes;
await baseAppClient.post(GET_E_REFERRALS,
onSuccess: (dynamic response, int statusCode) {
print("EEEEEE");
@ -136,4 +134,22 @@ class EReferralService extends BaseService {
}, body: searchEReferralRequestModel.toJson());
return Future.value(localRes);
}
Future getEReferralsIfLogin(String mobileNo) async {
hasError = false;
dynamic localRes;
Map<String, dynamic> request = {};
request['PatientMobileNumber'] = mobileNo;
await baseAppClient.post(GET_E_REFERRALS,
onSuccess: (dynamic response, int statusCode) {
print("EEEEEE");
_allReferral.clear();
localRes = response;
}, onFailure: (String error, int statusCode) {
hasError = true;
super.error = error;
}, body: request);
return Future.value(localRes);
}
}

@ -107,14 +107,20 @@ class EReferralViewModel extends BaseViewModel {
return Future.value(localRes);
}
getEReferrals(SearchEReferralRequestModel searchEReferralRequestModel) async {
Future getEReferrals(SearchEReferralRequestModel searchEReferralRequestModel) async {
setState(ViewState.BusyLocal);
await _eReferralService.getEReferrals(searchEReferralRequestModel);
dynamic localRes;
await _eReferralService.getEReferrals(searchEReferralRequestModel).then((response) {
localRes = response;
});
if (_eReferralService.hasError) {
error = _eReferralService.error;
setState(ViewState.ErrorLocal);
} else {
setState(ViewState.Idle);
}
return Future.value(localRes);
}
}

@ -0,0 +1,100 @@
import 'package:diplomaticquarterapp/core/model/AlHabibMedicalService/EReferral/get_ereferral_response_model.dart';
import 'package:diplomaticquarterapp/uitl/date_uitl.dart';
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
import 'package:flutter/material.dart';
class ReferralDetails extends StatefulWidget {
GetEReferralResponseModel getEReferralResponseModel;
ReferralDetails({@required this.getEReferralResponseModel});
@override
_ReferralDetailsState createState() => _ReferralDetailsState();
}
class _ReferralDetailsState extends State<ReferralDetails> {
@override
Widget build(BuildContext context) {
return AppScaffold(
isShowDecPage: false,
isShowAppBar: true,
appBarTitle: "Referral Details",
body: Container(
margin: EdgeInsets.only(top: 20.0, left: 20.0, right: 20.0),
child: Table(
border: TableBorder.all(color: Colors.grey[600]),
children: [
TableRow(children: [
TableCell(
child: _getNormalText(
TranslationBase.of(context).referralStatus)),
TableCell(
child:
_getNormalText(widget.getEReferralResponseModel.status)),
]),
TableRow(children: [
TableCell(
child:
_getNormalText(TranslationBase.of(context).patientName)),
TableCell(
child: _getNormalText(
widget.getEReferralResponseModel.patientName)),
]),
TableRow(children: [
TableCell(
child: _getNormalText(
TranslationBase.of(context).referralNumber)),
TableCell(
child: _getNormalText(widget
.getEReferralResponseModel.referralNumber
.toString())),
]),
TableRow(children: [
TableCell(
child: _getNormalText(
TranslationBase.of(context).referralDate)),
TableCell(
child: _getNormalText(DateUtil.getMonthDayYearDateFormatted(
DateUtil.convertStringToDateNoTimeZone(
widget.getEReferralResponseModel.referralDate)))),
]),
TableRow(children: [
TableCell(
child: _getNormalText(TranslationBase.of(context).hospital)),
TableCell(
child: _getNormalText(
widget.getEReferralResponseModel.preferredBranchName)),
]),
],
),
),
);
}
_getNormalText(text) {
return Container(
color: Colors.white,
padding: EdgeInsets.only(top: 12.0, bottom: 12.0),
child: Text(text,
textAlign: TextAlign.center,
style: TextStyle(
fontSize: 14,
fontFamily: 'Open-Sans',
letterSpacing: 0.5,
color: Colors.grey[800])),
);
}
_getHeadingText(text) {
return Container(
padding: EdgeInsets.only(bottom: 10.0),
child: Text(text,
textAlign: TextAlign.center,
style: TextStyle(
fontSize: 26.0,
fontFamily: 'Open-Sans',
letterSpacing: 0.5,
color: Colors.white)));
}
}

@ -1,18 +1,19 @@
import 'package:diplomaticquarterapp/config/shared_pref_kay.dart';
import 'package:diplomaticquarterapp/core/enum/viewstate.dart';
import 'package:diplomaticquarterapp/core/model/AlHabibMedicalService/EReferral/get_ereferral_response_model.dart';
import 'package:diplomaticquarterapp/core/model/AlHabibMedicalService/EReferral/search_criteria_model.dart';
import 'package:diplomaticquarterapp/core/model/AlHabibMedicalService/EReferral/search_e_referral_request_model.dart';
import 'package:diplomaticquarterapp/core/service/AlHabibMedicalService/e_referral_service.dart';
import 'package:diplomaticquarterapp/core/viewModels/all_habib_medical_services/e_referral_view_model.dart';
import 'package:diplomaticquarterapp/models/Authentication/authenticated_user.dart';
import 'package:diplomaticquarterapp/pages/AlHabibMedicalService/E-Referral/referral_details.dart';
import 'package:diplomaticquarterapp/pages/base/base_view.dart';
import 'package:diplomaticquarterapp/pages/medical/balance/new_text_Field.dart';
import 'package:diplomaticquarterapp/uitl/app_shared_preferences.dart';
import 'package:diplomaticquarterapp/uitl/date_uitl.dart';
import 'package:diplomaticquarterapp/widgets/buttons/secondary_button.dart';
import 'package:diplomaticquarterapp/widgets/data_display/text.dart';
import 'package:diplomaticquarterapp/widgets/errors/app_embedded_error.dart';
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
import 'package:diplomaticquarterapp/widgets/others/network_base_view.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
@ -35,6 +36,8 @@ class _SearchForReferralsPageState extends State<SearchForReferralsPage> {
bool _isSubmitted = false;
AuthenticatedUser authUser;
List<GetEReferralResponseModel> allReferrals = List();
dynamic _selectedCountry = {
"name": "Saudi Arabia",
"name_ar": "المملكة العربية السعودية",
@ -130,34 +133,93 @@ class _SearchForReferralsPageState extends State<SearchForReferralsPage> {
? "11"
: _selectedCountry["code"],
),
SizedBox(
height: 12,
),
if ((model.state == ViewState.Idle &&
model.allReferral.length == 0))
Text("There's No Referral To deliver"),
if ((model.state == ViewState.ErrorLocal))
AppEmbeddedError(error: model.error),
NetworkBaseView(
baseViewModel: model,
child: ListView.builder(
shrinkWrap: true,
scrollDirection: Axis.vertical,
itemCount: model.allReferral == null
? 0
: model.allReferral.length < 3
? model.allReferral.length
: 3,
itemBuilder: (BuildContext context, int index) {
return Padding(
padding: EdgeInsets.symmetric(horizontal: 0.2),
child: Container(
child: Texts("TODO add referral info"),
allReferrals.length != 0
? Container(
child: ListView.builder(
shrinkWrap: true,
scrollDirection: Axis.vertical,
physics: ScrollPhysics(),
itemCount: allReferrals.length,
itemBuilder:
(BuildContext context, int index) {
return Container(
child: InkWell(
onTap: () {
navigateToReferralDetails(
allReferrals[index]);
},
child: Card(
margin: EdgeInsets.only(bottom: 10.0),
color: Colors.white,
shape: RoundedRectangleBorder(
borderRadius:
BorderRadius.circular(10),
),
child: Row(
mainAxisAlignment:
MainAxisAlignment.spaceBetween,
children: [
Column(
crossAxisAlignment:
CrossAxisAlignment.start,
children: <Widget>[
Container(
margin: EdgeInsets.all(5.0),
child: Text(
allReferrals[index]
.status,
style: TextStyle(
fontSize: 16.0))),
Container(
margin: EdgeInsets.all(5.0),
child: Text(
allReferrals[index]
.patientName,
style: TextStyle(
fontSize: 16.0,
color: Colors
.grey[600]))),
Container(
margin: EdgeInsets.all(5.0),
child: Text(
allReferrals[index]
.preferredBranchName,
style: TextStyle(
fontSize: 16.0,
color: Colors
.grey[600]))),
Container(
margin: EdgeInsets.all(5.0),
child: Text(
DateUtil.getMonthDayYearDateFormatted(
DateUtil.convertStringToDateNoTimeZone(
allReferrals[
index]
.referralDate)),
style: TextStyle(
fontSize: 16.0,
color: Colors
.grey[600]))),
],
),
Container(
margin: EdgeInsets.only(
right: 20.0, left: 20.0),
child: Icon(Icons.arrow_forward,
size: 20.0,
color: Colors.grey[700]),
),
],
),
),
));
},
),
);
},
),
),
)
: Container(),
SizedBox(
height: 70.0,
)
],
),
),
@ -174,8 +236,10 @@ class _SearchForReferralsPageState extends State<SearchForReferralsPage> {
onTap: () async {
SearchEReferralRequestModel searchEReferralRequestModel =
new SearchEReferralRequestModel(
patientMobileNumber:
_selectedCountry['code'] + _mobileTextController.text,
patientMobileNumber: _selectedCountry['code']
.toString()
.replaceFirst("+", "") +
_mobileTextController.text,
);
if (selectedCriteria.value == 1) {
searchEReferralRequestModel.identificationNo =
@ -186,9 +250,17 @@ class _SearchForReferralsPageState extends State<SearchForReferralsPage> {
int.parse(_searchTextController.text);
searchEReferralRequestModel.identificationNo = '';
}
await model.getEReferrals(searchEReferralRequestModel);
setState(() {
_isSubmitted = true;
await model
.getEReferrals(searchEReferralRequestModel)
.then((response) {
print(response['List_EReferrals']);
allReferrals.clear();
setState(() {
response['List_EReferrals'].forEach((data) {
allReferrals.add(GetEReferralResponseModel.fromJson(data));
_isSubmitted = true;
});
});
});
},
loading: model.state == ViewState.BusyLocal,
@ -198,7 +270,7 @@ class _SearchForReferralsPageState extends State<SearchForReferralsPage> {
)));
}
void getEreferrals() {
void getEreferralsIsLogin() {
EReferralService _eReferralService = locator<EReferralService>();
String mobileNumber;
@ -217,16 +289,15 @@ class _SearchForReferralsPageState extends State<SearchForReferralsPage> {
zipCode = "971";
}
SearchEReferralRequestModel searchEReferralRequestModel =
new SearchEReferralRequestModel(
patientMobileNumber: zipCode + mobileNumber,
identificationNo: authUser.patientIdentificationNo,
referralNumber: 0);
_eReferralService
.getEReferrals(searchEReferralRequestModel)
.getEReferralsIfLogin(zipCode + mobileNumber)
.then((response) {
print(response['List_EReferrals']);
allReferrals.clear();
setState(() {
response['List_EReferrals'].forEach((data) {
allReferrals.add(GetEReferralResponseModel.fromJson(data));
});
});
}).catchError(() {});
}
@ -237,7 +308,7 @@ class _SearchForReferralsPageState extends State<SearchForReferralsPage> {
AuthenticatedUser.fromJson(await sharedPref.getObject(USER_PROFILE));
setState(() {
authUser = data;
getEreferrals();
getEreferralsIsLogin();
});
}
}
@ -256,6 +327,15 @@ class _SearchForReferralsPageState extends State<SearchForReferralsPage> {
);
}
navigateToReferralDetails(
GetEReferralResponseModel getEReferralResponseModel) {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => ReferralDetails(
getEReferralResponseModel: getEReferralResponseModel)));
}
String getCountryName() {
if (_selectedCountry != null)
return _selectedCountry["name"];

@ -19,6 +19,21 @@ class DateUtil {
return DateTime.now();
}
static DateTime convertStringToDateNoTimeZone(String date) {
if (date != null) {
const start = "/Date(";
const end = ")/";
final startIndex = date.indexOf(start);
final endIndex = date.indexOf(end, startIndex + start.length);
return DateTime.fromMillisecondsSinceEpoch(
int.parse(
date.substring(startIndex + start.length, endIndex),
),
);
} else
return DateTime.now();
}
static String convertDateToString(DateTime date) {
const start = "/Date(";
const end = "+0300)/";

@ -899,6 +899,11 @@ String get fileno => localizedValues['fileno'][locale.languageCode];
String get appUpdate => localizedValues['appUpdate'][locale.languageCode];
String get ereferralSaveSuccess => localizedValues['ereferralSaveSuccess'][locale.languageCode];
String get referralStatus => localizedValues['referralStatus'][locale.languageCode];
String get referralDate => localizedValues['referralDate'][locale.languageCode];
String get patientName => localizedValues['patientName'][locale.languageCode];
String get referralNumber => localizedValues['referralNumber'][locale.languageCode];
}

Loading…
Cancel
Save