Merge branch 'development' of https://gitlab.com/Cloud_Solution/diplomatic-quarter into sultan-patientapp
commit
616212828d
@ -0,0 +1,92 @@
|
|||||||
|
class ErPatientShareModel {
|
||||||
|
int cashPrice;
|
||||||
|
int cashPriceTax;
|
||||||
|
int cashPriceWithTax;
|
||||||
|
int companyId;
|
||||||
|
String companyName;
|
||||||
|
int companyShareWithTax;
|
||||||
|
dynamic errCode;
|
||||||
|
int groupID;
|
||||||
|
dynamic insurancePolicyNo;
|
||||||
|
String message;
|
||||||
|
dynamic patientCardID;
|
||||||
|
double patientShare;
|
||||||
|
double patientShareWithTax;
|
||||||
|
double patientTaxAmount;
|
||||||
|
int policyId;
|
||||||
|
String policyName;
|
||||||
|
String procedureName;
|
||||||
|
dynamic setupID;
|
||||||
|
int statusCode;
|
||||||
|
dynamic subPolicyNo;
|
||||||
|
|
||||||
|
ErPatientShareModel(
|
||||||
|
{this.cashPrice,
|
||||||
|
this.cashPriceTax,
|
||||||
|
this.cashPriceWithTax,
|
||||||
|
this.companyId,
|
||||||
|
this.companyName,
|
||||||
|
this.companyShareWithTax,
|
||||||
|
this.errCode,
|
||||||
|
this.groupID,
|
||||||
|
this.insurancePolicyNo,
|
||||||
|
this.message,
|
||||||
|
this.patientCardID,
|
||||||
|
this.patientShare,
|
||||||
|
this.patientShareWithTax,
|
||||||
|
this.patientTaxAmount,
|
||||||
|
this.policyId,
|
||||||
|
this.policyName,
|
||||||
|
this.procedureName,
|
||||||
|
this.setupID,
|
||||||
|
this.statusCode,
|
||||||
|
this.subPolicyNo});
|
||||||
|
|
||||||
|
ErPatientShareModel.fromJson(Map<String, dynamic> json) {
|
||||||
|
cashPrice = json['CashPrice'];
|
||||||
|
cashPriceTax = json['CashPriceTax'];
|
||||||
|
cashPriceWithTax = json['CashPriceWithTax'];
|
||||||
|
companyId = json['CompanyId'];
|
||||||
|
companyName = json['CompanyName'];
|
||||||
|
companyShareWithTax = json['CompanyShareWithTax'];
|
||||||
|
errCode = json['ErrCode'];
|
||||||
|
groupID = json['GroupID'];
|
||||||
|
insurancePolicyNo = json['InsurancePolicyNo'];
|
||||||
|
message = json['Message'];
|
||||||
|
patientCardID = json['PatientCardID'];
|
||||||
|
patientShare = json['PatientShare'];
|
||||||
|
patientShareWithTax = json['PatientShareWithTax'];
|
||||||
|
patientTaxAmount = json['PatientTaxAmount'];
|
||||||
|
policyId = json['PolicyId'];
|
||||||
|
policyName = json['PolicyName'];
|
||||||
|
procedureName = json['ProcedureName'];
|
||||||
|
setupID = json['SetupID'];
|
||||||
|
statusCode = json['StatusCode'];
|
||||||
|
subPolicyNo = json['SubPolicyNo'];
|
||||||
|
}
|
||||||
|
|
||||||
|
Map<String, dynamic> toJson() {
|
||||||
|
final Map<String, dynamic> data = new Map<String, dynamic>();
|
||||||
|
data['CashPrice'] = this.cashPrice;
|
||||||
|
data['CashPriceTax'] = this.cashPriceTax;
|
||||||
|
data['CashPriceWithTax'] = this.cashPriceWithTax;
|
||||||
|
data['CompanyId'] = this.companyId;
|
||||||
|
data['CompanyName'] = this.companyName;
|
||||||
|
data['CompanyShareWithTax'] = this.companyShareWithTax;
|
||||||
|
data['ErrCode'] = this.errCode;
|
||||||
|
data['GroupID'] = this.groupID;
|
||||||
|
data['InsurancePolicyNo'] = this.insurancePolicyNo;
|
||||||
|
data['Message'] = this.message;
|
||||||
|
data['PatientCardID'] = this.patientCardID;
|
||||||
|
data['PatientShare'] = this.patientShare;
|
||||||
|
data['PatientShareWithTax'] = this.patientShareWithTax;
|
||||||
|
data['PatientTaxAmount'] = this.patientTaxAmount;
|
||||||
|
data['PolicyId'] = this.policyId;
|
||||||
|
data['PolicyName'] = this.policyName;
|
||||||
|
data['ProcedureName'] = this.procedureName;
|
||||||
|
data['SetupID'] = this.setupID;
|
||||||
|
data['StatusCode'] = this.statusCode;
|
||||||
|
data['SubPolicyNo'] = this.subPolicyNo;
|
||||||
|
return data;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,147 @@
|
|||||||
|
import 'package:diplomaticquarterapp/core/model/hospitals/hospitals_model.dart';
|
||||||
|
|
||||||
|
class TriageInformationRequest {
|
||||||
|
double versionID;
|
||||||
|
int channel;
|
||||||
|
int languageID;
|
||||||
|
String iPAdress;
|
||||||
|
String sessionID;
|
||||||
|
int patientID;
|
||||||
|
String tokenID;
|
||||||
|
String generalid;
|
||||||
|
int patientOutSA;
|
||||||
|
int patientTypeID;
|
||||||
|
int patientType;
|
||||||
|
int projectID;
|
||||||
|
ERTriageInformation eRTriageInformation;
|
||||||
|
HospitalsModel selectedHospital;
|
||||||
|
TriageInformationRequest(
|
||||||
|
{this.versionID,
|
||||||
|
this.channel,
|
||||||
|
this.languageID,
|
||||||
|
this.iPAdress,
|
||||||
|
this.sessionID,
|
||||||
|
this.patientID,
|
||||||
|
this.tokenID,
|
||||||
|
this.generalid,
|
||||||
|
this.patientOutSA,
|
||||||
|
this.patientTypeID,
|
||||||
|
this.patientType,
|
||||||
|
this.projectID,
|
||||||
|
this.eRTriageInformation,this.selectedHospital});
|
||||||
|
|
||||||
|
TriageInformationRequest.fromJson(Map<String, dynamic> json) {
|
||||||
|
versionID = json['VersionID'];
|
||||||
|
channel = json['Channel'];
|
||||||
|
languageID = json['LanguageID'];
|
||||||
|
iPAdress = json['IPAdress'];
|
||||||
|
sessionID = json['SessionID'];
|
||||||
|
patientID = json['PatientID'];
|
||||||
|
tokenID = json['TokenID'];
|
||||||
|
generalid = json['generalid'];
|
||||||
|
patientOutSA = json['PatientOutSA'];
|
||||||
|
patientTypeID = json['PatientTypeID'];
|
||||||
|
patientType = json['PatientType'];
|
||||||
|
projectID = json['ProjectID'];
|
||||||
|
eRTriageInformation = json['ERTriageInformation'] != null
|
||||||
|
? new ERTriageInformation.fromJson(json['ERTriageInformation'])
|
||||||
|
: null;
|
||||||
|
}
|
||||||
|
|
||||||
|
Map<String, dynamic> toJson() {
|
||||||
|
final Map<String, dynamic> data = new Map<String, dynamic>();
|
||||||
|
data['VersionID'] = this.versionID;
|
||||||
|
data['Channel'] = this.channel;
|
||||||
|
data['LanguageID'] = this.languageID;
|
||||||
|
data['IPAdress'] = this.iPAdress;
|
||||||
|
data['SessionID'] = this.sessionID;
|
||||||
|
data['PatientID'] = this.patientID;
|
||||||
|
data['TokenID'] = this.tokenID;
|
||||||
|
data['generalid'] = this.generalid;
|
||||||
|
data['PatientOutSA'] = this.patientOutSA;
|
||||||
|
data['PatientTypeID'] = this.patientTypeID;
|
||||||
|
data['PatientType'] = this.patientType;
|
||||||
|
data['ProjectID'] = this.projectID;
|
||||||
|
if (this.eRTriageInformation != null) {
|
||||||
|
data['ERTriageInformation'] = this.eRTriageInformation.toJson();
|
||||||
|
}
|
||||||
|
return data;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class ERTriageInformation {
|
||||||
|
String notes;
|
||||||
|
String chiefComplaint;
|
||||||
|
int patientId;
|
||||||
|
int projectId;
|
||||||
|
int riskScore;
|
||||||
|
List<Checklist> checklist;
|
||||||
|
|
||||||
|
ERTriageInformation(
|
||||||
|
{this.notes,
|
||||||
|
this.chiefComplaint,
|
||||||
|
this.patientId,
|
||||||
|
this.projectId,
|
||||||
|
this.riskScore,
|
||||||
|
this.checklist});
|
||||||
|
|
||||||
|
ERTriageInformation.fromJson(Map<String, dynamic> json) {
|
||||||
|
notes = json['Notes'];
|
||||||
|
chiefComplaint = json['ChiefComplaint'];
|
||||||
|
patientId = json['PatientId'];
|
||||||
|
projectId = json['ProjectId'];
|
||||||
|
riskScore = json['RiskScore'];
|
||||||
|
if (json['checklist'] != null) {
|
||||||
|
checklist = new List<Checklist>();
|
||||||
|
json['checklist'].forEach((v) {
|
||||||
|
checklist.add(new Checklist.fromJson(v));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Map<String, dynamic> toJson() {
|
||||||
|
final Map<String, dynamic> data = new Map<String, dynamic>();
|
||||||
|
data['Notes'] = this.notes;
|
||||||
|
data['ChiefComplaint'] = this.chiefComplaint;
|
||||||
|
data['PatientId'] = this.patientId;
|
||||||
|
data['ProjectId'] = this.projectId;
|
||||||
|
data['RiskScore'] = this.riskScore;
|
||||||
|
if (this.checklist != null) {
|
||||||
|
data['checklist'] = this.checklist.map((v) => v.toJson()).toList();
|
||||||
|
}
|
||||||
|
return data;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class Checklist {
|
||||||
|
int isSelected;
|
||||||
|
int parameterCode;
|
||||||
|
int parameterGroup;
|
||||||
|
int parameterType;
|
||||||
|
int score;
|
||||||
|
|
||||||
|
Checklist(
|
||||||
|
{this.isSelected,
|
||||||
|
this.parameterCode,
|
||||||
|
this.parameterGroup,
|
||||||
|
this.parameterType,
|
||||||
|
this.score});
|
||||||
|
|
||||||
|
Checklist.fromJson(Map<String, dynamic> json) {
|
||||||
|
isSelected = json['IsSelected'];
|
||||||
|
parameterCode = json['ParameterCode'];
|
||||||
|
parameterGroup = json['ParameterGroup'];
|
||||||
|
parameterType = json['ParameterType'];
|
||||||
|
score = json['Score'];
|
||||||
|
}
|
||||||
|
|
||||||
|
Map<String, dynamic> toJson() {
|
||||||
|
final Map<String, dynamic> data = new Map<String, dynamic>();
|
||||||
|
data['IsSelected'] = this.isSelected;
|
||||||
|
data['ParameterCode'] = this.parameterCode;
|
||||||
|
data['ParameterGroup'] = this.parameterGroup;
|
||||||
|
data['ParameterType'] = this.parameterType;
|
||||||
|
data['Score'] = this.score;
|
||||||
|
return data;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,52 @@
|
|||||||
|
class TriageQuestionsModel {
|
||||||
|
String adultPoints;
|
||||||
|
String headerSequence;
|
||||||
|
int parameterCode;
|
||||||
|
int parameterGroup;
|
||||||
|
int parameterType;
|
||||||
|
String pediaPoints;
|
||||||
|
String question;
|
||||||
|
String questionN;
|
||||||
|
String scoreGroup;
|
||||||
|
String titles;
|
||||||
|
|
||||||
|
TriageQuestionsModel(
|
||||||
|
{this.adultPoints,
|
||||||
|
this.headerSequence,
|
||||||
|
this.parameterCode,
|
||||||
|
this.parameterGroup,
|
||||||
|
this.parameterType,
|
||||||
|
this.pediaPoints,
|
||||||
|
this.question,
|
||||||
|
this.questionN,
|
||||||
|
this.scoreGroup,
|
||||||
|
this.titles});
|
||||||
|
|
||||||
|
TriageQuestionsModel.fromJson(Map<String, dynamic> json) {
|
||||||
|
adultPoints = json['AdultPoints'];
|
||||||
|
headerSequence = json['HeaderSequence'];
|
||||||
|
parameterCode = json['ParameterCode'];
|
||||||
|
parameterGroup = json['ParameterGroup'];
|
||||||
|
parameterType = json['ParameterType'];
|
||||||
|
pediaPoints = json['PediaPoints'];
|
||||||
|
question = json['Question'];
|
||||||
|
questionN = json['QuestionN'];
|
||||||
|
scoreGroup = json['ScoreGroup'];
|
||||||
|
titles = json['Titles'];
|
||||||
|
}
|
||||||
|
|
||||||
|
Map<String, dynamic> toJson() {
|
||||||
|
final Map<String, dynamic> data = new Map<String, dynamic>();
|
||||||
|
data['AdultPoints'] = this.adultPoints;
|
||||||
|
data['HeaderSequence'] = this.headerSequence;
|
||||||
|
data['ParameterCode'] = this.parameterCode;
|
||||||
|
data['ParameterGroup'] = this.parameterGroup;
|
||||||
|
data['ParameterType'] = this.parameterType;
|
||||||
|
data['PediaPoints'] = this.pediaPoints;
|
||||||
|
data['Question'] = this.question;
|
||||||
|
data['QuestionN'] = this.questionN;
|
||||||
|
data['ScoreGroup'] = this.scoreGroup;
|
||||||
|
data['Titles'] = this.titles;
|
||||||
|
return data;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,96 @@
|
|||||||
|
import 'package:diplomaticquarterapp/config/config.dart';
|
||||||
|
import 'package:diplomaticquarterapp/core/model/er/ErPatientShareModel.dart';
|
||||||
|
import 'package:diplomaticquarterapp/core/model/er/TriageQuestionsModel.dart';
|
||||||
|
import 'package:diplomaticquarterapp/core/service/base_service.dart';
|
||||||
|
|
||||||
|
class EdOnlineServices extends BaseService {
|
||||||
|
List<TriageQuestionsModel> triageQuestionsModelList = List();
|
||||||
|
ErPatientShareModel erPatientShareModel;
|
||||||
|
|
||||||
|
Future getQuestions() async {
|
||||||
|
hasError =false;
|
||||||
|
triageQuestionsModelList.clear();
|
||||||
|
Map<String, dynamic> body = Map();
|
||||||
|
body['ProjectID'] = 15;
|
||||||
|
await baseAppClient.post(ER_GET_VISUAL_TRIAGE_QUESTIONS,
|
||||||
|
onSuccess: (dynamic response, int statusCode) {
|
||||||
|
triageQuestionsModelList.clear();
|
||||||
|
response['ER_TriageQuestionsList'].forEach((questions) {
|
||||||
|
triageQuestionsModelList.add(TriageQuestionsModel.fromJson(questions));
|
||||||
|
});
|
||||||
|
}, onFailure: (String error, int statusCode) {
|
||||||
|
hasError = true;
|
||||||
|
super.error = error;
|
||||||
|
}, body: body);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Future getPatientPaymentInformation({var id}) async {
|
||||||
|
hasError =false;
|
||||||
|
await baseAppClient.post(ER_GetPatientPaymentInformationForERClinic,
|
||||||
|
onSuccess: (dynamic response, int statusCode) {
|
||||||
|
erPatientShareModel =
|
||||||
|
ErPatientShareModel.fromJson(response['ER_PatientShare']);
|
||||||
|
}, onFailure: (String error, int statusCode) {
|
||||||
|
hasError = true;
|
||||||
|
super.error = error;
|
||||||
|
}, body: Map.from({"ProjectID":15,"ClinicID":10}));
|
||||||
|
}
|
||||||
|
|
||||||
|
Future saveQuestionsInformation(
|
||||||
|
{String notes,
|
||||||
|
String chiefComplaint,
|
||||||
|
int projectId,
|
||||||
|
DateTime selectedTime,
|
||||||
|
List<TriageQuestionsModel> selectedQuestions}) async {
|
||||||
|
hasError =false;
|
||||||
|
Map<String, dynamic> body = Map();
|
||||||
|
List<Map> checklist = List();
|
||||||
|
|
||||||
|
body['ProjectID'] = 15;
|
||||||
|
body['ProjectId'] = projectId;
|
||||||
|
int riskScore = 0;
|
||||||
|
|
||||||
|
if (user.age > 14) {
|
||||||
|
selectedQuestions.forEach((element) {
|
||||||
|
int score = int.parse(element.adultPoints);
|
||||||
|
riskScore += score;
|
||||||
|
checklist.add(Map.from({
|
||||||
|
"IsSelected": 1,
|
||||||
|
"ParameterCode": element.parameterCode,
|
||||||
|
"ParameterGroup": element.parameterGroup,
|
||||||
|
"ParameterType": element.parameterType,
|
||||||
|
"Score": score
|
||||||
|
}));
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
selectedQuestions.forEach((element) {
|
||||||
|
int score = int.parse(element.pediaPoints);
|
||||||
|
riskScore += score;
|
||||||
|
checklist.add(Map.from({
|
||||||
|
"IsSelected": 1,
|
||||||
|
"ParameterCode": element.parameterCode,
|
||||||
|
"ParameterGroup": element.parameterGroup,
|
||||||
|
"ParameterType": element.parameterType,
|
||||||
|
"Score": score
|
||||||
|
}));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
body['ERTriageInformation'] = {
|
||||||
|
"Notes": notes,
|
||||||
|
"ChiefComplaint": chiefComplaint,
|
||||||
|
"PatientId": user.patientID,
|
||||||
|
"ProjectId": 15,
|
||||||
|
"RiskScore": riskScore,
|
||||||
|
"checklist": checklist.map((e) => e).toList()
|
||||||
|
};
|
||||||
|
|
||||||
|
await baseAppClient.post(ER_SAVE_TRIAGE_INFORMATION,
|
||||||
|
onSuccess: (dynamic response, int statusCode) {},
|
||||||
|
onFailure: (String error, int statusCode) {
|
||||||
|
hasError = true;
|
||||||
|
super.error = error;
|
||||||
|
}, body: body);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,76 @@
|
|||||||
|
import 'package:diplomaticquarterapp/core/enum/viewstate.dart';
|
||||||
|
import 'package:diplomaticquarterapp/core/model/er/ErPatientShareModel.dart';
|
||||||
|
import 'package:diplomaticquarterapp/core/model/er/TriageQuestionsModel.dart';
|
||||||
|
import 'package:diplomaticquarterapp/core/model/hospitals/hospitals_model.dart';
|
||||||
|
import 'package:diplomaticquarterapp/core/service/er/EdOnlineServices.dart';
|
||||||
|
import 'package:diplomaticquarterapp/core/service/hospital_service.dart';
|
||||||
|
import 'package:diplomaticquarterapp/core/viewModels/base_view_model.dart';
|
||||||
|
|
||||||
|
import '../../../locator.dart';
|
||||||
|
|
||||||
|
class EdOnlineViewModel extends BaseViewModel {
|
||||||
|
HospitalService _hospitalService = locator<HospitalService>();
|
||||||
|
|
||||||
|
EdOnlineServices _edOnlineServices = locator<EdOnlineServices>();
|
||||||
|
|
||||||
|
List<HospitalsModel> get hospitals => _hospitalService.hospitals;
|
||||||
|
|
||||||
|
List<TriageQuestionsModel> get triageQuestionsModelList =>
|
||||||
|
_edOnlineServices.triageQuestionsModelList;
|
||||||
|
|
||||||
|
ErPatientShareModel get erPatientShareModel => _edOnlineServices.erPatientShareModel;
|
||||||
|
|
||||||
|
Future getHospitals() async {
|
||||||
|
if(_hospitalService.hospitals.isEmpty){
|
||||||
|
setState(ViewState.Busy);
|
||||||
|
await _hospitalService.getHospitals();
|
||||||
|
if (_hospitalService.hasError) {
|
||||||
|
error = _hospitalService.error;
|
||||||
|
setState(ViewState.Error);
|
||||||
|
} else
|
||||||
|
setState(ViewState.Idle);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Future getQuestions() async {
|
||||||
|
if(_edOnlineServices.triageQuestionsModelList.isEmpty){
|
||||||
|
setState(ViewState.Busy);
|
||||||
|
await _edOnlineServices.getQuestions();
|
||||||
|
if (_edOnlineServices.hasError) {
|
||||||
|
error = _edOnlineServices.error;
|
||||||
|
setState(ViewState.Error);
|
||||||
|
} else
|
||||||
|
setState(ViewState.Idle);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Future getPatientPaymentInformation({var id}) async {
|
||||||
|
setState(ViewState.Busy);
|
||||||
|
await _edOnlineServices.getPatientPaymentInformation();
|
||||||
|
if (_edOnlineServices.hasError) {
|
||||||
|
error = _edOnlineServices.error;
|
||||||
|
setState(ViewState.Error);
|
||||||
|
} else
|
||||||
|
setState(ViewState.Idle);
|
||||||
|
}
|
||||||
|
|
||||||
|
Future saveQuestionsInformation(
|
||||||
|
{String notes,
|
||||||
|
String chiefComplaint,
|
||||||
|
int projectId,
|
||||||
|
DateTime selectedTime,
|
||||||
|
List<TriageQuestionsModel> selectedQuestions}) async {
|
||||||
|
setState(ViewState.BusyLocal);
|
||||||
|
await _edOnlineServices.saveQuestionsInformation(
|
||||||
|
notes: notes,
|
||||||
|
projectId: projectId,
|
||||||
|
chiefComplaint: chiefComplaint,
|
||||||
|
selectedTime: selectedTime,
|
||||||
|
selectedQuestions: selectedQuestions);
|
||||||
|
if (_edOnlineServices.hasError) {
|
||||||
|
error = _edOnlineServices.error;
|
||||||
|
setState(ViewState.ErrorLocal);
|
||||||
|
} else
|
||||||
|
setState(ViewState.Idle);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,76 @@
|
|||||||
|
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
|
||||||
|
import 'package:diplomaticquarterapp/widgets/data_display/text.dart';
|
||||||
|
import 'package:flutter/cupertino.dart';
|
||||||
|
import 'package:flutter/material.dart';
|
||||||
|
|
||||||
|
class ConfirmExitPageDialog extends StatelessWidget {
|
||||||
|
final GestureTapCallback onTapYes;
|
||||||
|
final GestureTapCallback onTapNo;
|
||||||
|
|
||||||
|
const ConfirmExitPageDialog({Key key, this.onTapYes, this.onTapNo})
|
||||||
|
: super(key: key);
|
||||||
|
|
||||||
|
@override
|
||||||
|
Widget build(BuildContext context) {
|
||||||
|
return SimpleDialog(
|
||||||
|
contentPadding: EdgeInsets.fromLTRB(28.0, 24.0, 28.0, 0.0),
|
||||||
|
title: Center(
|
||||||
|
child: Texts(
|
||||||
|
TranslationBase.of(context).confirm,
|
||||||
|
color: Colors.black,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
children: [
|
||||||
|
Column(
|
||||||
|
crossAxisAlignment: CrossAxisAlignment.center,
|
||||||
|
children: [
|
||||||
|
Texts(
|
||||||
|
"Are you sure you want to exit this page ?",
|
||||||
|
color: Colors.grey,
|
||||||
|
),
|
||||||
|
SizedBox(
|
||||||
|
height: 5,
|
||||||
|
),
|
||||||
|
Divider(),
|
||||||
|
SizedBox(
|
||||||
|
height: 5.0,
|
||||||
|
),
|
||||||
|
Row(
|
||||||
|
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||||
|
children: [
|
||||||
|
InkWell(
|
||||||
|
onTap: () {
|
||||||
|
onTapNo();
|
||||||
|
},
|
||||||
|
child: Container(
|
||||||
|
child: Center(
|
||||||
|
child: Texts(
|
||||||
|
TranslationBase.of(context).no,
|
||||||
|
color: Colors.red,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
|
||||||
|
InkWell(
|
||||||
|
onTap: () {
|
||||||
|
Navigator.pop(context);
|
||||||
|
onTapYes();
|
||||||
|
},
|
||||||
|
child: Container(
|
||||||
|
child: Center(
|
||||||
|
child: Texts(TranslationBase.of(context).yes),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
SizedBox(
|
||||||
|
height: 20.0,
|
||||||
|
),
|
||||||
|
],
|
||||||
|
)
|
||||||
|
],
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,120 @@
|
|||||||
|
import 'package:diplomaticquarterapp/core/model/er/TriageInformationRequest.dart';
|
||||||
|
import 'package:diplomaticquarterapp/core/model/er/TriageQuestionsModel.dart';
|
||||||
|
import 'package:diplomaticquarterapp/core/model/hospitals/hospitals_model.dart';
|
||||||
|
import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart';
|
||||||
|
import 'package:flutter/cupertino.dart';
|
||||||
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:provider/provider.dart';
|
||||||
|
|
||||||
|
import 'EdOnlineAgreementPage.dart';
|
||||||
|
import 'EdOnlineNotesPage.dart';
|
||||||
|
import 'EdOnlineQuestionsPage.dart';
|
||||||
|
import 'EdOnlineSelectedHospitalPage.dart';
|
||||||
|
import 'EdPaymentInformationPage.dart';
|
||||||
|
import 'ConfirmExitPageDialog.dart';
|
||||||
|
|
||||||
|
class DdServicesPage extends StatefulWidget {
|
||||||
|
@override
|
||||||
|
_DdServicesPageState createState() => _DdServicesPageState();
|
||||||
|
}
|
||||||
|
|
||||||
|
class _DdServicesPageState extends State<DdServicesPage> {
|
||||||
|
PageController pageController;
|
||||||
|
|
||||||
|
bool isAgree = false;
|
||||||
|
TriageInformationRequest triageInformationRequest = new TriageInformationRequest();
|
||||||
|
|
||||||
|
List<TriageQuestionsModel> selectedQuestions = List();
|
||||||
|
|
||||||
|
@override
|
||||||
|
void initState() {
|
||||||
|
super.initState();
|
||||||
|
pageController = new PageController();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
_changePageViewIndex(int tab) {
|
||||||
|
setState(() {
|
||||||
|
pageController.jumpToPage(tab);
|
||||||
|
pageController.animateToPage(tab,
|
||||||
|
duration: Duration(milliseconds: 800), curve: Curves.easeOutQuart);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
Widget build(BuildContext context) {
|
||||||
|
ProjectViewModel projectViewModel = Provider.of(context);
|
||||||
|
return Scaffold(
|
||||||
|
appBar: AppBar(
|
||||||
|
elevation: 0,
|
||||||
|
textTheme: TextTheme(
|
||||||
|
headline6: TextStyle(
|
||||||
|
color: Theme.of(context).textTheme.headline1.color,
|
||||||
|
fontWeight: FontWeight.bold),
|
||||||
|
),
|
||||||
|
title: Text(
|
||||||
|
'ED Online',
|
||||||
|
style: TextStyle(
|
||||||
|
fontWeight: FontWeight.bold,
|
||||||
|
color: Theme.of(context).textTheme.headline1.color,
|
||||||
|
fontFamily: projectViewModel.isArabic ? 'Cairo' : 'WorkSans'),
|
||||||
|
// bold: true,
|
||||||
|
// color: Colors.white,
|
||||||
|
),
|
||||||
|
leading: Builder(
|
||||||
|
builder: (BuildContext context) {
|
||||||
|
return IconButton(
|
||||||
|
icon: Icon(Icons.arrow_back),
|
||||||
|
color: Theme.of(context).textTheme.headline1.color,
|
||||||
|
onPressed: () {
|
||||||
|
showConfirmMessage(context);
|
||||||
|
},
|
||||||
|
);
|
||||||
|
},
|
||||||
|
),
|
||||||
|
centerTitle: true,
|
||||||
|
),
|
||||||
|
body: PageView(
|
||||||
|
physics: NeverScrollableScrollPhysics(),
|
||||||
|
controller: pageController,
|
||||||
|
onPageChanged: _changePageViewIndex,
|
||||||
|
children: [
|
||||||
|
EdOnlineSelectedHospitalPage(
|
||||||
|
changePageViewIndex: _changePageViewIndex,
|
||||||
|
triageInformationRequest: triageInformationRequest,
|
||||||
|
),
|
||||||
|
EdOnlineAgreementPage(
|
||||||
|
changePageViewIndex: _changePageViewIndex,
|
||||||
|
isAgree: isAgree,
|
||||||
|
),
|
||||||
|
EdOnlineQuestionsPage(
|
||||||
|
changePageViewIndex: _changePageViewIndex,
|
||||||
|
selectedQuestions: selectedQuestions,
|
||||||
|
),
|
||||||
|
EdOnlineNotesPage(
|
||||||
|
changePageViewIndex: _changePageViewIndex,
|
||||||
|
selectedQuestions: selectedQuestions,
|
||||||
|
triageInformationRequest: triageInformationRequest,
|
||||||
|
),
|
||||||
|
EdPaymentInformationPage(selectedHospital: triageInformationRequest.selectedHospital,)
|
||||||
|
],
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
void showConfirmMessage(
|
||||||
|
BuildContext context,
|
||||||
|
) {
|
||||||
|
showDialog(
|
||||||
|
context: context,
|
||||||
|
child: ConfirmExitPageDialog(
|
||||||
|
onTapYes: () {
|
||||||
|
Navigator.pop(context);
|
||||||
|
},
|
||||||
|
onTapNo: () {
|
||||||
|
Navigator.pop(context);
|
||||||
|
},
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,99 @@
|
|||||||
|
import 'package:diplomaticquarterapp/core/model/hospitals/hospitals_model.dart';
|
||||||
|
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
|
||||||
|
import 'package:diplomaticquarterapp/widgets/buttons/secondary_button.dart';
|
||||||
|
import 'package:diplomaticquarterapp/widgets/data_display/text.dart';
|
||||||
|
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
|
||||||
|
import 'package:flutter/cupertino.dart';
|
||||||
|
import 'package:flutter/material.dart';
|
||||||
|
|
||||||
|
class EdOnlineAgreementPage extends StatefulWidget {
|
||||||
|
final HospitalsModel selectedHospital;
|
||||||
|
final Function changePageViewIndex;
|
||||||
|
bool isAgree;
|
||||||
|
EdOnlineAgreementPage({Key key, this.selectedHospital, this.changePageViewIndex,this.isAgree}) : super(key: key);
|
||||||
|
|
||||||
|
@override
|
||||||
|
_EdOnlineAgreementPageState createState() => _EdOnlineAgreementPageState();
|
||||||
|
}
|
||||||
|
|
||||||
|
class _EdOnlineAgreementPageState extends State<EdOnlineAgreementPage> {
|
||||||
|
|
||||||
|
|
||||||
|
@override
|
||||||
|
Widget build(BuildContext context) {
|
||||||
|
return AppScaffold(
|
||||||
|
body: SingleChildScrollView(
|
||||||
|
physics: BouncingScrollPhysics(),
|
||||||
|
child: Column(
|
||||||
|
children: [
|
||||||
|
SizedBox(),
|
||||||
|
InkWell(
|
||||||
|
onTap: (){
|
||||||
|
setState(() {
|
||||||
|
widget.isAgree = !widget.isAgree;
|
||||||
|
});
|
||||||
|
},
|
||||||
|
child: Row(
|
||||||
|
children: [
|
||||||
|
Checkbox(
|
||||||
|
value: widget.isAgree,
|
||||||
|
activeColor: Colors.red[800],
|
||||||
|
onChanged: (bool newValue) {
|
||||||
|
setState(() {
|
||||||
|
widget.isAgree = !widget.isAgree;
|
||||||
|
});
|
||||||
|
}),
|
||||||
|
Expanded(
|
||||||
|
child: Padding(
|
||||||
|
padding: const EdgeInsets.all(20.0),
|
||||||
|
child: Texts(
|
||||||
|
TranslationBase.of(context).onlineCheckInAgreement,
|
||||||
|
fontSize: 15,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
SizedBox(),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
bottomSheet: Padding(
|
||||||
|
padding: const EdgeInsets.all(8.0),
|
||||||
|
child: Container(
|
||||||
|
height: 56,
|
||||||
|
child: Row(
|
||||||
|
children: [
|
||||||
|
Expanded(
|
||||||
|
child: Container(
|
||||||
|
margin: EdgeInsets.only(left: 5,right: 5),
|
||||||
|
child: SecondaryButton(
|
||||||
|
textColor: Colors.white,
|
||||||
|
color: Theme.of(context).primaryColor,
|
||||||
|
label: TranslationBase.of(context).back.toUpperCase(),
|
||||||
|
onTap: () => widget.changePageViewIndex(0),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
SizedBox(width: 10,),
|
||||||
|
Expanded(
|
||||||
|
child: Container(
|
||||||
|
margin: EdgeInsets.only(left: 5,right: 5),
|
||||||
|
child: SecondaryButton(
|
||||||
|
textColor: Colors.white,
|
||||||
|
color: Theme.of(context).primaryColor,
|
||||||
|
label: TranslationBase.of(context).next.toUpperCase(),
|
||||||
|
disabled: !widget.isAgree,
|
||||||
|
onTap: () => widget.changePageViewIndex(2),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,177 @@
|
|||||||
|
import 'package:diplomaticquarterapp/core/enum/viewstate.dart';
|
||||||
|
import 'package:diplomaticquarterapp/core/model/er/TriageInformationRequest.dart';
|
||||||
|
import 'package:diplomaticquarterapp/core/model/er/TriageQuestionsModel.dart';
|
||||||
|
import 'package:diplomaticquarterapp/core/model/hospitals/hospitals_model.dart';
|
||||||
|
import 'package:diplomaticquarterapp/core/viewModels/er/EdOnlineViewModel.dart';
|
||||||
|
import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart';
|
||||||
|
import 'package:diplomaticquarterapp/pages/Blood/new_text_Field.dart';
|
||||||
|
import 'package:diplomaticquarterapp/pages/base/base_view.dart';
|
||||||
|
import 'package:diplomaticquarterapp/uitl/app_toast.dart';
|
||||||
|
import 'package:diplomaticquarterapp/uitl/gif_loader_dialog_utils.dart';
|
||||||
|
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
|
||||||
|
import 'package:diplomaticquarterapp/widgets/buttons/secondary_button.dart';
|
||||||
|
import 'package:diplomaticquarterapp/widgets/data_display/text.dart';
|
||||||
|
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
|
||||||
|
import 'package:flutter/cupertino.dart';
|
||||||
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:flutter_datetime_picker/flutter_datetime_picker.dart';
|
||||||
|
import 'package:provider/provider.dart';
|
||||||
|
|
||||||
|
class EdOnlineNotesPage extends StatefulWidget {
|
||||||
|
final List<TriageQuestionsModel> selectedQuestions;
|
||||||
|
final Function changePageViewIndex;
|
||||||
|
TriageInformationRequest triageInformationRequest;
|
||||||
|
EdOnlineNotesPage(
|
||||||
|
{Key key, this.selectedQuestions, this.changePageViewIndex,this.triageInformationRequest})
|
||||||
|
;
|
||||||
|
|
||||||
|
@override
|
||||||
|
_EdOnlineNotesPageState createState() => _EdOnlineNotesPageState();
|
||||||
|
}
|
||||||
|
|
||||||
|
class _EdOnlineNotesPageState extends State<EdOnlineNotesPage> {
|
||||||
|
TextEditingController _chiefComplaintsTextController =
|
||||||
|
TextEditingController();
|
||||||
|
TextEditingController _noteTextController = TextEditingController();
|
||||||
|
DateTime selectedTime;
|
||||||
|
final _formKey = GlobalKey<FormState>();
|
||||||
|
|
||||||
|
@override
|
||||||
|
Widget build(BuildContext context) {
|
||||||
|
ProjectViewModel projectViewModel = Provider.of(context);
|
||||||
|
return BaseView<EdOnlineViewModel>(
|
||||||
|
builder: (_, model, w) => AppScaffold(
|
||||||
|
baseViewModel: model,
|
||||||
|
body: SingleChildScrollView(
|
||||||
|
physics: BouncingScrollPhysics(),
|
||||||
|
child: Padding(
|
||||||
|
padding: const EdgeInsets.all(8.0),
|
||||||
|
child: Column(
|
||||||
|
children: [
|
||||||
|
Form(
|
||||||
|
key: _formKey,
|
||||||
|
child: NewTextFields(
|
||||||
|
controller: _chiefComplaintsTextController,
|
||||||
|
maxLines: 15,
|
||||||
|
minLines: 5,
|
||||||
|
hintText: TranslationBase.of(context).chiefComplaints,
|
||||||
|
validator: (value) {
|
||||||
|
if (value.isEmpty) return TranslationBase.of(context).errorChiefComplaints;
|
||||||
|
return null;
|
||||||
|
},
|
||||||
|
),
|
||||||
|
),
|
||||||
|
SizedBox(
|
||||||
|
height: 8,
|
||||||
|
),
|
||||||
|
InkWell(
|
||||||
|
onTap: () {
|
||||||
|
DatePicker.showDateTimePicker(
|
||||||
|
context,
|
||||||
|
showTitleActions: true,
|
||||||
|
minTime: DateTime.now(),
|
||||||
|
maxTime: DateTime.now().add(Duration(hours: 24)),
|
||||||
|
onConfirm: (date) {
|
||||||
|
setState(() {
|
||||||
|
selectedTime = date;
|
||||||
|
});
|
||||||
|
},
|
||||||
|
currentTime: DateTime.now(),
|
||||||
|
locale: projectViewModel.localeType,
|
||||||
|
);
|
||||||
|
},
|
||||||
|
child: Container(
|
||||||
|
padding: EdgeInsets.all(12),
|
||||||
|
width: double.infinity,
|
||||||
|
// height: 65,
|
||||||
|
decoration: BoxDecoration(
|
||||||
|
borderRadius: BorderRadius.circular(12),
|
||||||
|
color: Colors.white),
|
||||||
|
child: Row(
|
||||||
|
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||||
|
children: [
|
||||||
|
Texts(selectedTime == null ?TranslationBase.of(context).errorExpectedArrivalTime:TranslationBase.of(context).expectedArrivalTime),
|
||||||
|
Texts(getDate(context)),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
SizedBox(
|
||||||
|
height: 8,
|
||||||
|
),
|
||||||
|
NewTextFields(
|
||||||
|
controller: _noteTextController,
|
||||||
|
maxLines: 15,
|
||||||
|
minLines: 5,
|
||||||
|
hintText: TranslationBase.of(context).notes,
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
bottomSheet: Container(
|
||||||
|
height: 56,
|
||||||
|
margin: EdgeInsets.only(bottom: 5),
|
||||||
|
width: double.infinity,
|
||||||
|
child: Row(
|
||||||
|
children: [
|
||||||
|
Expanded(
|
||||||
|
child: Container(
|
||||||
|
margin: EdgeInsets.only(left: 5,right: 5),
|
||||||
|
child: SecondaryButton(
|
||||||
|
textColor: Colors.white,
|
||||||
|
color: Theme.of(context).primaryColor,
|
||||||
|
label: TranslationBase.of(context).back.toUpperCase(),
|
||||||
|
onTap: () => widget.changePageViewIndex(2),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
SizedBox(width: 10,),
|
||||||
|
Expanded(
|
||||||
|
child: Container(
|
||||||
|
margin: EdgeInsets.only(left: 5,right: 5),
|
||||||
|
child: SecondaryButton(
|
||||||
|
textColor: Colors.white,
|
||||||
|
color: Theme.of(context).primaryColor,
|
||||||
|
label: TranslationBase.of(context).save.toUpperCase(),
|
||||||
|
disabled: selectedTime == null,
|
||||||
|
onTap: () async {
|
||||||
|
if (_formKey.currentState.validate()) {
|
||||||
|
GifLoaderDialogUtils.showMyDialog(context);
|
||||||
|
model.saveQuestionsInformation(
|
||||||
|
chiefComplaint:
|
||||||
|
_chiefComplaintsTextController.text.toString(),
|
||||||
|
notes: _noteTextController.text.toString(),
|
||||||
|
selectedQuestions: widget.selectedQuestions,
|
||||||
|
projectId: widget.triageInformationRequest.projectID,selectedTime: selectedTime).then((value) {
|
||||||
|
GifLoaderDialogUtils.hideDialog(context);
|
||||||
|
if(model.state == ViewState.ErrorLocal)
|
||||||
|
AppToast.showErrorToast(message: model.error);
|
||||||
|
else
|
||||||
|
{
|
||||||
|
widget.changePageViewIndex(4);
|
||||||
|
}
|
||||||
|
|
||||||
|
}).catchError((onError){
|
||||||
|
GifLoaderDialogUtils.hideDialog(context);
|
||||||
|
AppToast.showErrorToast(message: onError.toString());
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
getDate(BuildContext context) {
|
||||||
|
String message = "";
|
||||||
|
if (selectedTime != null) {
|
||||||
|
message = "${selectedTime.hour}:${selectedTime.minute}";
|
||||||
|
}
|
||||||
|
return message;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,127 @@
|
|||||||
|
import 'package:diplomaticquarterapp/core/model/er/TriageQuestionsModel.dart';
|
||||||
|
import 'package:diplomaticquarterapp/core/model/hospitals/hospitals_model.dart';
|
||||||
|
import 'package:diplomaticquarterapp/core/viewModels/er/EdOnlineViewModel.dart';
|
||||||
|
import 'package:diplomaticquarterapp/pages/base/base_view.dart';
|
||||||
|
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
|
||||||
|
import 'package:diplomaticquarterapp/widgets/buttons/secondary_button.dart';
|
||||||
|
import 'package:diplomaticquarterapp/widgets/data_display/text.dart';
|
||||||
|
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
|
||||||
|
import 'package:flutter/cupertino.dart';
|
||||||
|
import 'package:flutter/material.dart';
|
||||||
|
|
||||||
|
// ignore: must_be_immutable
|
||||||
|
class EdOnlineQuestionsPage extends StatefulWidget {
|
||||||
|
final HospitalsModel selectedHospital;
|
||||||
|
final Function changePageViewIndex;
|
||||||
|
List<TriageQuestionsModel> selectedQuestions;
|
||||||
|
|
||||||
|
EdOnlineQuestionsPage({Key key, this.selectedHospital,this.selectedQuestions, this.changePageViewIndex});
|
||||||
|
|
||||||
|
|
||||||
|
@override
|
||||||
|
_EdOnlineQuestionsPageState createState() => _EdOnlineQuestionsPageState();
|
||||||
|
}
|
||||||
|
|
||||||
|
class _EdOnlineQuestionsPageState extends State<EdOnlineQuestionsPage> {
|
||||||
|
|
||||||
|
|
||||||
|
@override
|
||||||
|
Widget build(BuildContext context) {
|
||||||
|
return BaseView<EdOnlineViewModel>(
|
||||||
|
onModelReady: (model) => model.getQuestions(),
|
||||||
|
builder: (_, model, w) => AppScaffold(
|
||||||
|
baseViewModel: model,
|
||||||
|
body: SingleChildScrollView(
|
||||||
|
physics: BouncingScrollPhysics(),
|
||||||
|
child: Column(
|
||||||
|
children: [
|
||||||
|
...List.generate(
|
||||||
|
model.triageQuestionsModelList.length,
|
||||||
|
(index) =>
|
||||||
|
InkWell(
|
||||||
|
onTap: (){
|
||||||
|
setState(() {
|
||||||
|
if (widget.selectedQuestions
|
||||||
|
.contains(model.triageQuestionsModelList[index])) {
|
||||||
|
widget.selectedQuestions
|
||||||
|
.remove(model.triageQuestionsModelList[index]);
|
||||||
|
} else {
|
||||||
|
widget.selectedQuestions
|
||||||
|
.add(model.triageQuestionsModelList[index]);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
child: Row(
|
||||||
|
children: [
|
||||||
|
Checkbox(
|
||||||
|
value: widget.selectedQuestions.contains(model.triageQuestionsModelList[index]),
|
||||||
|
activeColor: Colors.red[800],
|
||||||
|
onChanged: (bool newValue) {
|
||||||
|
setState(() {
|
||||||
|
if (widget.selectedQuestions
|
||||||
|
.contains(model.triageQuestionsModelList[index])) {
|
||||||
|
widget.selectedQuestions
|
||||||
|
.remove(model.triageQuestionsModelList[index]);
|
||||||
|
} else {
|
||||||
|
widget.selectedQuestions
|
||||||
|
.add(model.triageQuestionsModelList[index]);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}),
|
||||||
|
Expanded(
|
||||||
|
child: Padding(
|
||||||
|
padding: const EdgeInsets.all(20.0),
|
||||||
|
child: Texts(
|
||||||
|
model.triageQuestionsModelList[index].question,
|
||||||
|
fontSize: 15,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
|
||||||
|
),
|
||||||
|
SizedBox(height: 80,)
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
bottomSheet: Padding(
|
||||||
|
padding: const EdgeInsets.all(8.0),
|
||||||
|
child: Container(
|
||||||
|
height: 56,
|
||||||
|
child: Row(
|
||||||
|
children: [
|
||||||
|
Expanded(
|
||||||
|
child: Container(
|
||||||
|
margin: EdgeInsets.only(left: 5,right: 5),
|
||||||
|
child: SecondaryButton(
|
||||||
|
textColor: Colors.white,
|
||||||
|
color: Theme.of(context).primaryColor,
|
||||||
|
label: TranslationBase.of(context).back.toUpperCase(),
|
||||||
|
onTap: () => widget.changePageViewIndex(1),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
SizedBox(width: 10,),
|
||||||
|
Expanded(
|
||||||
|
child: Container(
|
||||||
|
margin: EdgeInsets.only(left: 5,right: 5),
|
||||||
|
child: SecondaryButton(
|
||||||
|
textColor: Colors.white,
|
||||||
|
color: Theme.of(context).primaryColor,
|
||||||
|
label: TranslationBase.of(context).next.toUpperCase(),
|
||||||
|
disabled: widget.selectedQuestions.isEmpty,
|
||||||
|
onTap: () => widget.changePageViewIndex(3),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,102 @@
|
|||||||
|
import 'package:diplomaticquarterapp/core/model/er/TriageInformationRequest.dart';
|
||||||
|
import 'package:diplomaticquarterapp/core/model/hospitals/hospitals_model.dart';
|
||||||
|
import 'package:diplomaticquarterapp/core/viewModels/er/EdOnlineViewModel.dart';
|
||||||
|
import 'package:diplomaticquarterapp/pages/base/base_view.dart';
|
||||||
|
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
|
||||||
|
import 'package:diplomaticquarterapp/widgets/buttons/secondary_button.dart';
|
||||||
|
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
|
||||||
|
import 'package:flutter/cupertino.dart';
|
||||||
|
import 'package:flutter/material.dart';
|
||||||
|
|
||||||
|
import '../../../Constants.dart';
|
||||||
|
|
||||||
|
|
||||||
|
class EdOnlineSelectedHospitalPage extends StatefulWidget {
|
||||||
|
final Function changePageViewIndex;
|
||||||
|
TriageInformationRequest triageInformationRequest;
|
||||||
|
|
||||||
|
EdOnlineSelectedHospitalPage(
|
||||||
|
{Key key, this.changePageViewIndex,this.triageInformationRequest})
|
||||||
|
: super(key: key);
|
||||||
|
|
||||||
|
@override
|
||||||
|
_EdOnlineSelectedHospitalPageState createState() =>
|
||||||
|
_EdOnlineSelectedHospitalPageState();
|
||||||
|
}
|
||||||
|
|
||||||
|
class _EdOnlineSelectedHospitalPageState
|
||||||
|
extends State<EdOnlineSelectedHospitalPage> {
|
||||||
|
@override
|
||||||
|
Widget build(BuildContext context) {
|
||||||
|
return BaseView<EdOnlineViewModel>(
|
||||||
|
onModelReady: (model) => model.getHospitals(),
|
||||||
|
builder: (_, model, w) => AppScaffold(
|
||||||
|
baseViewModel: model,
|
||||||
|
body: SingleChildScrollView(
|
||||||
|
physics: BouncingScrollPhysics(),
|
||||||
|
child: Column(
|
||||||
|
children: [
|
||||||
|
...List.generate(
|
||||||
|
model.hospitals.length,
|
||||||
|
(index) => Column(
|
||||||
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
|
children: [
|
||||||
|
SizedBox(
|
||||||
|
height: 2,
|
||||||
|
),
|
||||||
|
Row(
|
||||||
|
children: <Widget>[
|
||||||
|
Expanded(
|
||||||
|
flex: 1,
|
||||||
|
child: InkWell(
|
||||||
|
onTap: () {
|
||||||
|
setState(() {
|
||||||
|
widget.triageInformationRequest.selectedHospital = model.hospitals[index];
|
||||||
|
widget.triageInformationRequest.projectID = model.hospitals[index].iD;
|
||||||
|
});
|
||||||
|
},
|
||||||
|
child: ListTile(
|
||||||
|
title: Text(model.hospitals[index].name +
|
||||||
|
' ${model.hospitals[index].distanceInKilometers} ' +
|
||||||
|
TranslationBase.of(context).km),
|
||||||
|
leading: Radio(
|
||||||
|
value: model.hospitals[index],
|
||||||
|
groupValue: widget.triageInformationRequest.selectedHospital,
|
||||||
|
activeColor: secondaryColor,
|
||||||
|
onChanged: (value) {
|
||||||
|
setState(() {
|
||||||
|
widget.triageInformationRequest.selectedHospital = model.hospitals[index];
|
||||||
|
widget.triageInformationRequest.projectID = model.hospitals[index].iD;
|
||||||
|
});
|
||||||
|
},
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
)
|
||||||
|
],
|
||||||
|
),
|
||||||
|
SizedBox(
|
||||||
|
height: 5.0,
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
)
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
bottomSheet: Container(
|
||||||
|
height: 76,
|
||||||
|
child: Padding(
|
||||||
|
padding: const EdgeInsets.all(8.0),
|
||||||
|
child: SecondaryButton(
|
||||||
|
// textColor: Colors.white,
|
||||||
|
color: Theme.of(context).primaryColor,
|
||||||
|
label: TranslationBase.of(context).next.toUpperCase(),
|
||||||
|
disabled: widget.triageInformationRequest.selectedHospital==null,
|
||||||
|
onTap: () => widget.changePageViewIndex(1)),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,112 @@
|
|||||||
|
import 'package:diplomaticquarterapp/core/model/hospitals/hospitals_model.dart';
|
||||||
|
import 'package:diplomaticquarterapp/core/viewModels/er/EdOnlineViewModel.dart';
|
||||||
|
import 'package:diplomaticquarterapp/pages/ToDoList/payment_method_select.dart';
|
||||||
|
import 'package:diplomaticquarterapp/pages/base/base_view.dart';
|
||||||
|
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
|
||||||
|
import 'package:diplomaticquarterapp/widgets/buttons/secondary_button.dart';
|
||||||
|
import 'package:diplomaticquarterapp/widgets/data_display/text.dart';
|
||||||
|
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
|
||||||
|
import 'package:diplomaticquarterapp/widgets/transitions/fade_page.dart';
|
||||||
|
import 'package:flutter/cupertino.dart';
|
||||||
|
import 'package:flutter/material.dart';
|
||||||
|
|
||||||
|
class EdPaymentInformationPage extends StatefulWidget {
|
||||||
|
final HospitalsModel selectedHospital;
|
||||||
|
|
||||||
|
const EdPaymentInformationPage({Key key, this.selectedHospital}) : super(key: key);
|
||||||
|
@override
|
||||||
|
_EdPaymentInformationPageState createState() =>
|
||||||
|
_EdPaymentInformationPageState();
|
||||||
|
}
|
||||||
|
|
||||||
|
class _EdPaymentInformationPageState extends State<EdPaymentInformationPage> {
|
||||||
|
@override
|
||||||
|
Widget build(BuildContext context) {
|
||||||
|
return BaseView<EdOnlineViewModel>(
|
||||||
|
onModelReady: (model) => model.getPatientPaymentInformation(),
|
||||||
|
builder: (_, model, w) => AppScaffold(
|
||||||
|
baseViewModel: model,
|
||||||
|
body: SingleChildScrollView(
|
||||||
|
physics: BouncingScrollPhysics(),
|
||||||
|
child: Column(
|
||||||
|
children: [
|
||||||
|
Container(
|
||||||
|
decoration: BoxDecoration(
|
||||||
|
borderRadius: BorderRadius.circular(10.0),
|
||||||
|
color: Colors.white),
|
||||||
|
margin: EdgeInsets.fromLTRB(0.0, 30.0, 0.0, 5.0),
|
||||||
|
padding: EdgeInsets.fromLTRB(20.0, 0.0, 20.0, 20.0),
|
||||||
|
child: Column(
|
||||||
|
children: <Widget>[
|
||||||
|
Container(
|
||||||
|
alignment: Alignment.center,
|
||||||
|
margin:
|
||||||
|
EdgeInsets.only(left: 0.0, right: 20.0, top: 30.0),
|
||||||
|
child: Text(TranslationBase.of(context).testFee,
|
||||||
|
style: TextStyle(
|
||||||
|
color: Colors.black,
|
||||||
|
fontSize: 22.0,
|
||||||
|
fontWeight: FontWeight.bold)),
|
||||||
|
),
|
||||||
|
if(model.erPatientShareModel!=null)
|
||||||
|
Table(
|
||||||
|
children: [
|
||||||
|
TableRow(children: [
|
||||||
|
TableCell(
|
||||||
|
child:
|
||||||
|
Texts(TranslationBase.of(context).testFee)),
|
||||||
|
TableCell(
|
||||||
|
child: Texts(model
|
||||||
|
.erPatientShareModel.patientShare
|
||||||
|
.toStringAsFixed(2))),
|
||||||
|
]),
|
||||||
|
TableRow(children: [
|
||||||
|
TableCell(
|
||||||
|
child: Texts(
|
||||||
|
TranslationBase.of(context).patientTaxToDo)),
|
||||||
|
TableCell(
|
||||||
|
child: Texts(model
|
||||||
|
.erPatientShareModel.patientTaxAmount
|
||||||
|
.toStringAsFixed(2))),
|
||||||
|
]),
|
||||||
|
TableRow(children: [
|
||||||
|
TableCell(
|
||||||
|
child: Texts(TranslationBase.of(context)
|
||||||
|
.patientShareTotalToDo)),
|
||||||
|
TableCell(
|
||||||
|
child: Texts(model
|
||||||
|
.erPatientShareModel.patientShareWithTax
|
||||||
|
.toStringAsFixed(2))),
|
||||||
|
]),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
bottomSheet: Container(
|
||||||
|
height: 76,
|
||||||
|
child: Padding(
|
||||||
|
padding: const EdgeInsets.all(8.0),
|
||||||
|
child: SecondaryButton(
|
||||||
|
color: Theme.of(context).primaryColor,
|
||||||
|
label: TranslationBase.of(context).next.toUpperCase(),
|
||||||
|
onTap: () {
|
||||||
|
Navigator.push(context, FadePage(page: PaymentMethod())).then(
|
||||||
|
(value) {
|
||||||
|
//TODO Haroun call API here
|
||||||
|
},
|
||||||
|
);
|
||||||
|
},
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,170 @@
|
|||||||
|
import 'package:diplomaticquarterapp/core/model/pharmacy/categorise_parent_model.dart';
|
||||||
|
import 'package:diplomaticquarterapp/core/viewModels/pharmacy_categorise_view_model.dart';
|
||||||
|
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
|
||||||
|
import 'package:diplomaticquarterapp/widgets/data_display/text.dart';
|
||||||
|
import 'package:diplomaticquarterapp/widgets/input/text_field.dart';
|
||||||
|
import 'package:diplomaticquarterapp/widgets/others/network_base_view.dart';
|
||||||
|
import 'package:diplomaticquarterapp/widgets/text/app_texts_widget.dart';
|
||||||
|
import 'package:eva_icons_flutter/eva_icons_flutter.dart';
|
||||||
|
import 'package:flutter/cupertino.dart';
|
||||||
|
import 'package:flutter/material.dart';
|
||||||
|
|
||||||
|
class ProcedureListWidget extends StatefulWidget {
|
||||||
|
final PharmacyCategoriseViewModel model;
|
||||||
|
final Function addSelectedHistories;
|
||||||
|
final Function(CategoriseParentModel) removeHistory;
|
||||||
|
final Function(CategoriseParentModel) addHistory;
|
||||||
|
final Function(CategoriseParentModel) addRemarks;
|
||||||
|
|
||||||
|
final bool Function(CategoriseParentModel) isEntityListSelected;
|
||||||
|
final List<CategoriseParentModel> masterList;
|
||||||
|
|
||||||
|
ProcedureListWidget(
|
||||||
|
{Key key,
|
||||||
|
this.model,
|
||||||
|
this.addSelectedHistories,
|
||||||
|
this.removeHistory,
|
||||||
|
this.masterList,
|
||||||
|
this.addHistory,
|
||||||
|
this.isEntityListSelected,
|
||||||
|
this.addRemarks})
|
||||||
|
: super(key: key);
|
||||||
|
|
||||||
|
@override
|
||||||
|
_ProcedureListWidgetState createState() => _ProcedureListWidgetState();
|
||||||
|
}
|
||||||
|
|
||||||
|
class _ProcedureListWidgetState extends State<ProcedureListWidget> {
|
||||||
|
int selectedType = 0;
|
||||||
|
int typeUrgent;
|
||||||
|
int typeRegular;
|
||||||
|
|
||||||
|
setSelectedType(int val) {
|
||||||
|
setState(() {
|
||||||
|
selectedType = val;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
List<CategoriseParentModel> items = List();
|
||||||
|
List<String> remarksList = List();
|
||||||
|
List<int> typeList = List();
|
||||||
|
|
||||||
|
@override
|
||||||
|
void initState() {
|
||||||
|
items.addAll(widget.masterList);
|
||||||
|
super.initState();
|
||||||
|
}
|
||||||
|
|
||||||
|
TextEditingController remarksController = TextEditingController();
|
||||||
|
@override
|
||||||
|
Widget build(BuildContext context) {
|
||||||
|
return Container(
|
||||||
|
child: Column(
|
||||||
|
children: [
|
||||||
|
NetworkBaseView(
|
||||||
|
baseViewModel: widget.model,
|
||||||
|
child: Container(
|
||||||
|
height: MediaQuery.of(context).size.height * 0.35,
|
||||||
|
child: Center(
|
||||||
|
child: Container(
|
||||||
|
margin: EdgeInsets.only(top: 15),
|
||||||
|
decoration: BoxDecoration(
|
||||||
|
borderRadius: BorderRadius.circular(12),
|
||||||
|
color: Colors.white),
|
||||||
|
child: ListView(
|
||||||
|
children: [
|
||||||
|
// TextFields(
|
||||||
|
// hintText:
|
||||||
|
// 'sss', //TranslationBase.of(context).searchProcedures,
|
||||||
|
// suffixIcon: EvaIcons.search,
|
||||||
|
// onChanged: (value) {
|
||||||
|
// filterSearchResults(value);
|
||||||
|
// },
|
||||||
|
// ),
|
||||||
|
SizedBox(
|
||||||
|
height: 15,
|
||||||
|
),
|
||||||
|
items.length != 0
|
||||||
|
? Column(
|
||||||
|
children: items.map((historyInfo) {
|
||||||
|
return Column(
|
||||||
|
children: [
|
||||||
|
Row(
|
||||||
|
children: [
|
||||||
|
Checkbox(
|
||||||
|
value: widget.isEntityListSelected(
|
||||||
|
historyInfo),
|
||||||
|
activeColor: Colors.red[800],
|
||||||
|
onChanged: (bool newValue) {
|
||||||
|
setState(() {
|
||||||
|
if (widget.isEntityListSelected(
|
||||||
|
historyInfo)) {
|
||||||
|
widget
|
||||||
|
.removeHistory(historyInfo);
|
||||||
|
} else {
|
||||||
|
widget.addHistory(historyInfo);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}),
|
||||||
|
Expanded(
|
||||||
|
child: Padding(
|
||||||
|
padding: const EdgeInsets.symmetric(
|
||||||
|
horizontal: 10, vertical: 0),
|
||||||
|
child: Texts(historyInfo.name,
|
||||||
|
variant: "bodyText",
|
||||||
|
bold: true,
|
||||||
|
color: Colors.black),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
Divider(
|
||||||
|
height: 1,
|
||||||
|
),
|
||||||
|
],
|
||||||
|
);
|
||||||
|
}).toList(),
|
||||||
|
)
|
||||||
|
: Center(
|
||||||
|
child: Container(
|
||||||
|
child: AppText(
|
||||||
|
"There's no procedures for this category",
|
||||||
|
color: Color(0xFFB9382C)),
|
||||||
|
),
|
||||||
|
)
|
||||||
|
],
|
||||||
|
),
|
||||||
|
)),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
SizedBox(
|
||||||
|
height: 10,
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
void filterSearchResults(String query) {
|
||||||
|
List<CategoriseParentModel> dummySearchList = List();
|
||||||
|
dummySearchList.addAll(widget.masterList);
|
||||||
|
if (query.isNotEmpty) {
|
||||||
|
List<CategoriseParentModel> dummyListData = List();
|
||||||
|
dummySearchList.forEach((item) {
|
||||||
|
if (item.name.toLowerCase().contains(query.toLowerCase())) {
|
||||||
|
dummyListData.add(item);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
setState(() {
|
||||||
|
items.clear();
|
||||||
|
items.addAll(dummyListData);
|
||||||
|
});
|
||||||
|
return;
|
||||||
|
} else {
|
||||||
|
setState(() {
|
||||||
|
items.clear();
|
||||||
|
items.addAll(widget.masterList);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue