merge-requests/91/head
Salman Afzal 5 years ago
commit bde30d93ec

@ -12,8 +12,15 @@ import 'package:http/http.dart';
*@Date:28/5/2020
*@param: url, onSuccess callBack, onFailure callBack
*@return:
*@desc: convert DateTime to data formatted
*@desc:
*/
///Example
/*
await BaseAppClient.post('',
onSuccess: (dynamic response, int statusCode) {},
onFailure: (String error, int statusCode) {},
body: null);
* */
class BaseAppClient {
static Client client = HttpInterceptor().getClient();

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

@ -20,3 +20,14 @@
{"text": "Out Sudia Arabia", "val": "2"},
];
enum vitalSignDetails {
bodyMeasurements,
temperature,
pulse,
pespiration,
bloodPressure,
oxygenation,
painScale
}

@ -44,7 +44,7 @@ class MyApp extends StatelessWidget {
],
theme: ThemeData(
primarySwatch: Colors.grey,
primaryColor: Hexcolor('#B8382C'),
primaryColor: Colors.grey,
buttonColor: Hexcolor('#B8382C'),
fontFamily: 'WorkSans',
dividerColor: Colors.grey[200],

@ -0,0 +1,7 @@
/// Sample linear data type.
class ChartAxis {
final int xAxis;
final int yAxis;
ChartAxis(this.xAxis, this.yAxis);
}

@ -1,73 +1,18 @@
/*
*@author: Amjad amireh
*@Date:1/6/2020
*@param:
*@return:
*@desc: MyReferredPatientModel
*/
import 'dart:convert';
import 'package:doctor_app_flutter/util/helpers.dart';
MyReferredPatientModel myReferredPatientModelFromJson(String str) => MyReferredPatientModel.fromJson(json.decode(str));
import 'package:doctor_app_flutter/util/helpers.dart';
String myReferredPatientModelToJson(MyReferredPatientModel data) => json.encode(data.toJson());
class MyReferredPatientModel {
int projectID;
int lineItemNo;
int doctorID;
int patientID;
String doctorName;
String doctorNameN;
String firstName;
String middleName;
String lastName;
String firstNameN;
String middleNameN;
String lastNameN;
int gender;
String dateofBirth;
String mobileNumber;
String emailAddress;
String patientIdentificationNo;
int patientType;
String admissionNo;
String admissionDate;
String roomID;
String bedID;
String nursingStationID;
String description;
String nationalityName;
String nationalityNameN;
String clinicDescription;
String clinicDescriptionN;
int referralDoctor;
int referringDoctor;
int referralClinic;
int referringClinic;
int referralStatus;
String referralDate;
String referringDoctorRemarks;
String referredDoctorRemarks;
String referralResponseOn;
int priority;
int frequency;
DateTime mAXResponseTime;
String age;
String frequencyDescription;
String genderDescription;
bool isDoctorLate;
bool isDoctorResponse;
String nursingStationName;
String priorityDescription;
String referringClinicDescription;
String referringDoctorName;
MyReferredPatientModel(
{this.projectID,
MyReferredPatientModel({
this.projectId,
this.lineItemNo,
this.doctorID,
this.patientID,
this.doctorId,
this.patientId,
this.doctorName,
this.doctorNameN,
this.firstName,
@ -84,9 +29,9 @@ class MyReferredPatientModel {
this.patientType,
this.admissionNo,
this.admissionDate,
this.roomID,
this.bedID,
this.nursingStationID,
this.roomId,
this.bedId,
this.nursingStationId,
this.description,
this.nationalityName,
this.nationalityNameN,
@ -103,7 +48,8 @@ class MyReferredPatientModel {
this.referralResponseOn,
this.priority,
this.frequency,
this.mAXResponseTime,
this.maxResponseTime,
this.dischargeDate,
this.age,
this.frequencyDescription,
this.genderDescription,
@ -111,114 +57,165 @@ class MyReferredPatientModel {
this.isDoctorResponse,
this.nursingStationName,
this.priorityDescription,
this.referringClinicDescription,
this.referringDoctorName});
this.referralClinicDescription,
this.referralDoctorName,
});
MyReferredPatientModel.fromJson(Map<String, dynamic> json) {
projectID = json['ProjectID'];
lineItemNo = json['LineItemNo'];
doctorID = json['DoctorID'];
patientID = json['PatientID'];
doctorName = json['DoctorName'];
doctorNameN = json['DoctorNameN'];
firstName = json['FirstName'];
middleName = json['MiddleName'];
lastName = json['LastName'];
firstNameN = json['FirstNameN'];
middleNameN = json['MiddleNameN'];
lastNameN = json['LastNameN'];
gender = json['Gender'];
dateofBirth = json['DateofBirth'];
mobileNumber = json['MobileNumber'];
emailAddress = json['EmailAddress'];
patientIdentificationNo = json['PatientIdentificationNo'];
patientType = json['PatientType'];
admissionNo = json['AdmissionNo'];
admissionDate = json['AdmissionDate'];
roomID = json['RoomID'];
bedID = json['BedID'];
nursingStationID = json['NursingStationID'];
description = json['Description'];
nationalityName = json['NationalityName'];
nationalityNameN = json['NationalityNameN'];
clinicDescription = json['ClinicDescription'];
clinicDescriptionN = json['ClinicDescriptionN'];
referralDoctor = json['ReferralDoctor'];
referringDoctor = json['ReferringDoctor'];
referralClinic = json['ReferralClinic'];
referringClinic = json['ReferringClinic'];
referralStatus = json['ReferralStatus'];
referralDate = json['ReferralDate'];
referringDoctorRemarks = json['ReferringDoctorRemarks'];
referredDoctorRemarks = json['ReferredDoctorRemarks'];
referralResponseOn = json['ReferralResponseOn'];
priority = json['Priority'];
frequency = json['Frequency'];
mAXResponseTime = Helpers.convertStringToDate(json['MAXResponseTime']);
age = json['Age'];
frequencyDescription = json['FrequencyDescription'];
genderDescription = json['GenderDescription'];
isDoctorLate = json['IsDoctorLate'];
isDoctorResponse = json['IsDoctorResponse'];
nursingStationName = json['NursingStationName'];
priorityDescription = json['PriorityDescription'];
referringClinicDescription = json['ReferringClinicDescription'];
referringDoctorName = json['ReferringDoctorName'];
}
int projectId;
int lineItemNo;
int doctorId;
int patientId;
String doctorName;
dynamic doctorNameN;
String firstName;
String middleName;
String lastName;
dynamic firstNameN;
dynamic middleNameN;
dynamic lastNameN;
int gender;
String dateofBirth;
String mobileNumber;
String emailAddress;
String patientIdentificationNo;
int patientType;
String admissionNo;
String admissionDate;
String roomId;
String bedId;
dynamic nursingStationId;
dynamic description;
String nationalityName;
dynamic nationalityNameN;
String clinicDescription;
dynamic clinicDescriptionN;
int referralDoctor;
int referringDoctor;
int referralClinic;
int referringClinic;
int referralStatus;
String referralDate;
String referringDoctorRemarks;
String referredDoctorRemarks;
String referralResponseOn;
int priority;
int frequency;
DateTime maxResponseTime;
dynamic dischargeDate;
String age;
String frequencyDescription;
String genderDescription;
bool isDoctorLate;
bool isDoctorResponse;
String nursingStationName;
String priorityDescription;
String referralClinicDescription;
String referralDoctorName;
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['ProjectID'] = this.projectID;
data['LineItemNo'] = this.lineItemNo;
data['DoctorID'] = this.doctorID;
data['PatientID'] = this.patientID;
data['DoctorName'] = this.doctorName;
data['DoctorNameN'] = this.doctorNameN;
data['FirstName'] = this.firstName;
data['MiddleName'] = this.middleName;
data['LastName'] = this.lastName;
data['FirstNameN'] = this.firstNameN;
data['MiddleNameN'] = this.middleNameN;
data['LastNameN'] = this.lastNameN;
data['Gender'] = this.gender;
data['DateofBirth'] = this.dateofBirth;
data['MobileNumber'] = this.mobileNumber;
data['EmailAddress'] = this.emailAddress;
data['PatientIdentificationNo'] = this.patientIdentificationNo;
data['PatientType'] = this.patientType;
data['AdmissionNo'] = this.admissionNo;
data['AdmissionDate'] = this.admissionDate;
data['RoomID'] = this.roomID;
data['BedID'] = this.bedID;
data['NursingStationID'] = this.nursingStationID;
data['Description'] = this.description;
data['NationalityName'] = this.nationalityName;
data['NationalityNameN'] = this.nationalityNameN;
data['ClinicDescription'] = this.clinicDescription;
data['ClinicDescriptionN'] = this.clinicDescriptionN;
data['ReferralDoctor'] = this.referralDoctor;
data['ReferringDoctor'] = this.referringDoctor;
data['ReferralClinic'] = this.referralClinic;
data['ReferringClinic'] = this.referringClinic;
data['ReferralStatus'] = this.referralStatus;
data['ReferralDate'] = this.referralDate;
data['ReferringDoctorRemarks'] = this.referringDoctorRemarks;
data['ReferredDoctorRemarks'] = this.referredDoctorRemarks;
data['ReferralResponseOn'] = this.referralResponseOn;
data['Priority'] = this.priority;
data['Frequency'] = this.frequency;
data['MAXResponseTime'] = this.mAXResponseTime;
data['Age'] = this.age;
data['FrequencyDescription'] = this.frequencyDescription;
data['GenderDescription'] = this.genderDescription;
data['IsDoctorLate'] = this.isDoctorLate;
data['IsDoctorResponse'] = this.isDoctorResponse;
data['NursingStationName'] = this.nursingStationName;
data['PriorityDescription'] = this.priorityDescription;
data['ReferringClinicDescription'] = this.referringClinicDescription;
data['ReferringDoctorName'] = this.referringDoctorName;
return data;
}
}
factory MyReferredPatientModel.fromJson(Map<String, dynamic> json) => MyReferredPatientModel(
projectId: json["ProjectID"],
lineItemNo: json["LineItemNo"],
doctorId: json["DoctorID"],
patientId: json["PatientID"],
doctorName: json["DoctorName"],
doctorNameN: json["DoctorNameN"],
firstName: json["FirstName"],
middleName: json["MiddleName"],
lastName: json["LastName"],
firstNameN: json["FirstNameN"],
middleNameN: json["MiddleNameN"],
lastNameN: json["LastNameN"],
gender: json["Gender"],
dateofBirth: json["DateofBirth"],
mobileNumber: json["MobileNumber"],
emailAddress: json["EmailAddress"],
patientIdentificationNo: json["PatientIdentificationNo"],
patientType: json["PatientType"],
admissionNo: json["AdmissionNo"],
admissionDate: json["AdmissionDate"],
roomId: json["RoomID"],
bedId: json["BedID"],
nursingStationId: json["NursingStationID"],
description: json["Description"],
nationalityName: json["NationalityName"],
nationalityNameN: json["NationalityNameN"],
clinicDescription: json["ClinicDescription"],
clinicDescriptionN: json["ClinicDescriptionN"],
referralDoctor: json["ReferralDoctor"],
referringDoctor: json["ReferringDoctor"],
referralClinic: json["ReferralClinic"],
referringClinic: json["ReferringClinic"],
referralStatus: json["ReferralStatus"],
referralDate: json["ReferralDate"],
referringDoctorRemarks: json["ReferringDoctorRemarks"],
referredDoctorRemarks: json["ReferredDoctorRemarks"],
referralResponseOn: json["ReferralResponseOn"],
priority: json["Priority"],
frequency: json["Frequency"],
maxResponseTime: Helpers.convertStringToDate(json['MAXResponseTime']),//json["MAXResponseTime"],
dischargeDate: json["DischargeDate"],
age: json["Age"],
frequencyDescription: json["FrequencyDescription"],
genderDescription: json["GenderDescription"],
isDoctorLate: json["IsDoctorLate"],
isDoctorResponse: json["IsDoctorResponse"],
nursingStationName: json["NursingStationName"],
priorityDescription: json["PriorityDescription"],
referralClinicDescription: json["ReferralClinicDescription"],
referralDoctorName: json["ReferralDoctorName"],
);
Map<String, dynamic> toJson() => {
"ProjectID": projectId,
"LineItemNo": lineItemNo,
"DoctorID": doctorId,
"PatientID": patientId,
"DoctorName": doctorName,
"DoctorNameN": doctorNameN,
"FirstName": firstName,
"MiddleName": middleName,
"LastName": lastName,
"FirstNameN": firstNameN,
"MiddleNameN": middleNameN,
"LastNameN": lastNameN,
"Gender": gender,
"DateofBirth": dateofBirth,
"MobileNumber": mobileNumber,
"EmailAddress": emailAddress,
"PatientIdentificationNo": patientIdentificationNo,
"PatientType": patientType,
"AdmissionNo": admissionNo,
"AdmissionDate": admissionDate,
"RoomID": roomId,
"BedID": bedId,
"NursingStationID": nursingStationId,
"Description": description,
"NationalityName": nationalityName,
"NationalityNameN": nationalityNameN,
"ClinicDescription": clinicDescription,
"ClinicDescriptionN": clinicDescriptionN,
"ReferralDoctor": referralDoctor,
"ReferringDoctor": referringDoctor,
"ReferralClinic": referralClinic,
"ReferringClinic": referringClinic,
"ReferralStatus": referralStatus,
"ReferralDate": referralDate,
"ReferringDoctorRemarks": referringDoctorRemarks,
"ReferredDoctorRemarks": referredDoctorRemarks,
"ReferralResponseOn": referralResponseOn,
"Priority": priority,
"Frequency": frequency,
"MAXResponseTime": maxResponseTime,
"DischargeDate": dischargeDate,
"Age": age,
"FrequencyDescription": frequencyDescription,
"GenderDescription": genderDescription,
"IsDoctorLate": isDoctorLate,
"IsDoctorResponse": isDoctorResponse,
"NursingStationName": nursingStationName,
"PriorityDescription": priorityDescription,
"ReferralClinicDescription": referralClinicDescription,
"ReferralDoctorName": referralDoctorName,
};
}

@ -5,6 +5,8 @@
*@return:LabOrdersResModel
*@desc: LabOrdersResModel class
*/
import 'package:doctor_app_flutter/util/helpers.dart';
class LabOrdersResModel {
String setupID;
int projectID;
@ -19,7 +21,7 @@ class LabOrdersResModel {
int status;
String createdBy;
Null createdByN;
String createdOn;
DateTime createdOn;
String editedBy;
Null editedByN;
String editedOn;
@ -65,7 +67,7 @@ class LabOrdersResModel {
status = json['Status'];
createdBy = json['CreatedBy'];
createdByN = json['CreatedByN'];
createdOn = json['CreatedOn'];
createdOn = Helpers.convertStringToDate(json['CreatedOn']);
editedBy = json['EditedBy'];
editedByN = json['EditedByN'];
editedOn = json['EditedOn'];

@ -0,0 +1,124 @@
class LabResult {
String setupID;
int projectID;
int orderNo;
int lineItemNo;
int packageID;
int testID;
String description;
String resultValue;
String referenceRange;
Null convertedResultValue;
Null convertedReferenceRange;
Null resultValueFlag;
int status;
String createdBy;
Null createdByN;
String createdOn;
String editedBy;
Null editedByN;
String editedOn;
String verifiedBy;
Null verifiedByN;
String verifiedOn;
Null patientID;
int gender;
Null maleInterpretativeData;
Null femaleInterpretativeData;
String testCode;
String statusDescription;
LabResult(
{this.setupID,
this.projectID,
this.orderNo,
this.lineItemNo,
this.packageID,
this.testID,
this.description,
this.resultValue,
this.referenceRange,
this.convertedResultValue,
this.convertedReferenceRange,
this.resultValueFlag,
this.status,
this.createdBy,
this.createdByN,
this.createdOn,
this.editedBy,
this.editedByN,
this.editedOn,
this.verifiedBy,
this.verifiedByN,
this.verifiedOn,
this.patientID,
this.gender,
this.maleInterpretativeData,
this.femaleInterpretativeData,
this.testCode,
this.statusDescription});
LabResult.fromJson(Map<String, dynamic> json) {
setupID = json['SetupID'];
projectID = json['ProjectID'];
orderNo = json['OrderNo'];
lineItemNo = json['LineItemNo'];
packageID = json['PackageID'];
testID = json['TestID'];
description = json['Description'];
resultValue = json['ResultValue'];
referenceRange = json['ReferenceRange'];
convertedResultValue = json['ConvertedResultValue'];
convertedReferenceRange = json['ConvertedReferenceRange'];
resultValueFlag = json['ResultValueFlag'];
status = json['Status'];
createdBy = json['CreatedBy'];
createdByN = json['CreatedByN'];
createdOn = json['CreatedOn'];
editedBy = json['EditedBy'];
editedByN = json['EditedByN'];
editedOn = json['EditedOn'];
verifiedBy = json['VerifiedBy'];
verifiedByN = json['VerifiedByN'];
verifiedOn = json['VerifiedOn'];
patientID = json['PatientID'];
gender = json['Gender'];
maleInterpretativeData = json['MaleInterpretativeData'];
femaleInterpretativeData = json['FemaleInterpretativeData'];
testCode = json['TestCode'];
statusDescription = json['StatusDescription'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['SetupID'] = this.setupID;
data['ProjectID'] = this.projectID;
data['OrderNo'] = this.orderNo;
data['LineItemNo'] = this.lineItemNo;
data['PackageID'] = this.packageID;
data['TestID'] = this.testID;
data['Description'] = this.description;
data['ResultValue'] = this.resultValue;
data['ReferenceRange'] = this.referenceRange;
data['ConvertedResultValue'] = this.convertedResultValue;
data['ConvertedReferenceRange'] = this.convertedReferenceRange;
data['ResultValueFlag'] = this.resultValueFlag;
data['Status'] = this.status;
data['CreatedBy'] = this.createdBy;
data['CreatedByN'] = this.createdByN;
data['CreatedOn'] = this.createdOn;
data['EditedBy'] = this.editedBy;
data['EditedByN'] = this.editedByN;
data['EditedOn'] = this.editedOn;
data['VerifiedBy'] = this.verifiedBy;
data['VerifiedByN'] = this.verifiedByN;
data['VerifiedOn'] = this.verifiedOn;
data['PatientID'] = this.patientID;
data['Gender'] = this.gender;
data['MaleInterpretativeData'] = this.maleInterpretativeData;
data['FemaleInterpretativeData'] = this.femaleInterpretativeData;
data['TestCode'] = this.testCode;
data['StatusDescription'] = this.statusDescription;
return data;
}
}

@ -0,0 +1,68 @@
class RequestLabResult {
int projectID;
String setupID;
int orderNo;
int invoiceNo;
int patientTypeID;
int languageID;
String stamp;
String iPAdress;
double versionID;
int channel;
String tokenID;
String sessionID;
bool isLoginForDoctorApp;
bool patientOutSA;
RequestLabResult(
{this.projectID,
this.setupID,
this.orderNo,
this.invoiceNo,
this.patientTypeID,
this.languageID,
this.stamp,
this.iPAdress,
this.versionID,
this.channel,
this.tokenID,
this.sessionID,
this.isLoginForDoctorApp,
this.patientOutSA});
RequestLabResult.fromJson(Map<String, dynamic> json) {
projectID = json['ProjectID'];
setupID = json['SetupID'];
orderNo = json['OrderNo'];
invoiceNo = json['InvoiceNo'];
patientTypeID = json['PatientTypeID'];
languageID = json['LanguageID'];
stamp = json['stamp'];
iPAdress = json['IPAdress'];
versionID = json['VersionID'];
channel = json['Channel'];
tokenID = json['TokenID'];
sessionID = json['SessionID'];
isLoginForDoctorApp = json['IsLoginForDoctorApp'];
patientOutSA = json['PatientOutSA'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['ProjectID'] = this.projectID;
data['SetupID'] = this.setupID;
data['OrderNo'] = this.orderNo;
data['InvoiceNo'] = this.invoiceNo;
data['PatientTypeID'] = this.patientTypeID;
data['LanguageID'] = this.languageID;
data['stamp'] = this.stamp;
data['IPAdress'] = this.iPAdress;
data['VersionID'] = this.versionID;
data['Channel'] = this.channel;
data['TokenID'] = this.tokenID;
data['SessionID'] = this.sessionID;
data['IsLoginForDoctorApp'] = this.isLoginForDoctorApp;
data['PatientOutSA'] = this.patientOutSA;
return data;
}
}

@ -5,6 +5,8 @@
*@return:VitalSignResModel
*@desc: VitalSignResModel class
*/
import 'package:doctor_app_flutter/util/helpers.dart';
class VitalSignResModel {
var transNo;
var projectID;
@ -42,7 +44,7 @@ class VitalSignResModel {
var triageCategory;
var gCScore;
var lineItemNo;
var vitalSignDate;
DateTime vitalSignDate;
var actualTimeTaken;
var sugarLevel;
var fBS;
@ -168,7 +170,7 @@ class VitalSignResModel {
triageCategory = json['TriageCategory'];
gCScore = json['GCScore'];
lineItemNo = json['LineItemNo'];
vitalSignDate = json['VitalSignDate'];
vitalSignDate = Helpers.convertStringToDate(json['VitalSignDate']);
actualTimeTaken = json['ActualTimeTaken'];
sugarLevel = json['SugarLevel'];
fBS = json['FBS'];

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

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

@ -17,6 +17,7 @@ class RequestAddReferredDoctorRemarks {
String sessionID;
bool isLoginForDoctorApp;
bool patientOutSA;
RequestAddReferredDoctorRemarks(
{this.projectID,

@ -0,0 +1,103 @@
import 'package:doctor_app_flutter/config/config.dart';
class VerifyReferralDoctorRemarks {
int projectID;
String admissionNo;
int lineItemNo;
String referredDoctorRemarks;
int editedBy;
int patientID;
int referringDoctor;
int languageID;
String stamp;
String iPAdress;
double versionID;
int channel;
String tokenID;
String sessionID;
bool isLoginForDoctorApp;
bool patientOutSA;
String firstName;
String middleName;
String lastName;
String patientMobileNumber;
String patientIdentificationID;
VerifyReferralDoctorRemarks(
{this.projectID,
this.admissionNo,
this.lineItemNo,
this.referredDoctorRemarks,
this.editedBy,
this.patientID,
this.referringDoctor,
this.languageID = LANGUAGE_ID,
this.stamp = STAMP,
this.iPAdress = IP_ADDRESS,
this.versionID = VERSION_ID,
this.channel= CHANNEL,
this.tokenID,
this.sessionID = SESSION_ID,
this.isLoginForDoctorApp = IS_LOGIN_FOR_DOCTOR_APP,
this.patientOutSA = PATIENT_OUT_SA,
this.firstName,
this.middleName,
this.lastName,
this.patientMobileNumber,
this.patientIdentificationID,
});
VerifyReferralDoctorRemarks.fromJson(Map<String, dynamic> json) {
projectID = json['ProjectID'];
admissionNo = json['AdmissionNo'];
lineItemNo = json['LineItemNo'];
referredDoctorRemarks = json['ReferredDoctorRemarks'];
editedBy = json['EditedBy'];
patientID = json['PatientID'];
referringDoctor = json['ReferringDoctor'];
languageID = json['LanguageID'];
stamp = json['stamp'];
iPAdress = json['IPAdress'];
versionID = json['VersionID'];
channel = json['Channel'];
tokenID = json['TokenID'];
sessionID = json['SessionID'];
isLoginForDoctorApp = json['IsLoginForDoctorApp'];
patientOutSA = json['PatientOutSA'];
firstName= json["FirstName"];
middleName= json["MiddleName"];
lastName= json["LastName"];
patientMobileNumber= json["PatientMobileNumber"];
patientIdentificationID = json["PatientIdentificationID"];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['ProjectID'] = this.projectID;
data['AdmissionNo'] = this.admissionNo;
data['LineItemNo'] = this.lineItemNo;
data['ReferredDoctorRemarks'] = this.referredDoctorRemarks;
data['EditedBy'] = this.editedBy;
data['PatientID'] = this.patientID;
data['ReferringDoctor'] = this.referringDoctor;
data['LanguageID'] = this.languageID;
data['stamp'] = this.stamp;
data['IPAdress'] = this.iPAdress;
data['VersionID'] = this.versionID;
data['Channel'] = this.channel;
data['TokenID'] = this.tokenID;
data['SessionID'] = this.sessionID;
data['IsLoginForDoctorApp'] = this.isLoginForDoctorApp;
data['PatientOutSA'] = this.patientOutSA;
data['FirstName'] = this.firstName;
data['MiddleName'] = this.middleName;
data['LastName'] = this.lastName;
data['PatientMobileNumber'] = this.patientMobileNumber;
data['PatientIdentificationID'] = this.patientIdentificationID;
return data;
}
}

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

@ -1,7 +1,10 @@
import 'dart:convert';
import 'package:doctor_app_flutter/client/app_client.dart';
import 'package:doctor_app_flutter/client/base_app_client.dart';
import 'package:doctor_app_flutter/models/patient/lab_orders_res_model.dart';
import 'package:doctor_app_flutter/models/patient/lab_result.dart';
import 'package:doctor_app_flutter/models/patient/lab_result_req_model.dart';
import 'package:doctor_app_flutter/models/patient/patiant_info_model.dart';
import 'package:doctor_app_flutter/models/patient/prescription_res_model.dart';
import 'package:doctor_app_flutter/models/patient/radiology_res_model.dart';
@ -27,14 +30,24 @@ class PatientsProvider with ChangeNotifier {
bool isError = false;
String error = '';
List<VitalSignResModel> patientVitalSignList = [];
List<VitalSignResModel> patientVitalSignOrderdSubList = [];
List<LabOrdersResModel> patientLabResultOrdersList = [];
List<PrescriptionResModel> patientPrescriptionsList = [];
List<RadiologyResModel> patientRadiologyList = [];
/*@author: ibrahe albitar
*@Date:2/6/2020
*@desc: getPatientPrescriptions
*/
List<LabResult> labResultList = [];
var patientProgressNoteList = [];
var insuranceApporvalsList = [];
Client client =
HttpClientWithInterceptor.build(interceptors: [HttpInterceptor()]);
HttpClientWithInterceptor.build(interceptors: [HttpInterceptor()]);
PatiantInformtion _selectedPatient;
@ -89,9 +102,9 @@ class PatientsProvider with ChangeNotifier {
notifyListeners();
}
/*
*@author: Elham Rababah
*@Date:27/4/2020
/*
*@author: Elham Rababah
*@Date:27/4/2020
*@param: patient
*@return:
*@desc: getPatientVitalSign
@ -117,7 +130,21 @@ class PatientsProvider with ChangeNotifier {
res['List_DoctorPatientVitalSign'].forEach((v) {
patientVitalSignList.add(new VitalSignResModel.fromJson(v));
});
// patientVitalSignList = res['List_DoctorPatientVitalSign'];
if (patientVitalSignList.length > 0) {
List<VitalSignResModel> patientVitalSignOrderdSubListTemp = [];
patientVitalSignOrderdSubListTemp = patientVitalSignList;
patientVitalSignOrderdSubListTemp
.sort((VitalSignResModel a, VitalSignResModel b) {
return b.vitalSignDate.microsecondsSinceEpoch -
a.vitalSignDate.microsecondsSinceEpoch;
});
patientVitalSignOrderdSubList.clear();
for (int x = 0; x < 20; x++) {
patientVitalSignOrderdSubList
.add(patientVitalSignOrderdSubListTemp[x]);
}
}
} else {
isError = true;
error = res['ErrorMessage'] ?? res['ErrorEndUserMessage'];
@ -134,8 +161,8 @@ class PatientsProvider with ChangeNotifier {
}
}
/*@author: Elham Rababah
*@Date:27/4/2020
/*@author: Elham Rababah
*@Date:27/4/2020
*@param: patient
*@return:
*@desc: getLabResult Orders
@ -179,8 +206,8 @@ class PatientsProvider with ChangeNotifier {
}
}
/*@author: Elham Rababah
*@Date:3/5/2020
/*@author: Elham Rababah
*@Date:3/5/2020
*@param: patient
*@return:
*@desc: getPatientPrescriptions
@ -193,7 +220,7 @@ class PatientsProvider with ChangeNotifier {
try {
if (await Helpers.checkConnection()) {
final response =
await AppClient.post(GET_PRESCRIPTION, body: json.encode(patient));
await AppClient.post(GET_PRESCRIPTION, body: json.encode(patient));
final int statusCode = response.statusCode;
isLoading = false;
@ -225,8 +252,8 @@ class PatientsProvider with ChangeNotifier {
}
}
/*@author: Elham Rababah
*@Date:12/5/2020
/*@author: Elham Rababah
*@Date:12/5/2020
*@param: patient
*@return:
*@desc: getPatientRadiology
@ -239,8 +266,8 @@ class PatientsProvider with ChangeNotifier {
throw err;
}
/*@author: Elham Rababah
*@Date:3/5/2020
/*@author: Elham Rababah
*@Date:3/5/2020
*@param: patient
*@return:
*@desc: getPatientRadiology
@ -252,7 +279,7 @@ class PatientsProvider with ChangeNotifier {
try {
if (await Helpers.checkConnection()) {
final response =
await AppClient.post(GET_RADIOLOGY, body: json.encode(patient));
await AppClient.post(GET_RADIOLOGY, body: json.encode(patient));
final int statusCode = response.statusCode;
isLoading = false;
@ -284,11 +311,38 @@ class PatientsProvider with ChangeNotifier {
}
getPatientProgressNote(patient) async{
getLabResult(LabOrdersResModel labOrdersResModel) async {
labResultList.clear();
isLoading = true;
notifyListeners();
RequestLabResult requestLabResult = RequestLabResult();
requestLabResult.sessionID = labOrdersResModel.setupID;
requestLabResult.orderNo = labOrdersResModel.orderNo;
requestLabResult.invoiceNo = labOrdersResModel.invoiceNo;
requestLabResult.patientTypeID = labOrdersResModel.patientType;
await BaseAppClient.post(
'DoctorApplication.svc/REST/GetPatientLabResults',
onSuccess: (dynamic response, int statusCode) {
isError = false;
isLoading = false;
response['List_GetLabNormal'].forEach((v) {
labResultList.add(new LabResult.fromJson(v));
});
}, onFailure: (String error, int statusCode) {
isError = true;
isLoading = false;
this.error = error;
}, body: requestLabResult.toJson());
notifyListeners();
}
getPatientInsuranceApprovals(patient) async {
setBasicData();
try {
if (await Helpers.checkConnection()) {
final response =await AppClient.post(PATIENT_PROGRESS_NOTE_URL, body: json.encode(patient));
final response = await AppClient.post(
PATIENT_INSURANCE_APPROVALS_URL, body: json.encode(patient));
final int statusCode = response.statusCode;
isLoading = false;
@ -299,7 +353,8 @@ class PatientsProvider with ChangeNotifier {
var res = json.decode(response.body);
print('$res');
if (res['MessageStatus'] == 1) {
patientProgressNoteList = res['List_GetPregressNoteForInPatient'];
//patientRadiologyList = [];
insuranceApporvalsList = res['List_ApprovalMain_InPatient'];
} else {
isError = true;
error = res['ErrorMessage'] ?? res['ErrorEndUserMessage'];
@ -316,38 +371,44 @@ class PatientsProvider with ChangeNotifier {
}
}
getPatientInsuranceApprovals(patient) async{
setBasicData();
try {
if (await Helpers.checkConnection()) {
final response =await AppClient.post(PATIENT_INSURANCE_APPROVALS_URL, body: json.encode(patient));
final int statusCode = response.statusCode;
isLoading = false;
/*@author: ibrahe albitar
*@Date:2/6/2020
*@desc: getPatientPrescriptions
*/
getPatientProgressNote(patient) async {
setBasicData();
try {
if (await Helpers.checkConnection()) {
final response = await AppClient.post(PATIENT_PROGRESS_NOTE_URL,
body: json.encode(patient));
final int statusCode = response.statusCode;
isLoading = false;
if (statusCode < 200 || statusCode >= 400 || json == null) {
isError = true;
error = 'Error While Fetching data';
} else {
var res = json.decode(response.body);
print('$res');
if (res['MessageStatus'] == 1) {
//patientRadiologyList = [];
insuranceApporvalsList = res['List_ApprovalMain_InPatient'];
} else {
if (statusCode < 200 || statusCode >= 400 || json == null) {
isError = true;
error = res['ErrorMessage'] ?? res['ErrorEndUserMessage'];
error = 'Error While Fetching data';
} else {
var res = json.decode(response.body);
print('$res');
if (res['MessageStatus'] == 1) {
patientProgressNoteList = res['List_GetPregressNoteForInPatient'];
} else {
isError = true;
error = res['ErrorMessage'] ?? res['ErrorEndUserMessage'];
}
}
} else {
isLoading = false;
isError = true;
error = 'Please Check The Internet Connection';
}
} else {
isLoading = false;
isError = true;
error = 'Please Check The Internet Connection';
notifyListeners();
} catch (err) {
handelCatchErrorCase(err);
}
notifyListeners();
} catch (err) {
handelCatchErrorCase(err);
}
}
}

@ -1,22 +1,23 @@
import 'package:doctor_app_flutter/client/base_app_client.dart';
import 'package:doctor_app_flutter/models/my_referral_patient_model.dart';
//import 'package:doctor_app_flutter/models/my_referral_patient_model.dart';
import 'package:doctor_app_flutter/models/my_referred_patient_model.dart';
//import 'package:doctor_app_flutter/models/my_referred_patient_model.dart';
import 'package:doctor_app_flutter/models/request_add_referred_doctor_remarks.dart';
//import 'package:doctor_app_flutter/models/request_add_referred_doctor_remarks.dart';
import 'package:doctor_app_flutter/models/request_my_referral_patient_model.dart';
import 'package:doctor_app_flutter/models/verify_referral_doctor_remarks.dart';
import 'package:flutter/cupertino.dart';
class MyReferredPatientProvider with ChangeNotifier {
List<MyReferredPatientModel> listMyReferralPatientModel = [];
List<MyReferredPatientModel> listMyReferredPatientModel = [];
bool isLoading = true;
bool isError = false;
String error = '';
RequestMyReferralPatientModel _requestMyReferralPatient = RequestMyReferralPatientModel();
RequestAddReferredDoctorRemarks _requestAddReferredDoctorRemarks = RequestAddReferredDoctorRemarks();
// RequestAddReferredDoctorRemarks _requestAddReferredDoctorRemarks = RequestAddReferredDoctorRemarks();
VerifyReferralDoctorRemarks _verifyreferraldoctorremarks = VerifyReferralDoctorRemarks();
MyReferredPatientProvider() {
getMyReferralPatient();
}
@ -24,11 +25,11 @@ class MyReferredPatientProvider with ChangeNotifier {
getMyReferralPatient() async {
try {
await BaseAppClient.post(
'DoctorApplication.svc/REST/GtMyReferralPatient',
'DoctorApplication.svc/REST/GtMyReferredPatient',
body: _requestMyReferralPatient.toJson(),
onSuccess: (dynamic response, int statusCode) {
response['List_MyReferralPatient'].forEach((v) {
listMyReferralPatientModel.add(MyReferredPatientModel.fromJson(v));
response['List_MyReferredPatient'].forEach((v) {
listMyReferredPatientModel.add(MyReferredPatientModel.fromJson(v));
});
isError = false;
isLoading = false;
@ -48,22 +49,40 @@ class MyReferredPatientProvider with ChangeNotifier {
}
}
// Future replay(
// String referredDoctorRemarks, MyReferredPatientModel model) async {
Future replay(
String referredDoctorRemarks, MyReferredPatientModel model) async {
MyReferredPatientModel model) async {
try {
_requestAddReferredDoctorRemarks.admissionNo = model.admissionNo;
_requestAddReferredDoctorRemarks.patientID = model.patientID;
_requestAddReferredDoctorRemarks.referredDoctorRemarks = referredDoctorRemarks;
_requestAddReferredDoctorRemarks.lineItemNo = model.lineItemNo;
_requestAddReferredDoctorRemarks.referringDoctor = model.referringDoctor;
_verifyreferraldoctorremarks.patientID=model.projectId;
_verifyreferraldoctorremarks.admissionNo =model.admissionNo;
_verifyreferraldoctorremarks.lineItemNo = model.lineItemNo;
_verifyreferraldoctorremarks.referredDoctorRemarks=model.referredDoctorRemarks;
_verifyreferraldoctorremarks.referringDoctor=model.referringDoctor;
_verifyreferraldoctorremarks.firstName=model.firstName;
_verifyreferraldoctorremarks.middleName=model.middleName;
_verifyreferraldoctorremarks.lastName=model.lastName;
_verifyreferraldoctorremarks.patientMobileNumber=model.mobileNumber;
_verifyreferraldoctorremarks.patientIdentificationID=model.patientIdentificationNo;
await BaseAppClient.post(
'DoctorApplication.svc/REST/GtMyReferredPatient',
body: _requestAddReferredDoctorRemarks.toJson(),
body: _verifyreferraldoctorremarks.toJson(),//_requestAddReferredDoctorRemarks.toJson(),
onSuccess: (dynamic body, int statusCode) {
model.referredDoctorRemarks = referredDoctorRemarks;
listMyReferralPatientModel[
listMyReferralPatientModel.indexOf(model)] = model;
listMyReferredPatientModel[
listMyReferredPatientModel.indexOf(model)] = model;
notifyListeners();
},
onFailure: (String error, int statusCode) {

@ -11,7 +11,7 @@ import 'package:provider/provider.dart';
import '../../widgets/shared/app_scaffold_widget.dart';
class MyReferredPatient extends StatelessWidget {
MyReferredPatientProvider referredPatientProvider;
@override
@ -24,44 +24,45 @@ class MyReferredPatient extends StatelessWidget {
body: referredPatientProvider.isLoading
? DrAppCircularProgressIndeicator()
: referredPatientProvider.isError
? Center(
child: AppText(
referredPatientProvider.error,
color: Theme.of(context).errorColor,
? Center(
child: AppText(
referredPatientProvider.error,
color: Theme.of(context).errorColor,
),
)
: referredPatientProvider.listMyReferredPatientModel.length == 0
? Center(
child: AppText(
TranslationBase.of(context).errorNoSchedule,
color: Theme.of(context).errorColor,
),
)
: Container(
padding: EdgeInsetsDirectional.fromSTEB(20, 0, 20, 0),
child: ListView(
children: <Widget>[
Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
SizedBox(
height: 10,
),
Container(
child: Column(
//children: referredPatientProvider.listMyReferralPatientModel.map((item) {
children: referredPatientProvider.listMyReferredPatientModel.map((item) {
return MyReferredPatientWidget(
myReferredPatientModel: item,
);
}).toList(),
),
)
: referredPatientProvider.listMyReferralPatientModel.length == 0
? Center(
child: AppText(
TranslationBase.of(context).errorNoSchedule,
color: Theme.of(context).errorColor,
),
)
: Container(
padding: EdgeInsetsDirectional.fromSTEB(20, 0, 20, 0),
child: ListView(
children: <Widget>[
Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
SizedBox(
height: 10,
),
Container(
child: Column(
children: referredPatientProvider.listMyReferralPatientModel.map((item) {
return MyReferredPatientWidget(
myReferredPatientModel: item,
);
}).toList(),
),
),
],
),
],
),
),
),
],
),
],
),
),
);
}
}
}

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

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

@ -58,9 +58,8 @@ class _PatientSearchScreenState extends State<PatientSearchScreen> {
PatientOutSA: false);
void _validateInputs() async {
print("============== _selectedType============"+ _selectedType);
if(_selectedType!='3')
{
//print("============== _selectedType============"+ _selectedType);
try {
//====================
@ -102,15 +101,7 @@ print("============== _selectedType============"+ _selectedType);
} catch (err) {
handelCatchErrorCase(err);
}
}
else
{
Navigator.of(context).pushNamed(PATIENTS_REFERRED, arguments: {
"patientSearchForm": _patientSearchFormValues,
"selectedType": _selectedType
});
}
}
handelCatchErrorCase(err) {

@ -1,4 +1,8 @@
import 'package:doctor_app_flutter/util/helpers.dart';
import 'package:doctor_app_flutter/widgets/patients/profile/large_avatar.dart';
import 'package:doctor_app_flutter/widgets/shared/card_with_bgNew_widget.dart';
import 'package:doctor_app_flutter/widgets/shared/errors/dr_app_embedded_error.dart';
import 'package:eva_icons_flutter/eva_icons_flutter.dart';
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
@ -13,6 +17,7 @@ import '../../../../widgets/shared/app_texts_widget.dart';
import '../../../../widgets/shared/card_with_bg_widget.dart';
import '../../../../widgets/shared/dr_app_circular_progress_Indeicator.dart';
import '../../../../widgets/shared/profile_image_widget.dart';
import 'lab_result_secreen.dart';
DrAppSharedPreferances sharedPref = new DrAppSharedPreferances();
@ -44,12 +49,6 @@ class _LabOrdersScreenState extends State<LabOrdersScreen> {
final routeArgs = ModalRoute.of(context).settings.arguments as Map;
PatiantInformtion patient = routeArgs['patient'];
String token = await sharedPref.getString(TOKEN);
// String type = await sharedPref.getString(SLECTED_PATIENT_TYPE);
// int inOutpatientType = 1;
// if (type == '0') {
// inOutpatientType = 2;
// }
// print(type);
LabOrdersReqModel labOrdersReqModel = LabOrdersReqModel(
patientID: patient.patientId,
projectID: patient.projectId,
@ -88,61 +87,150 @@ class _LabOrdersScreenState extends State<LabOrdersScreen> {
0,
SizeConfig.realScreenWidth * 0.05,
0),
child: ListView.builder(
itemCount:
patientsProv.patientLabResultOrdersList.length,
itemBuilder: (BuildContext ctxt, int index) {
return InkWell(
child: CardWithBgWidget(
widget: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Row(
children: <Widget>[
ProfileImageWidget(
child: Container(
margin: EdgeInsets.symmetric(vertical: 10),
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.all(
Radius.circular(20.0),
),
),
child: ListView.builder(
itemCount:
patientsProv.patientLabResultOrdersList.length,
itemBuilder: (BuildContext context, int index) {
return InkWell(
onTap: () {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => LabResult(
labOrders: patientsProv
.patientLabResultOrdersList[index],
),
),
);
},
child: Container(
padding: EdgeInsets.all(10),
margin: EdgeInsets.all(10),
decoration: BoxDecoration(
borderRadius:
BorderRadius.all(Radius.circular(10)),
border: Border(
bottom: BorderSide(
color: Colors.grey, width: 0.5),
top: BorderSide(
color: Colors.grey, width: 0.5),
left: BorderSide(
color: Colors.grey, width: 0.5),
right: BorderSide(
color: Colors.grey, width: 0.5),
),
),
child: Column(
crossAxisAlignment:
CrossAxisAlignment.start,
children: <Widget>[
Row(
children: <Widget>[
LargeAvatar(
url: patientsProv
.patientLabResultOrdersList[
index]
.doctorImageURL),
Expanded(
child: Padding(
padding: const EdgeInsets.fromLTRB(
8, 0, 0, 0),
child: Column(
crossAxisAlignment:
CrossAxisAlignment.start,
children: <Widget>[
AppText(
'${patientsProv.patientLabResultOrdersList[index].doctorName}',
fontSize: 2.5 *
SizeConfig.textMultiplier,
fontWeight: FontWeight.bold,
),
SizedBox(
height: 8,
),
AppText(
' ${patientsProv.patientLabResultOrdersList[index].clinicName}',
fontSize: 2 *
SizeConfig.textMultiplier,
color: Theme.of(context)
.primaryColor,
),
SizedBox(
height: 8,
),
],
.doctorImageURL,
name: patientsProv
.patientLabResultOrdersList[
index]
.doctorName,
),
Expanded(
child: Padding(
padding:
const EdgeInsets.fromLTRB(
8, 0, 0, 0),
child: Column(
crossAxisAlignment:
CrossAxisAlignment.start,
children: <Widget>[
AppText(
'${patientsProv.patientLabResultOrdersList[index].doctorName}',
fontSize: 1.7 *
SizeConfig
.textMultiplier,
fontWeight: FontWeight.w600,
),
SizedBox(
height: 8,
),
AppText(
' ${patientsProv.patientLabResultOrdersList[index].projectName}',
fontSize: 2 *
SizeConfig
.textMultiplier,
color: Colors.grey[800]),
SizedBox(
height: 8,
),
Row(
mainAxisAlignment:
MainAxisAlignment.start,
children: <Widget>[
AppText(
' Invoice No :',
fontSize: 2 *
SizeConfig
.textMultiplier,
color: Colors.grey[800],
),
AppText(
' ${patientsProv.patientLabResultOrdersList[index].invoiceNo}',
fontSize: 2 *
SizeConfig
.textMultiplier,
color: Colors.grey[800],
),
],
)
],
),
),
)
],
),
SizedBox(
height: 3,
),
Divider(
color: Colors.grey,
),
SizedBox(
height: 3,
),
Row(
children: <Widget>[
Icon(
EvaIcons.calendar,
color: Colors.grey[700],
),
)
],
),
],
SizedBox(
width: 10,
),
Expanded(
child: AppText(
'${Helpers.getDate(patientsProv.patientLabResultOrdersList[index].createdOn)}',
fontSize: 2.0 *
SizeConfig.textMultiplier,
),
)
],
)
],
),
),
),
onTap: () {},
);
}),
);
}),
),
),
);
}

@ -0,0 +1,86 @@
import 'package:doctor_app_flutter/config/size_config.dart';
import 'package:doctor_app_flutter/models/patient/lab_orders_res_model.dart';
import 'package:doctor_app_flutter/providers/patients_provider.dart';
import 'package:doctor_app_flutter/util/helpers.dart';
import 'package:doctor_app_flutter/widgets/doctor/lab_result_widget.dart';
import 'package:doctor_app_flutter/widgets/shared/app_scaffold_widget.dart';
import 'package:doctor_app_flutter/widgets/shared/app_texts_widget.dart';
import 'package:doctor_app_flutter/widgets/shared/card_with_bgNew_widget.dart';
import 'package:doctor_app_flutter/widgets/shared/dr_app_circular_progress_Indeicator.dart';
import 'package:doctor_app_flutter/widgets/shared/errors/dr_app_embedded_error.dart';
import 'package:eva_icons_flutter/eva_icons_flutter.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
class LabResult extends StatefulWidget {
final LabOrdersResModel labOrders;
LabResult({Key key, this.labOrders});
@override
_LabResultState createState() => _LabResultState();
}
class _LabResultState extends State<LabResult> {
PatientsProvider patientsProv;
bool _isInit = true;
@override
void didChangeDependencies() {
super.didChangeDependencies();
if (_isInit) {
patientsProv = Provider.of<PatientsProvider>(context);
patientsProv.getLabResult(widget.labOrders);
// getLabResultOrders(context);
}
_isInit = false;
}
@override
Widget build(BuildContext context) {
return AppScaffold(
appBarTitle: "Lab Orders",
showAppDrawer: false,
showBottomBar: false,
body: patientsProv.isLoading
? DrAppCircularProgressIndeicator()
: patientsProv.isError
? DrAppEmbeddedError(error: patientsProv.error)
: patientsProv.labResultList.length == 0
? DrAppEmbeddedError(error: 'You don\'t have any Orders')
: Container(
margin: EdgeInsets.fromLTRB(
SizeConfig.realScreenWidth * 0.05,
0,
SizeConfig.realScreenWidth * 0.05,
0),
child: ListView(
children: <Widget>[
CardWithBgWidgetNew(
widget: Row(
mainAxisAlignment:
MainAxisAlignment.start,
children: <Widget>[
AppText(
' Invoice No :',
fontSize:
2 * SizeConfig.textMultiplier,
color: Colors.grey[800],
),
AppText(
' ${widget.labOrders.invoiceNo}',
fontSize:
2 * SizeConfig.textMultiplier,
color: Colors.grey[800],
),
],
),
),
CardWithBgWidgetNew(widget: LabResultWidget(labResult: patientsProv.labResultList,))
],
),
),
);
}
}

@ -1,3 +1,6 @@
import 'package:doctor_app_flutter/widgets/patients/profile/large_avatar.dart';
import 'package:doctor_app_flutter/widgets/shared/card_with_bgNew_widget.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
@ -92,42 +95,34 @@ class _PrescriptionScreenState extends State<PrescriptionScreen> {
child: ListView.builder(
itemCount:
patientsProv.patientPrescriptionsList.length,
itemBuilder: (BuildContext ctxt, int index) {
itemBuilder: (BuildContext context, int index) {
return InkWell(
child: CardWithBgWidget(
child: CardWithBgWidgetNew(
widget: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Row(
children: <Widget>[
ProfileImageWidget(
url: patientsProv
.patientPrescriptionsList[index]
.doctorImageURL),
LargeAvatar(
url: patientsProv.patientPrescriptionsList[index].doctorImageURL,name:patientsProv.patientPrescriptionsList[index].doctorName ,radius: 10,width: 70,),
Expanded(
child: Padding(
padding: const EdgeInsets.fromLTRB(
8, 0, 0, 0),
child: Container(
margin: EdgeInsets.only(left: 15,right: 15),
child: Column(
crossAxisAlignment:
CrossAxisAlignment.start,
CrossAxisAlignment.start,
children: <Widget>[
AppText(
'${patientsProv.patientPrescriptionsList[index].doctorName}',
fontSize: 2.5 *
SizeConfig.textMultiplier,
fontWeight: FontWeight.bold,
'${patientsProv.patientPrescriptionsList[index].name}',
fontSize: 2.5 * SizeConfig.textMultiplier,
),
SizedBox(
height: 8,
),
AppText(
' ${patientsProv.patientPrescriptionsList[index].clinicDescription}',
fontSize: 2 *
SizeConfig
.textMultiplier,
color: Theme.of(context)
.primaryColor),
fontSize: 2.5 * SizeConfig.textMultiplier,
color: Theme.of(context).primaryColor),
SizedBox(
height: 8,
),

@ -1,143 +1,180 @@
import 'package:charts_flutter/flutter.dart' as charts;
import 'package:doctor_app_flutter/config/size_config.dart';
import 'package:doctor_app_flutter/lookups/patient_lookup.dart';
import 'package:doctor_app_flutter/models/patient/vital_sign_res_model.dart';
import 'package:doctor_app_flutter/providers/patients_provider.dart';
import 'package:doctor_app_flutter/screens/patients/profile/vital_sign/vital_ding_chart_and_detials.dart';
import 'package:doctor_app_flutter/widgets/shared/app_scaffold_widget.dart';
import 'package:doctor_app_flutter/widgets/shared/charts/app_time_series_chart.dart';
import 'package:doctor_app_flutter/widgets/shared/rounded_container_widget.dart';
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
class BodyMeasurementsScreen extends StatelessWidget {
BodyMeasurementsScreen();
List<VitalSignResModel> vitalList;
// ;
PatientsProvider patientsProv;
List<VitalSignResModel> vitalList = [];
String pageTitle;
@override
Widget build(BuildContext context) {
_seriesData = List<charts.Series<Pollution, String>>();
_seriesPieData = List<charts.Series<Task, String>>();
_seriesLineData = List<charts.Series<Sales, int>>();
_generateData();
return AppScaffold(
appBarTitle: 'Body Measurements',
body: RoundedContainer(
height: SizeConfig.realScreenHeight*0.4,
child: Padding(
padding: EdgeInsets.all(8.0),
child: Container(
child: Center(
child: Column(
children: <Widget>[
Text(
'Body Mass Index',
style: TextStyle(
fontSize: 24.0, fontWeight: FontWeight.bold),
),
Expanded(
child: charts.BarChart(
_seriesData,
animate: true,
barGroupingType: charts.BarGroupingType.grouped,
// behaviors: [new charts.SeriesLegend()],
// primaryMeasureAxis: ,
animationDuration: Duration(seconds: 1),
),
),
],
),
),
),
),
),
);
}
patientsProv = Provider.of<PatientsProvider>(context);
final routeArgs = ModalRoute.of(context).settings.arguments as Map;
pageTitle = routeArgs['title'];
var pageKey = routeArgs['key'];
List<Map> VSchart;
vitalList = patientsProv.patientVitalSignOrderdSubList;
switch (pageKey) {
case vitalSignDetails.bodyMeasurements:
VSchart = [
{
'name': 'Highet',
'title1': 'Date',
'title2': 'Cm',
'viewKey': 'HeightCm',
},
{
'name': 'Weight Kg',
'title1': 'Date',
'title2': 'Kg',
'viewKey': 'WeightKg',
},
{
'name': 'BodyMassIndex',
'title1': 'Date',
'title2': 'BodyMass',
'viewKey': 'BodyMassIndex',
},
{
'name': 'HeadCircumCm',
'title1': 'Date',
'title2': 'Cm',
'viewKey': 'HeadCircumCm',
},
{
'name': 'Ideal Body Weight (Lbs)',
'title1': 'Date',
'title2': 'Ideal Weight',
'viewKey': 'IdealBodyWeightLbs',
},
{
'name': 'LeanBodyWeightLbs (Lbs)',
'title1': 'Date',
'title2': 'Lean Weight',
'viewKey': 'LeanBodyWeightLbs',
}
];
List<charts.Series<Pollution, String>> _seriesData;
List<charts.Series<Task, String>> _seriesPieData;
List<charts.Series<Sales, int>> _seriesLineData;
break;
_generateData() {
var data1 = [
new Pollution(1980, 'USA', 40),
];
case vitalSignDetails.temperature:
VSchart = [
{
'name': 'Temperature In Celcius',
'title1': 'Date',
'title2': 'C',
'viewKey': 'TemperatureCelcius',
},
];
_seriesData.add(
charts.Series(
domainFn: (Pollution pollution, _) => '',
measureFn: (Pollution pollution, _) => pollution.quantity,
id: '2017',
data: data1,
fillPatternFn: (_, __) => charts.FillPatternType.solid,
fillColorFn: (Pollution pollution, _) =>
charts.ColorUtil.fromDartColor(Color(0xff990099)),
),
);
_seriesData.add(
charts.Series(
domainFn: (Pollution pollution, _) => '',
measureFn: (Pollution pollution, _) => pollution.quantity,
id: '2017',
data: data1,
fillPatternFn: (_, __) => charts.FillPatternType.solid,
fillColorFn: (Pollution pollution, _) =>
charts.ColorUtil.fromDartColor(Color(0xff990099)),
),
);
_seriesData.add(
charts.Series(
domainFn: (Pollution pollution, _) => '',
measureFn: (Pollution pollution, _) => pollution.quantity,
id: '2017',
data: data1,
fillPatternFn: (_, __) => charts.FillPatternType.solid,
fillColorFn: (Pollution pollution, _) =>
charts.ColorUtil.fromDartColor(Color(0xff990099)),
),
);
_seriesData.add(
charts.Series(
domainFn: (Pollution pollution, _) => '',
measureFn: (Pollution pollution, _) => pollution.quantity,
id: '2017',
data: data1,
fillPatternFn: (_, __) => charts.FillPatternType.solid,
fillColorFn: (Pollution pollution, _) =>
charts.ColorUtil.fromDartColor(Color(0xff990099)),
),
);
_seriesData.add(
charts.Series(
domainFn: (Pollution pollution, _) => '',
measureFn: (Pollution pollution, _) => pollution.quantity,
id: '2017',
data: data1,
fillPatternFn: (_, __) => charts.FillPatternType.solid,
fillColorFn: (Pollution pollution, _) =>
charts.ColorUtil.fromDartColor(Color(0xff990099)),
),
);
break;
case vitalSignDetails.pulse:
VSchart = [
{
'name': 'Pulse Beat Per Minute',
'title1': 'Date',
'title2': 'Minute',
'viewKey': 'PulseBeatPerMinute',
},
];
}
}
break;
case vitalSignDetails.pespiration:
VSchart = [
{
'name': 'Respiration Beat Per Minute',
'title1': 'Date',
'title2': 'Beat Per Minute',
'viewKey': 'RespirationBeatPerMinute',
},
];
break;
case vitalSignDetails.bloodPressure:
VSchart = [
{
'name': 'Blood Pressure Higher',
'title1': 'Date',
'title2': 'Minute',
'viewKey': 'BloodPressureHigher',
},
{
'name': 'Blood Pressure Lower',
'title1': 'Date',
'title2': 'Minute',
'viewKey': 'BloodPressureLower',
}
];
break;
case vitalSignDetails.oxygenation:
VSchart = [
{
'name': 'FIO2',
'title1': 'Date',
'title2': 'Cm',
'viewKey': 'FIO2',
},
{
'name': 'SAO2',
'title1': 'Date',
'title2': 'Cm',
'viewKey': 'SAO2',
},
];
class Pollution {
String place;
int year;
int quantity;
break;
case vitalSignDetails.painScale:
VSchart = [
{
'name': 'PainScore',
'title1': 'Date',
'title2': 'Cm',
'viewKey': 'PainScore',
},
];
Pollution(this.year, this.place, this.quantity);
break;
default:
}
// generateData();
return AppScaffold(
appBarTitle: pageTitle,
body: ListView(
children: VSchart.map((chartInfo) {
var vitalListTemp = vitalList.where((element) => element.toJson()[chartInfo['viewKey']] != null,);
return vitalListTemp.length !=0 ? VitalSingChartAndDetials(
vitalList: vitalList,
name: chartInfo['name'],
title1: chartInfo['title1'],
title2: chartInfo['title2'],
viewKey: chartInfo['viewKey']) : Container();
}).toList(),
),
);
}
}
class Task {
String task;
double taskvalue;
Color colorval;
class LinearSales {
final int year;
final int sales;
Task(this.task, this.taskvalue, this.colorval);
LinearSales(this.year, this.sales);
}
class Sales {
int yearval;
int salesval;
/// Sample time series data type.
class TimeSeriesSales {
final DateTime time;
final int sales;
Sales(this.yearval, this.salesval);
TimeSeriesSales(this.time, this.sales);
}

@ -0,0 +1,39 @@
import 'package:doctor_app_flutter/models/patient/vital_sign_res_model.dart';
import 'package:doctor_app_flutter/widgets/patients/vital_sign_details_wideget.dart';
import 'package:doctor_app_flutter/widgets/shared/charts/app_time_series_chart.dart';
import 'package:flutter/material.dart';
class VitalSingChartAndDetials extends StatelessWidget {
VitalSingChartAndDetials({
Key key,
@required this.vitalList,
@required this.name,
@required this.viewKey,
@required this.title1,
@required this.title2,
}) : super(key: key);
final List<VitalSignResModel> vitalList ;
final String name;
final String viewKey;
final String title1;
final String title2;
@override
Widget build(BuildContext context) {
return Column(
children: <Widget>[
AppTimeSeriesChart(
vitalList: vitalList,
chartName: name,
viewKey: viewKey,
),
VitalSignDetailsWidget(
vitalList: vitalList.reversed.toList(),
title1: '${title1}',
title2: '${title2}',
viewKey: '${viewKey}',
),
],
);
}
}

@ -1,16 +1,18 @@
import 'package:doctor_app_flutter/config/shared_pref_kay.dart';
import 'package:doctor_app_flutter/lookups/patient_lookup.dart';
import 'package:doctor_app_flutter/models/patient/patiant_info_model.dart';
import 'package:doctor_app_flutter/models/patient/vital_sign_req_model.dart';
import 'package:doctor_app_flutter/providers/patients_provider.dart';
import 'package:doctor_app_flutter/routes.dart';
import 'package:doctor_app_flutter/util/dr_app_shared_pref.dart';
import 'package:doctor_app_flutter/widgets/shared/rounded_container_widget.dart';
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import '../../../../config/size_config.dart';
import '../../../../models/patient/vital_sign_res_model.dart';
import '../../../../widgets/patients/profile/profile_medical_info_widget.dart';
import '../../../../widgets/shared/app_scaffold_widget.dart';
DrAppSharedPreferances sharedPref = new DrAppSharedPreferances();
class VitalSignDetailsScreen extends StatefulWidget {
@ -73,54 +75,202 @@ class _VitalSignDetailsScreenState extends State<VitalSignDetailsScreen> {
vitalSing = routeArgs['vitalSing'];
return AppScaffold(
appBarTitle: "vital Sing ",
body: CustomScrollView(
primary: false,
slivers: <Widget>[
SliverPadding(
padding: const EdgeInsets.all(10),
sliver: SliverGrid.count(
childAspectRatio: 0.7,
crossAxisSpacing: 10,
mainAxisSpacing: 0,
crossAxisCount: 3,
isloading: patientsProv.isLoading,
body: Container(
child: Column(
children: <Widget>[
Row(
children: <Widget>[
InkWell(
onTap: (){
Navigator.of(context).pushNamed(BODY_MEASUREMENTS);
onTap: () {
Navigator.of(context).pushNamed(BODY_MEASUREMENTS,
arguments: {
'title': 'Body Measurements',
'key': vitalSignDetails.bodyMeasurements
});
},
child: CircleAvatarWidget(
des: 'Body Measurements',
url: url + 'heartbeat.png',
child: Expanded(
child: VitalSignItem(
des: 'Body Measurements',
url: url + 'heartbeat.png',
lastVal: '137',
unit: 'Cm',
),
),
),
CircleAvatarWidget(
des: 'Temperature',
url: url + 'heartbeat.png',
InkWell(
onTap: () {
Navigator.of(context).pushNamed(BODY_MEASUREMENTS,
arguments: {
'title': 'Temperature',
'key': vitalSignDetails.temperature
});
},
child: Expanded(
child: VitalSignItem(
des: 'Temperature',
url: url + 'heartbeat.png',
),
),
),
CircleAvatarWidget(
des: 'Pulse',
url: url + 'heartbeat.png',
],
),
Row(
children: <Widget>[
InkWell(
onTap: () {
Navigator.of(context).pushNamed(BODY_MEASUREMENTS,
arguments: {
'title': 'pulse',
'key': vitalSignDetails.pulse
});
},
child: VitalSignItem(
des: 'Pulse',
url: url + 'heartbeat.png',
),
),
CircleAvatarWidget(
des: 'Respiration',
url: url + 'heartbeat.png',
InkWell(
onTap: () {
Navigator.of(context).pushNamed(BODY_MEASUREMENTS,
arguments: {
'title': 'pespiration',
'key': vitalSignDetails.pespiration
});
},
child: VitalSignItem(
des: 'Respiration',
url: url + 'heartbeat.png',
),
),
CircleAvatarWidget(
des: 'Blood Pressure',
url: url + 'heartbeat.png',
],
),
Row(
children: <Widget>[
InkWell(
onTap: () {
Navigator.of(context).pushNamed(BODY_MEASUREMENTS,
arguments: {
'title': 'Blood Pressure',
'key': vitalSignDetails.bloodPressure
});
},
child: VitalSignItem(
des: 'Blood Pressure',
url: url + 'heartbeat.png',
),
),
CircleAvatarWidget(
des: 'Oxygenation',
url: url + 'heartbeat.png',
InkWell(
onTap: () {
Navigator.of(context).pushNamed(BODY_MEASUREMENTS,
arguments: {
'title': 'Oxygenation',
'key': vitalSignDetails.oxygenation
});
},
child: VitalSignItem(
des: 'Oxygenation',
url: url + 'heartbeat.png',
),
),
CircleAvatarWidget(
des: 'Pain Scale',
url: url + 'heartbeat.png',
],
),
Row(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
InkWell(
onTap: () {
Navigator.of(context).pushNamed(BODY_MEASUREMENTS,
arguments: {
'title': 'Pain Scale',
'key': vitalSignDetails.painScale
});
},
child: VitalSignItem(
des: 'Pain Scale',
url: url + 'heartbeat.png',
),
),
],
),
],
),
));
}
}
class VitalSignItem extends StatelessWidget {
const VitalSignItem(
{Key key,
@required this.url,
@required this.des,
this.lastVal = 'N/A',
this.unit = '',
this.height,
this.width})
: super(key: key);
final String url;
final String des;
final String lastVal;
final String unit;
final double height;
final double width;
@override
Widget build(BuildContext context) {
return RoundedContainer(
margin: 0.025 * SizeConfig.realScreenWidth,
height: 0.14 * SizeConfig.realScreenHeight,
width: 0.45 * SizeConfig.realScreenWidth,
child: Container(
padding: EdgeInsets.all(5),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Expanded(
flex: 2,
child: Text(
des,
style: TextStyle(
fontSize: 1.7 * SizeConfig.textMultiplier,
color: Theme.of(context).primaryColor,
fontWeight: FontWeight.bold),
),
),
Expanded(
flex: 1,
child: Column(
// mainAxisAlignment: MainAxisAlignment.spaceEvenly,
// crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Expanded(
child: Image.asset(
url,
height: SizeConfig.heightMultiplier * 7,
),
),
Expanded(
child: RichText(
text: TextSpan(
style: TextStyle(color: Colors.black),
children: [
new TextSpan(text: lastVal),
new TextSpan(
text: ' ${unit}',
style:
TextStyle(color: Theme.of(context).primaryColor)),
],
),
))
],
),
)
],
));
),
),
);
}
}

@ -402,6 +402,10 @@ class _VerifyAccountState extends State<VerifyAccount> {
}
}).catchError((err) {
print('$err');
changeLoadingStata(false);
print('$err');
helpers.showErrorToast();
});
}
}

@ -0,0 +1,174 @@
import 'package:doctor_app_flutter/config/size_config.dart';
import 'package:doctor_app_flutter/models/patient/lab_result.dart';
import 'package:doctor_app_flutter/widgets/shared/Text.dart';
import 'package:doctor_app_flutter/widgets/shared/app_texts_widget.dart';
import 'package:doctor_app_flutter/widgets/shared/card_with_bgNew_widget.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:hexcolor/hexcolor.dart';
class LabResultWidget extends StatefulWidget {
final List<LabResult> labResult;
LabResultWidget({Key key, this.labResult});
@override
_LabResultWidgetState createState() => _LabResultWidgetState();
}
class _LabResultWidgetState extends State<LabResultWidget> {
bool _showDetails = true;
@override
Widget build(BuildContext context) {
return Container(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Row(
mainAxisAlignment: MainAxisAlignment.spaceAround,
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
AppText(
'General Result',
fontSize: 2.5 * SizeConfig.textMultiplier,
fontWeight: FontWeight.bold,
),
InkWell(
onTap: () {
setState(() {
_showDetails = !_showDetails;
});
},
child: Icon(_showDetails
? Icons.keyboard_arrow_up
: Icons.keyboard_arrow_down)),
],
),
Divider(
color: Colors.grey,
height: 0.5,
),
!_showDetails
? Container()
: AnimatedContainer(
duration: Duration(microseconds: 200),
child: Container(
margin: EdgeInsets.only(top: 10),
decoration: BoxDecoration(
borderRadius: BorderRadius.all(Radius.circular(10)),
),
child: Column(
children: widget.labResult.map((result) {
return Container(
decoration: BoxDecoration(
borderRadius:
BorderRadius.all(Radius.circular(10)),
border: Border(
bottom: BorderSide(
color: Colors.grey, width: 0.5),
top: BorderSide(
color: Colors.grey, width: 0.5),
left: BorderSide(
color: Colors.grey, width: 0.5),
right: BorderSide(
color: Colors.grey, width: 0.5),
),
),
margin: EdgeInsets.only(top: 10),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Row(
children: <Widget>[
Expanded(
child: Container(
decoration: BoxDecoration(
color: Hexcolor('#515B5D'),
borderRadius: BorderRadius.only(
topLeft: Radius.circular(10.0),
),
),
child: Center(
child: Texts(
'Description',
color: Colors.white,
),
),
height: 60,
),
),
Expanded(
child: Container(
color: Hexcolor('#515B5D'),
child: Center(
child: Texts('Value', color: Colors.white),
),
height: 60),
),
Expanded(
child: Container(
decoration: BoxDecoration(
color: Hexcolor('#515B5D'),
borderRadius: BorderRadius.only(
topRight: Radius.circular(10.0),
),
),
child: Center(
child: Texts('Range', color: Colors.white),
),
height: 60),
),
],
),
Row(
children: <Widget>[
Expanded(
child: Container(
decoration: BoxDecoration(
borderRadius: BorderRadius.only(
bottomLeft: Radius.circular(10.0),
),
),
child: Center(
child: Texts(
'${result.description}',
color: Colors.grey[800],
),
),
height: 60,
),
),
Expanded(
child: Container(
child: Center(
child: Texts(
'${result.resultValue}',
color: Colors.grey[800]),
),
height: 60),
),
Expanded(
child: Container(
child: Center(
child: Texts(
'${result.referenceRange}',
color: Colors.grey[800]),
),
height: 60),
),
],
)
],
),
);
}).toList(),
),
),
)
],
),
);
}
}

@ -57,7 +57,8 @@ class _MyReferredPatientWidgetState extends State<MyReferredPatientWidget> {
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Row(
mainAxisAlignment: MainAxisAlignment.spaceAround,
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: <Widget>[
AppText(
'${widget.myReferredPatientModel.firstName} ${widget.myReferredPatientModel.lastName}',
@ -85,7 +86,12 @@ class _MyReferredPatientWidgetState extends State<MyReferredPatientWidget> {
Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Divider(color: Colors.grey),
Divider(color: Colors.grey),
// VerticalDivider(color: Colors.black,
// thickness: 2, width: 20,
// indent: 200,
// endIndent: 200,),
Row(
children: <Widget>[
Expanded(
@ -99,7 +105,7 @@ class _MyReferredPatientWidgetState extends State<MyReferredPatientWidget> {
fontWeight: FontWeight.bold,
),
AppText(
'${widget.myReferredPatientModel.referringDoctor}',
'${widget.myReferredPatientModel.patientId}',
fontSize:
1.7 * SizeConfig.textMultiplier,
fontWeight: FontWeight.w300,
@ -109,7 +115,7 @@ class _MyReferredPatientWidgetState extends State<MyReferredPatientWidget> {
),
Container(
height: SizeConfig.realScreenWidth * 0.1,
height: SizeConfig.realScreenWidth * .1,//0.1,
width: 0.8,
color: Colors.grey,
margin: EdgeInsets.only(left: 15, right: 15),
@ -119,18 +125,18 @@ class _MyReferredPatientWidgetState extends State<MyReferredPatientWidget> {
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
AppText(
'Referring Doctor',
'Referral Doctor',
fontSize:
1.7 * SizeConfig.textMultiplier,
fontWeight: FontWeight.bold,
),
AppText(
Texts(
widget.myReferredPatientModel
.referringClinicDescription,
fontSize:
1.7 * SizeConfig.textMultiplier,
fontWeight: FontWeight.w300,
)
.referralDoctorName,
maxLength: 80,
readMore: true,
),
],
),
),
@ -152,7 +158,7 @@ class _MyReferredPatientWidgetState extends State<MyReferredPatientWidget> {
fontWeight: FontWeight.bold,
),
AppText(
'${widget.myReferredPatientModel.referringClinicDescription}',
'${widget.myReferredPatientModel.referralClinicDescription}',
fontSize:
1.7 * SizeConfig.textMultiplier,
fontWeight: FontWeight.w300,
@ -232,7 +238,7 @@ class _MyReferredPatientWidgetState extends State<MyReferredPatientWidget> {
AppText(
Helpers.getDateFormatted(widget
.myReferredPatientModel
.mAXResponseTime),
.maxResponseTime),
fontSize:
1.7 * SizeConfig.textMultiplier,
fontWeight: FontWeight.w300,
@ -249,15 +255,17 @@ class _MyReferredPatientWidgetState extends State<MyReferredPatientWidget> {
fontWeight: FontWeight.bold,
textAlign: TextAlign.start,
),
SizedBox(
height: 5,
),
AppText(
'${widget.myReferredPatientModel.referringDoctorRemarks}',
fontSize:
1.7 * SizeConfig.textMultiplier,
fontWeight: FontWeight.w300,
),
Texts(
'${widget.myReferredPatientModel.referringDoctorRemarks}',
style: "bodyText1",
readMore: true,
textAlign: TextAlign.start,
maxLength: 100),
SizedBox(
height: 5,
),
@ -270,28 +278,17 @@ class _MyReferredPatientWidgetState extends State<MyReferredPatientWidget> {
SizedBox(
height: 5,
),
AppText(
'${widget.myReferredPatientModel.referredDoctorRemarks}',
fontSize:
1.7 * SizeConfig.textMultiplier,
fontWeight: FontWeight.w300,
),
// Form(
// key: _formKey,
// child: TextFields(
// maxLines: 2,
// minLines: 2,
// hintText: 'Answer the patient',
// initialValue: widget.myReferredPatientModel.referredDoctorRemarks ?? '',
// readOnly: _isLoading,
// validator: (value) {
// if (value.isEmpty)
// return "please enter answer";
// else
// return null;
// },
// ),
// ),
Texts(
'${widget.myReferredPatientModel.referredDoctorRemarks}',
style: "bodyText1",
readMore: true,
textAlign: TextAlign.start,
maxLength: 100),
SizedBox(
height: 5,
),
SizedBox(height: 10.0),
if (error != null && error.isNotEmpty)
Column(
@ -325,13 +322,10 @@ class _MyReferredPatientWidgetState extends State<MyReferredPatientWidget> {
child: Button(
onTap: () async {
final form = _formKey.currentState;
if (form.validate()) {
setState(() {
_isLoading = true;
});
try {
await Provider.of<MyReferredPatientProvider>(context, listen: false).replay(answerController.text.toString(), widget.myReferredPatientModel);
// await Provider.of<MyReferredPatientProvider>(context, listen: false).replay(answerController.text.toString(), widget.myReferredPatientModel);//myReferredPatientModel
await Provider.of<MyReferredPatientProvider>(context, listen: false).replay(widget.myReferredPatientModel);
setState(() {
_isLoading = false;
});
@ -341,7 +335,7 @@ class _MyReferredPatientWidgetState extends State<MyReferredPatientWidget> {
_isLoading = false;
});
}
}
},
title: 'Verify',
loading: _isLoading,

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

@ -5,23 +5,33 @@ import 'package:flutter/material.dart';
import 'avatar_gradients.dart';
class LargeAvatar extends StatelessWidget {
LargeAvatar({Key key, this.name, this.url, this.disableProfileView: false})
LargeAvatar(
{Key key,
this.name,
this.url,
this.disableProfileView: false,
this.radius = 60.0,
this.width = 90,
this.height = 90})
: super(key: key);
final String name;
final String url;
final bool disableProfileView;
final double radius;
final double width;
final double height;
Widget _getAvatar() {
if (url != null && url.isNotEmpty && Uri.parse(url).isAbsolute) {
return Center(
child: ClipRRect(
borderRadius: BorderRadius.all(Radius.circular(60.0)),
borderRadius: BorderRadius.all(Radius.circular(radius)),
child: Image.network(
url.trim(),
fit: BoxFit.cover,
width: 90.0,
height: 90.0,
width: width,
height: height,
),
),
);
@ -35,7 +45,9 @@ class LargeAvatar extends StatelessWidget {
return Center(
child: AppText(
name[0].toUpperCase(),
color: Colors.white,fontSize: 18,fontWeight: FontWeight.bold,
color: Colors.white,
fontSize: 18,
fontWeight: FontWeight.bold,
));
}
}
@ -50,24 +62,23 @@ class LargeAvatar extends StatelessWidget {
},
child: Container(
decoration: BoxDecoration(
gradient: LinearGradient(
begin: Alignment(-1, -1),
end: Alignment(1, 1),
colors: [
Colors.grey[100],
Colors.grey[800],
]
),
boxShadow: [
BoxShadow(
color: Color.fromRGBO(0, 0, 0, 0.08),
offset: Offset(0.0, 5.0),
blurRadius: 16.0)
],
borderRadius: BorderRadius.all(Radius.circular(50.0)),
),
width: 90.0,
height: 90.0,
gradient: LinearGradient(
begin: Alignment(-1, -1),
end: Alignment(1, 1),
colors: [
Colors.grey[100],
Colors.grey[800],
]),
boxShadow: [
BoxShadow(
color: Color.fromRGBO(0, 0, 0, 0.08),
offset: Offset(0.0, 5.0),
blurRadius: 16.0)
],
borderRadius: BorderRadius.all(Radius.circular(50.0)),
),
width: width,
height: height,
child: _getAvatar()),
);
}

@ -0,0 +1,118 @@
import 'package:doctor_app_flutter/models/patient/vital_sign_res_model.dart';
import 'package:doctor_app_flutter/util/helpers.dart';
import 'package:doctor_app_flutter/widgets/shared/Text.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:hexcolor/hexcolor.dart';
class VitalSignDetailsWidget extends StatefulWidget {
final List<VitalSignResModel> vitalList;
final String title1;
final String title2;
final String viewKey;
VitalSignDetailsWidget({Key key, this.vitalList, this.title1, this.title2,this.viewKey});
@override
_VitalSignDetailsWidgetState createState() => _VitalSignDetailsWidgetState();
}
class _VitalSignDetailsWidgetState extends State<VitalSignDetailsWidget> {
@override
Widget build(BuildContext context) {
return Container(
decoration: BoxDecoration(
color: Colors.transparent,
borderRadius: BorderRadius.only(
topLeft: Radius.circular(10.0),
),
),
margin: EdgeInsets.all(20),
child: Container(
color: Colors.transparent,
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Row(
children: <Widget>[
Expanded(
child: Container(
decoration: BoxDecoration(
color: Hexcolor('#515B5D'),
borderRadius: BorderRadius.only(
topLeft: Radius.circular(10.0),
),
),
child: Center(
child: Texts(
widget.title1,
color: Colors.white,
),
),
height: 60,
),
),
Expanded(
child: Container(
decoration: BoxDecoration(
color: Hexcolor('#515B5D'),
borderRadius: BorderRadius.only(
topRight: Radius.circular(10.0),
),
),
child: Center(
child: Texts(widget.title2, color: Colors.white),
),
height: 60),
),
],
),
Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: widget.vitalList.map((vital) {
return Column(
children: <Widget>[
Row(
children: <Widget>[
Expanded(
child: Container(
height: 50,
color: Colors.white,
child: Center(
child: Texts(
'${Helpers.getWeekDay(vital.vitalSignDate.weekday)}, ${vital.vitalSignDate.day} ${Helpers.getMonth(vital.vitalSignDate.month)}, ${vital.vitalSignDate.year} ',
textAlign: TextAlign.center,
),
),
),
),
SizedBox(
width: 2,
),
Expanded(
child: Container(
height: 50,
color: Colors.white,
child: Center(
child: Texts(
'${vital.toJson()[widget.viewKey]}',
textAlign: TextAlign.center,
),
),
),
),
],
),
SizedBox(
height: 2,
),
],
);
}).toList(),
),
],
),
),
);
}
}

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

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

@ -20,22 +20,21 @@ class CardWithBgWidgetNew extends StatelessWidget {
@override
Widget build(BuildContext context) {
ProjectProvider projectProvider = Provider.of(context);
return Container(
margin: EdgeInsets.symmetric(vertical: 10.0),
width: double.infinity,
decoration: BoxDecoration(
borderRadius: BorderRadius.all(
Radius.circular(20.0),
borderRadius: BorderRadius.all(
Radius.circular(10.0),
),
),
),
child: Material(
borderRadius: BorderRadius.all(Radius.circular(20.0)),
color: Hexcolor('#FFFFFF'),
borderRadius: BorderRadius.all(Radius.circular(10.0)),
color: Hexcolor('#FFFFFF'),
child: Stack(
children: [
Container(
padding: EdgeInsets.all(15.0),
padding: EdgeInsets.all(10.0),
margin: EdgeInsets.only(left: 10),
child: widget)
],

@ -0,0 +1,34 @@
import 'package:flutter/material.dart';
import 'package:charts_flutter/flutter.dart' as charts;
class AppLineChart extends StatelessWidget {
const AppLineChart({
Key key,
@required this.seriesList,
this.chartTitle,
}) : super(key: key);
final List<charts.Series> seriesList;
final String chartTitle;
@override
Widget build(BuildContext context) {
return Container(
child: Column(
children: <Widget>[
Text(
'Body Mass Index',
style: TextStyle(fontSize: 24.0, fontWeight: FontWeight.bold),
),
Expanded(
child: charts.LineChart(seriesList,
defaultRenderer: new charts.LineRendererConfig(
includeArea: false, stacked: true),
animate: true),
),
],
),
);
}
}

@ -0,0 +1,93 @@
import 'package:charts_flutter/flutter.dart' as charts;
import 'package:doctor_app_flutter/config/size_config.dart';
import 'package:doctor_app_flutter/models/patient/vital_sign_res_model.dart';
import 'package:doctor_app_flutter/screens/patients/profile/vital_sign/body_measurements_screen.dart';
import 'package:doctor_app_flutter/widgets/shared/rounded_container_widget.dart';
import 'package:flutter/material.dart';
class AppTimeSeriesChart extends StatelessWidget {
AppTimeSeriesChart(
{Key key,
@required this.vitalList,
@required this.viewKey,
this.chartName = ''});
final List<VitalSignResModel> vitalList;
final String chartName;
final String viewKey;
List<charts.Series> seriesList;
@override
Widget build(BuildContext context) {
seriesList = generateData();
return RoundedContainer(
height: SizeConfig.realScreenHeight * 0.47,
child: Column(
children: <Widget>[
Text(
chartName,
style: TextStyle(
fontWeight: FontWeight.bold,
fontSize: SizeConfig.textMultiplier * 3),
),
Container(
height: SizeConfig.realScreenHeight * 0.37,
child: Center(
child: Expanded(
child: charts.TimeSeriesChart(
seriesList,
animate: true,
behaviors: [
new charts.RangeAnnotation(
[
new charts.RangeAnnotationSegment(
DateTime(
vitalList[vitalList.length - 1]
.vitalSignDate
.year,
vitalList[vitalList.length - 1]
.vitalSignDate
.month +
3,
vitalList[vitalList.length - 1]
.vitalSignDate
.day),
vitalList[0].vitalSignDate,
charts.RangeAnnotationAxisType.domain),
],
),
],
),
),
),
),
],
),
);
}
generateData() {
final List<TimeSeriesSales> data = [];
if (vitalList.length > 0) {
vitalList.forEach(
(element) {
data.add(
TimeSeriesSales(
new DateTime(element.vitalSignDate.year,
element.vitalSignDate.month, element.vitalSignDate.day),
element.toJson()[viewKey].toInt(),
),
);
},
);
}
return [
new charts.Series<TimeSeriesSales, DateTime>(
id: 'Sales',
domainFn: (TimeSeriesSales sales, _) => sales.time,
measureFn: (TimeSeriesSales sales, _) => sales.sales,
data: data,
)
];
}
}

@ -277,6 +277,13 @@ packages:
url: "https://pub.dartlang.org"
source: hosted
version: "1.0.7"
flutter_svg:
dependency: "direct main"
description:
name: flutter_svg
url: "https://pub.dartlang.org"
source: hosted
version: "0.17.4"
flutter_test:
dependency: "direct dev"
description: flutter
@ -462,6 +469,20 @@ packages:
url: "https://pub.dartlang.org"
source: hosted
version: "1.6.4"
path_drawing:
dependency: transitive
description:
name: path_drawing
url: "https://pub.dartlang.org"
source: hosted
version: "0.4.1"
path_parsing:
dependency: transitive
description:
name: path_parsing
url: "https://pub.dartlang.org"
source: hosted
version: "0.1.4"
pedantic:
dependency: transitive
description:

Loading…
Cancel
Save