Merge branch 'development' of https://gitlab.com/Cloud_Solution/doctor_app_flutter into clinic_list

 Conflicts:
	lib/screens/patients/patients_screen.dart
merge-requests/354/head
Elham Rababah 4 years ago
commit e7d1a6c805

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

@ -292,4 +292,4 @@ SPEC CHECKSUMS:
PODFILE CHECKSUM: 649616dc336b3659ac6b2b25159d8e488e042b69 PODFILE CHECKSUM: 649616dc336b3659ac6b2b25159d8e488e042b69
COCOAPODS: 1.10.0.rc.1 COCOAPODS: 1.10.1

@ -212,6 +212,9 @@ const GET_PROCEDURE_VALIDATION =
const GET_BOX_QUANTITY = const GET_BOX_QUANTITY =
'Services/DoctorApplication.svc/REST/CalculateBoxQuantity'; 'Services/DoctorApplication.svc/REST/CalculateBoxQuantity';
///GET ECG
const GET_ECG = "Services/Patients.svc/REST/HIS_GetPatientMuseResults";
var selectedPatientType = 1; var selectedPatientType = 1;
//*********change value to decode json from Dropdown ************ //*********change value to decode json from Dropdown ************

@ -57,7 +57,7 @@ const Map<String, Map<String, String>> localizedValues = {
'firstName': {'en': 'First Name', 'ar': 'الاسم الاول'}, 'firstName': {'en': 'First Name', 'ar': 'الاسم الاول'},
'middleName': {'en': 'Middle Name', 'ar': 'اسم الاب'}, 'middleName': {'en': 'Middle Name', 'ar': 'اسم الاب'},
'lastName': {'en': 'Last Name', 'ar': 'اسم العائلة'}, 'lastName': {'en': 'Last Name', 'ar': 'اسم العائلة'},
'phoneNumber': {'en': 'Phone Number ', 'ar': 'رقم الجوال'}, 'phoneNumber': {'en': "Patient's Phone Number ", 'ar': 'رقم الجوال'},
'patientID': {'en': 'Patient ID', 'ar': 'رقم المريض'}, 'patientID': {'en': 'Patient ID', 'ar': 'رقم المريض'},
'patientFile': {'en': 'Patient File', 'ar': 'ملف المريض'}, 'patientFile': {'en': 'Patient File', 'ar': 'ملف المريض'},
'familyMedicine': {'en': 'Family Medicine Clinic', 'ar': 'عيادة طب الأسرة'}, 'familyMedicine': {'en': 'Family Medicine Clinic', 'ar': 'عيادة طب الأسرة'},
@ -746,4 +746,6 @@ const Map<String, Map<String, String>> localizedValues = {
'en': "Search patient or Medicines", 'en': "Search patient or Medicines",
'ar': "مریض یا دوائیں تلاش کریں" 'ar': "مریض یا دوائیں تلاش کریں"
}, },
'appointmentDate': {'en': "Appointment Date", 'ar': "تاريخ الموعد"},
'arrived_p': {'en': "Arrived", 'ar': "وصل"},
}; };

@ -0,0 +1,64 @@
import 'package:doctor_app_flutter/util/date-utils.dart';
class PatientMuseResultsModel {
int rowID;
String setupID;
int projectID;
String orderNo;
int lineItemNo;
int patientType;
int patientID;
String procedureID;
dynamic reportData;
String imageURL;
String createdBy;
String createdOn;
DateTime createdOnDateTime;
PatientMuseResultsModel(
{this.rowID,
this.setupID,
this.projectID,
this.orderNo,
this.lineItemNo,
this.patientType,
this.patientID,
this.procedureID,
this.reportData,
this.imageURL,
this.createdBy,
this.createdOn});
PatientMuseResultsModel.fromJson(Map<String, dynamic> json) {
rowID = json['RowID'];
setupID = json['SetupID'];
projectID = json['ProjectID'];
orderNo = json['OrderNo'];
lineItemNo = json['LineItemNo'];
patientType = json['PatientType'];
patientID = json['PatientID'];
procedureID = json['ProcedureID'];
reportData = json['ReportData'];
imageURL = json['ImageURL'];
createdBy = json['CreatedBy'];
createdOn = json['CreatedOn'];
createdOnDateTime = DateUtils.getDateTimeFromServerFormat(json['CreatedOn']);
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['RowID'] = this.rowID;
data['SetupID'] = this.setupID;
data['ProjectID'] = this.projectID;
data['OrderNo'] = this.orderNo;
data['LineItemNo'] = this.lineItemNo;
data['PatientType'] = this.patientType;
data['PatientID'] = this.patientID;
data['ProcedureID'] = this.procedureID;
data['ReportData'] = this.reportData;
data['ImageURL'] = this.imageURL;
data['CreatedBy'] = this.createdBy;
data['CreatedOn'] = this.createdOn;
return data;
}
}

@ -0,0 +1,28 @@
import 'package:doctor_app_flutter/config/config.dart';
import 'package:doctor_app_flutter/core/model/PatientMuseResultsModel.dart';
import 'package:doctor_app_flutter/core/service/base/base_service.dart';
class PatientMuseService extends BaseService {
List<PatientMuseResultsModel> patientMuseResultsModelList = List();
getECGPatient({int patientType, int patientOutSA,int patientID}) async {
Map<String,dynamic> body = Map();
body['PatientType'] = patientType;
body['PatientOutSA'] = patientOutSA;
body['PatientID'] = patientID;
await baseAppClient.post(
GET_ECG,
onSuccess: (dynamic response, int statusCode) {
patientMuseResultsModelList.clear();
response['HIS_GetPatientMuseResultsList'].forEach((v) {
patientMuseResultsModelList.add(PatientMuseResultsModel.fromJson(v));
});
},
onFailure: (String error, int statusCode) {
hasError = true;
super.error = error;
},
body: body,
);
}
}

@ -0,0 +1,26 @@
import 'package:doctor_app_flutter/core/enum/viewstate.dart';
import 'package:doctor_app_flutter/core/model/PatientMuseResultsModel.dart';
import 'package:doctor_app_flutter/core/service/PatientMuseService.dart';
import 'package:doctor_app_flutter/core/viewModel/base_view_model.dart';
import '../../locator.dart';
class PatientMuseViewModel extends BaseViewModel {
PatientMuseService _patientMuseService = locator<PatientMuseService>();
List<PatientMuseResultsModel> get patientMuseResultsModelList => _patientMuseService.patientMuseResultsModelList;
getECGPatient({int patientType, int patientOutSA, int patientID}) async {
setState(ViewState.Busy);
await _patientMuseService.getECGPatient(
patientID: patientID,
patientOutSA: patientOutSA,
patientType: patientType);
if (_patientMuseService.hasError) {
error = _patientMuseService.error;
setState(ViewState.Error);
} else
setState(ViewState.Idle);
}
}

@ -468,6 +468,18 @@
"arrival-patients" "arrival-patients"
] ]
}, },
{
"uid": "23c2239369a69f752e790de95123b9e9",
"css": "male-2",
"code": 59417,
"src": "mfglabs"
},
{
"uid": "10b2be8b48bebc1974d6f94bac9de71d",
"css": "female-1",
"code": 59419,
"src": "mfglabs"
},
{ {
"uid": "740f78c2b53c8cc100a8b0d283bbd34f", "uid": "740f78c2b53c8cc100a8b0d283bbd34f",
"css": "home_icon-1", "css": "home_icon-1",

@ -12,6 +12,10 @@
/// - asset: fonts/DoctorApp.ttf /// - asset: fonts/DoctorApp.ttf
/// ///
/// ///
/// * MFG Labs, Copyright (C) 2012 by Daniel Bruce
/// Author: MFG Labs
/// License: SIL (http://scripts.sil.org/OFL)
/// Homepage: http://www.mfglabs.com/
/// ///
import 'package:flutter/widgets.dart'; import 'package:flutter/widgets.dart';
@ -67,8 +71,12 @@ class DoctorApp {
IconData(0xe817, fontFamily: _kFontFam, fontPackage: _kFontPkg); IconData(0xe817, fontFamily: _kFontFam, fontPackage: _kFontPkg);
static const IconData referral = static const IconData referral =
IconData(0xe818, fontFamily: _kFontFam, fontPackage: _kFontPkg); IconData(0xe818, fontFamily: _kFontFam, fontPackage: _kFontPkg);
static const IconData male_2 =
IconData(0xe819, fontFamily: _kFontFam, fontPackage: _kFontPkg);
static const IconData search_patient = static const IconData search_patient =
IconData(0xe81a, fontFamily: _kFontFam, fontPackage: _kFontPkg); IconData(0xe81a, fontFamily: _kFontFam, fontPackage: _kFontPkg);
static const IconData female_1 =
IconData(0xe81b, fontFamily: _kFontFam, fontPackage: _kFontPkg);
static const IconData mail = static const IconData mail =
IconData(0xe81e, fontFamily: _kFontFam, fontPackage: _kFontPkg); IconData(0xe81e, fontFamily: _kFontFam, fontPackage: _kFontPkg);
static const IconData medicine_search = static const IconData medicine_search =

@ -15,6 +15,7 @@ import 'package:doctor_app_flutter/core/viewModel/procedure_View_model.dart';
import 'package:doctor_app_flutter/core/viewModel/sick_leave_view_model.dart'; import 'package:doctor_app_flutter/core/viewModel/sick_leave_view_model.dart';
import 'package:get_it/get_it.dart'; import 'package:get_it/get_it.dart';
import 'core/service/PatientMuseService.dart';
import 'core/service/SOAP_service.dart'; import 'core/service/SOAP_service.dart';
import 'core/service/patient-admission-request-service.dart'; import 'core/service/patient-admission-request-service.dart';
import 'core/service/doctor_reply_service.dart'; import 'core/service/doctor_reply_service.dart';
@ -25,6 +26,7 @@ import 'core/service/patient-doctor-referral-service.dart';
import 'core/service/referral_patient_service.dart'; import 'core/service/referral_patient_service.dart';
import 'core/service/referred_patient_service.dart'; import 'core/service/referred_patient_service.dart';
import 'core/service/schedule_service.dart'; import 'core/service/schedule_service.dart';
import 'core/viewModel/PatientMuseViewModel.dart';
import 'core/viewModel/SOAP_view_model.dart'; import 'core/viewModel/SOAP_view_model.dart';
import 'core/viewModel/doctor_replay_view_model.dart'; import 'core/viewModel/doctor_replay_view_model.dart';
import 'core/viewModel/medicine_view_model.dart'; import 'core/viewModel/medicine_view_model.dart';
@ -58,6 +60,7 @@ void setupLocator() {
locator.registerLazySingleton(() => AdmissionRequestService()); locator.registerLazySingleton(() => AdmissionRequestService());
locator.registerLazySingleton(() => UcafService()); locator.registerLazySingleton(() => UcafService());
locator.registerLazySingleton(() => AuthService()); locator.registerLazySingleton(() => AuthService());
locator.registerLazySingleton(() => PatientMuseService());
/// View Model /// View Model
locator.registerFactory(() => DoctorReplayViewModel()); locator.registerFactory(() => DoctorReplayViewModel());
@ -77,4 +80,5 @@ void setupLocator() {
locator.registerFactory(() => AdmissionRequestViewModel()); locator.registerFactory(() => AdmissionRequestViewModel());
locator.registerFactory(() => UcafViewModel()); locator.registerFactory(() => UcafViewModel());
locator.registerFactory(() => MedicalFileViewModel()); locator.registerFactory(() => MedicalFileViewModel());
locator.registerFactory(() => PatientMuseViewModel());
} }

@ -1,6 +1,7 @@
import 'package:doctor_app_flutter/config/config.dart'; import 'package:doctor_app_flutter/config/config.dart';
import 'package:doctor_app_flutter/root_page.dart'; import 'package:doctor_app_flutter/root_page.dart';
import 'package:doctor_app_flutter/screens/medical-file/medical_file_page.dart'; import 'package:doctor_app_flutter/screens/medical-file/medical_file_page.dart';
import 'package:doctor_app_flutter/screens/patients/ECGPage.dart';
import 'package:doctor_app_flutter/screens/patients/profile/UCAF/UCAF-detail-screen.dart'; import 'package:doctor_app_flutter/screens/patients/profile/UCAF/UCAF-detail-screen.dart';
import 'package:doctor_app_flutter/screens/patients/profile/UCAF/UCAF-input-screen.dart'; import 'package:doctor_app_flutter/screens/patients/profile/UCAF/UCAF-input-screen.dart';
import 'package:doctor_app_flutter/screens/patients/profile/insurance_approvals_screen.dart'; import 'package:doctor_app_flutter/screens/patients/profile/insurance_approvals_screen.dart';
@ -12,6 +13,7 @@ import 'package:doctor_app_flutter/screens/patients/profile/prescriptions/in_pat
import 'package:doctor_app_flutter/screens/live_care/video_call.dart'; import 'package:doctor_app_flutter/screens/live_care/video_call.dart';
import 'package:doctor_app_flutter/screens/prescription/prescription_screen_history.dart'; import 'package:doctor_app_flutter/screens/prescription/prescription_screen_history.dart';
import 'package:doctor_app_flutter/screens/sick-leave/add-sickleave.dart'; import 'package:doctor_app_flutter/screens/sick-leave/add-sickleave.dart';
import 'package:doctor_app_flutter/screens/sick-leave/show-sickleave.dart';
import 'package:doctor_app_flutter/screens/sick-leave/sick_leave.dart'; import 'package:doctor_app_flutter/screens/sick-leave/sick_leave.dart';
import 'package:doctor_app_flutter/screens/procedures/procedure_screen.dart'; import 'package:doctor_app_flutter/screens/procedures/procedure_screen.dart';
import 'package:doctor_app_flutter/widgets/patients/profile/soap_update/update_soap_index.dart'; import 'package:doctor_app_flutter/widgets/patients/profile/soap_update/update_soap_index.dart';
@ -95,6 +97,7 @@ const String PATIENT_ADMISSION_REQUEST_2 = 'patients/admission-request-second';
const String PATIENT_ADMISSION_REQUEST_3 = 'patients/admission-request-third'; const String PATIENT_ADMISSION_REQUEST_3 = 'patients/admission-request-third';
const String PATIENT_UCAF_REQUEST = 'patients/ucaf'; const String PATIENT_UCAF_REQUEST = 'patients/ucaf';
const String PATIENT_UCAF_DETAIL = 'patients/ucaf/detail'; const String PATIENT_UCAF_DETAIL = 'patients/ucaf/detail';
const String PATIENT_ECG = 'patients/ecg';
const String BODY_MEASUREMENTS = 'patients/body-measurements'; const String BODY_MEASUREMENTS = 'patients/body-measurements';
const String IN_PATIENT_PRESCRIPTIONS_DETAILS = 'patients/prescription-details'; const String IN_PATIENT_PRESCRIPTIONS_DETAILS = 'patients/prescription-details';
@ -106,6 +109,7 @@ const String ORDER_PROCEDURE = 'procedure/procedure';
// const String LIVECARE_END_DIALOG = 'video-call/EndCallDialogBox'; // const String LIVECARE_END_DIALOG = 'video-call/EndCallDialogBox';
const String PATIENT_SICKLEAVE = 'patients/patient_sickleave'; const String PATIENT_SICKLEAVE = 'patients/patient_sickleave';
const String ADD_SICKLEAVE = 'add-sickleave'; const String ADD_SICKLEAVE = 'add-sickleave';
const String SHOW_SICKLEAVE = 'show-sickleave';
const String RADIOLOGY = 'radiology'; const String RADIOLOGY = 'radiology';
//todo: change the routing way. //todo: change the routing way.
var routes = { var routes = {
@ -159,6 +163,7 @@ var routes = {
// LIVECARE_END_DIALOG: (_) => EndCallDialogBox(), // LIVECARE_END_DIALOG: (_) => EndCallDialogBox(),
PATIENT_SICKLEAVE: (_) => SickLeaveScreen(), PATIENT_SICKLEAVE: (_) => SickLeaveScreen(),
ADD_SICKLEAVE: (_) => AddSickLeavScreen(), ADD_SICKLEAVE: (_) => AddSickLeavScreen(),
SHOW_SICKLEAVE: (_) => ShowSickLeaveScreen(),
ORDER_PRESCRIPTION: (_) => NewPrescriptionScreen(), ORDER_PRESCRIPTION: (_) => NewPrescriptionScreen(),
ORDER_PRESCRIPTION_HISTORY: (_) => NewPrescriptionHistoryScreen(), ORDER_PRESCRIPTION_HISTORY: (_) => NewPrescriptionHistoryScreen(),
ORDER_PROCEDURE: (_) => ProcedureScreen(), ORDER_PROCEDURE: (_) => ProcedureScreen(),
@ -167,4 +172,5 @@ var routes = {
MY_REFERRAL_DETAIL: (_) => MyReferralDetailScreen(), MY_REFERRAL_DETAIL: (_) => MyReferralDetailScreen(),
PATIENT_UCAF_REQUEST: (_) => UCAFInputScreen(), PATIENT_UCAF_REQUEST: (_) => UCAFInputScreen(),
PATIENT_UCAF_DETAIL: (_) => UcafDetailScreen(), PATIENT_UCAF_DETAIL: (_) => UcafDetailScreen(),
PATIENT_ECG: (_) => ECGPage(),
}; };

@ -70,7 +70,9 @@ class _MedicalFileDetailsState extends State<MedicalFileDetails> {
body: NetworkBaseView( body: NetworkBaseView(
baseViewModel: model, baseViewModel: model,
child: SingleChildScrollView( child: SingleChildScrollView(
child: Center(
child: Container( child: Container(
color: Colors.white,
child: Column( child: Column(
children: [ children: [
Padding( Padding(
@ -207,7 +209,8 @@ class _MedicalFileDetailsState extends State<MedicalFileDetails> {
Row( Row(
children: [ children: [
AppText( AppText(
TranslationBase.of(context).clinicName + TranslationBase.of(context)
.clinicName +
": ", ": ",
fontWeight: FontWeight.w700, fontWeight: FontWeight.w700,
), ),
@ -338,7 +341,8 @@ class _MedicalFileDetailsState extends State<MedicalFileDetails> {
.entityList[0] .entityList[0]
.timelines[ .timelines[
encounterNumber] encounterNumber]
.timeLineEvents[0] .timeLineEvents[
0]
.consulations[0] .consulations[0]
.lstCheifComplaint[ .lstCheifComplaint[
index] index]
@ -438,7 +442,8 @@ class _MedicalFileDetailsState extends State<MedicalFileDetails> {
), ),
AppText( AppText(
model model
.medicalFileList[0] .medicalFileList[
0]
.entityList[0] .entityList[0]
.timelines[ .timelines[
encounterNumber] encounterNumber]
@ -457,7 +462,8 @@ class _MedicalFileDetailsState extends State<MedicalFileDetails> {
), ),
AppText( AppText(
model model
.medicalFileList[0] .medicalFileList[
0]
.entityList[0] .entityList[0]
.timelines[ .timelines[
encounterNumber] encounterNumber]
@ -474,7 +480,8 @@ class _MedicalFileDetailsState extends State<MedicalFileDetails> {
children: [ children: [
AppText( AppText(
model model
.medicalFileList[0] .medicalFileList[
0]
.entityList[0] .entityList[0]
.timelines[ .timelines[
encounterNumber] encounterNumber]
@ -502,7 +509,8 @@ class _MedicalFileDetailsState extends State<MedicalFileDetails> {
encounterNumber] encounterNumber]
.timeLineEvents[0] .timeLineEvents[0]
.consulations[0] .consulations[0]
.lstAssessments[index] .lstAssessments[
index]
.type), .type),
], ],
), ),
@ -589,7 +597,8 @@ class _MedicalFileDetailsState extends State<MedicalFileDetails> {
], ],
), ),
bodyWidget: ListView.builder( bodyWidget: ListView.builder(
physics: NeverScrollableScrollPhysics(), physics:
NeverScrollableScrollPhysics(),
scrollDirection: Axis.vertical, scrollDirection: Axis.vertical,
shrinkWrap: true, shrinkWrap: true,
itemCount: model itemCount: model
@ -618,13 +627,15 @@ class _MedicalFileDetailsState extends State<MedicalFileDetails> {
), ),
AppText( AppText(
model model
.medicalFileList[0] .medicalFileList[
0]
.entityList[0] .entityList[0]
.timelines[ .timelines[
encounterNumber] encounterNumber]
.timeLineEvents[0] .timeLineEvents[0]
.consulations[0] .consulations[0]
.lstProcedure[index] .lstProcedure[
index]
.procedureId .procedureId
.trim(), .trim(),
), ),
@ -642,7 +653,8 @@ class _MedicalFileDetailsState extends State<MedicalFileDetails> {
.entityList[0] .entityList[0]
.timelines[ .timelines[
encounterNumber] encounterNumber]
.timeLineEvents[0] .timeLineEvents[
0]
.consulations[0] .consulations[0]
.lstProcedure[ .lstProcedure[
index] index]
@ -662,7 +674,8 @@ class _MedicalFileDetailsState extends State<MedicalFileDetails> {
.entityList[0] .entityList[0]
.timelines[ .timelines[
encounterNumber] encounterNumber]
.timeLineEvents[0] .timeLineEvents[
0]
.consulations[0] .consulations[0]
.lstProcedure[ .lstProcedure[
index] index]
@ -763,7 +776,8 @@ class _MedicalFileDetailsState extends State<MedicalFileDetails> {
], ],
), ),
bodyWidget: ListView.builder( bodyWidget: ListView.builder(
physics: NeverScrollableScrollPhysics(), physics:
NeverScrollableScrollPhysics(),
scrollDirection: Axis.vertical, scrollDirection: Axis.vertical,
shrinkWrap: true, shrinkWrap: true,
itemCount: model itemCount: model
@ -804,7 +818,8 @@ class _MedicalFileDetailsState extends State<MedicalFileDetails> {
children: [ children: [
AppText( AppText(
model model
.medicalFileList[0] .medicalFileList[
0]
.entityList[0] .entityList[0]
.timelines[ .timelines[
encounterNumber] encounterNumber]
@ -848,7 +863,8 @@ class _MedicalFileDetailsState extends State<MedicalFileDetails> {
encounterNumber] encounterNumber]
.timeLineEvents[0] .timeLineEvents[0]
.consulations[0] .consulations[0]
.lstPhysicalExam[index] .lstPhysicalExam[
index]
.remarks, .remarks,
), ),
Divider( Divider(
@ -885,6 +901,7 @@ class _MedicalFileDetailsState extends State<MedicalFileDetails> {
), ),
), ),
), ),
),
); );
} }
} }

@ -31,7 +31,9 @@ class _MedicalFilePageState extends State<MedicalFilePage> {
body: NetworkBaseView( body: NetworkBaseView(
baseViewModel: model, baseViewModel: model,
child: SingleChildScrollView( child: SingleChildScrollView(
child: Center(
child: Container( child: Container(
color: Colors.white,
child: Column( child: Column(
// mainAxisAlignment: model.medicalFileList.length != 0 && // mainAxisAlignment: model.medicalFileList.length != 0 &&
// model.medicalFileList != null // model.medicalFileList != null
@ -64,7 +66,8 @@ class _MedicalFilePageState extends State<MedicalFilePage> {
Row( Row(
children: [ children: [
AppText( AppText(
TranslationBase.of(context).branch + TranslationBase.of(context)
.branch +
": ", ": ",
fontWeight: FontWeight.w700, fontWeight: FontWeight.w700,
), ),
@ -131,7 +134,8 @@ class _MedicalFilePageState extends State<MedicalFilePage> {
age: patient.age, age: patient.age,
firstName: patient.firstName, firstName: patient.firstName,
lastName: patient.lastName, lastName: patient.lastName,
gender: patient.genderDescription, gender:
patient.genderDescription,
encounterNumber: index, encounterNumber: index,
pp: patient.patientId, pp: patient.patientId,
)), )),
@ -153,6 +157,7 @@ class _MedicalFilePageState extends State<MedicalFilePage> {
), ),
), ),
), ),
),
); );
} }
} }

@ -128,48 +128,21 @@ class _MedicineSearchState extends State<MedicineSearchScreen> {
child: FractionallySizedBox( child: FractionallySizedBox(
widthFactor: 0.97, widthFactor: 0.97,
child: SingleChildScrollView( child: SingleChildScrollView(
child: Container(
// height: SizeConfig.screenHeight,
child: Column( child: Column(
mainAxisAlignment: MainAxisAlignment.spaceAround,
children: <Widget>[ children: <Widget>[
SizedBox( SizedBox(
height: 50, height: SizeConfig.screenHeight * .16,
),
Column(
children: <Widget>[
Container(
child: Icon(
DoctorApp.medicine_search,
size: 100,
color: Colors.black,
),
margin: EdgeInsets.only(top: 50),
),
Padding(
padding: const EdgeInsets.only(top: 12.0),
child: AppText(
TranslationBase.of(context).type.toUpperCase(),
fontWeight: FontWeight.bold,
fontSize: SizeConfig.heightMultiplier * 2.5,
),
),
Padding(
padding: const EdgeInsets.only(top: 5.0),
child: AppText(
TranslationBase.of(context)
.searchMedicineImageCaption,
fontSize: SizeConfig.heightMultiplier * 2,
),
)
],
),
SizedBox(
height: 15,
), ),
Column(children: [
FractionallySizedBox( FractionallySizedBox(
widthFactor: 0.9, widthFactor: 0.9,
child: Column( child: Column(
children: <Widget>[ children: <Widget>[
Container( Container(
height: MediaQuery.of(context).size.height * 0.070, // height: MediaQuery.of(context).size.height * 0.070,
child: InkWell( child: InkWell(
onTap: model.allMedicationList != null onTap: model.allMedicationList != null
? () { ? () {
@ -199,15 +172,17 @@ class _MedicineSearchState extends State<MedicineSearchScreen> {
suggestion.description + suggestion.description +
'/' + '/' +
suggestion.genericName), suggestion.genericName),
padding: EdgeInsets.all(8.0)), padding: EdgeInsets.all(10.0)),
itemSorter: (a, b) => 1, itemSorter: (a, b) => 1,
itemFilter: (suggestion, input) => itemFilter: (suggestion, input) =>
suggestion.genericName suggestion.genericName
.toLowerCase() .toLowerCase()
.startsWith(input.toLowerCase()) || .startsWith(
input.toLowerCase()) ||
suggestion.description suggestion.description
.toLowerCase() .toLowerCase()
.startsWith(input.toLowerCase()) || .startsWith(
input.toLowerCase()) ||
suggestion.keywords suggestion.keywords
.toLowerCase() .toLowerCase()
.startsWith(input.toLowerCase()), .startsWith(input.toLowerCase()),
@ -219,7 +194,8 @@ class _MedicineSearchState extends State<MedicineSearchScreen> {
TranslationBase.of(context) TranslationBase.of(context)
.searchMedicineNameHere, .searchMedicineNameHere,
_selectedMedication != null _selectedMedication != null
? _selectedMedication.description + ? _selectedMedication
.description +
(' (${_selectedMedication.genericName} )') (' (${_selectedMedication.genericName} )')
: null, : null,
true, true,
@ -228,10 +204,17 @@ class _MedicineSearchState extends State<MedicineSearchScreen> {
), ),
), ),
), ),
],
),
)
]),
SizedBox( SizedBox(
height: 15, height: SizeConfig.screenHeight * .5,
), ),
Container( Column(
children: [
FractionallySizedBox(
widthFactor: 0.97,
child: Wrap( child: Wrap(
alignment: WrapAlignment.center, alignment: WrapAlignment.center,
children: <Widget>[ children: <Widget>[
@ -244,13 +227,12 @@ class _MedicineSearchState extends State<MedicineSearchScreen> {
), ),
], ],
), ),
), )
], ],
), )
),
], ],
), ),
), )),
), ),
), ),
), ),

@ -24,7 +24,7 @@ class SearchMedicinePatientScreen extends StatefulWidget {
class _SearchMedicinePatientScreen extends State<SearchMedicinePatientScreen> class _SearchMedicinePatientScreen extends State<SearchMedicinePatientScreen>
with SingleTickerProviderStateMixin { with SingleTickerProviderStateMixin {
TabController _tabController; TabController _tabController;
var activeIndex = 0;
@override @override
void initState() { void initState() {
super.initState(); super.initState();
@ -50,42 +50,63 @@ class _SearchMedicinePatientScreen extends State<SearchMedicinePatientScreen>
child: Center( child: Center(
child: Container( child: Container(
height: 60.0, height: 60.0,
color: Colors.white,
margin: EdgeInsets.only(top: 10.0), margin: EdgeInsets.only(top: 10.0),
width: MediaQuery.of(context).size.width * 0.92, // 0.9, width: MediaQuery.of(context).size.width, // 0.9,
decoration: BoxDecoration( // decoration: BoxDecoration(
border: Border( // border: Border(
bottom: BorderSide( // bottom: BorderSide(
color: Theme.of(context).dividerColor, // color: Theme.of(context).dividerColor,
width: 0.9), //width: 0.7 // width: 0.9), //width: 0.7
), // ),
color: Colors.white), // color: Colors.white),
child: Center(
child: TabBar( child: TabBar(
isScrollable: true, isScrollable: true,
onTap: (index) {
setState(() {
activeIndex = index;
});
},
controller: _tabController, controller: _tabController,
indicatorWeight: 5.0, indicatorWeight: 0.01,
indicatorSize: TabBarIndicatorSize.tab, indicatorSize: TabBarIndicatorSize.label,
labelColor: Theme.of(context).primaryColor, labelColor: Theme.of(context).primaryColor,
labelPadding: indicatorColor: Colors.grey[800],
EdgeInsets.only(top: 4.0, left: 35.0, right: 35.0), // labelPadding:
// EdgeInsets.only(top: 4.0, left: 35.0, right: 35.0),
unselectedLabelColor: Colors.grey[800], unselectedLabelColor: Colors.grey[800],
tabs: [ tabs: [
Container( Container(
width: MediaQuery.of(context).size.width * 0.30, width: MediaQuery.of(context).size.width * 0.40,
decoration: BoxDecoration(
color: activeIndex == 0
? Colors.red[700]
: Colors.grey[200],
borderRadius: BorderRadius.circular(5)),
child: Center( child: Center(
child: AppText( child: AppText(
TranslationBase.of(context).searchPatient), TranslationBase.of(context).searchPatient,
color: activeIndex == 0 ? Colors.white : Colors.black,
fontWeight: FontWeight.bold,
),
), ),
), ),
Container( Container(
width: MediaQuery.of(context).size.width * 0.30, width: MediaQuery.of(context).size.width * 0.40,
decoration: BoxDecoration(
color: activeIndex == 1
? Colors.red[700]
: Colors.grey[200],
borderRadius: BorderRadius.circular(5)),
child: Center( child: Center(
child: AppText( child: AppText(
TranslationBase.of(context).searchMedicine), TranslationBase.of(context).searchMedicine,
fontWeight: FontWeight.bold,
color: activeIndex == 1 ? Colors.white : Colors.black,
), ),
), ),
],
), ),
],
), ),
), ),
), ),

@ -0,0 +1,49 @@
import 'package:doctor_app_flutter/core/viewModel/PatientMuseViewModel.dart';
import 'package:doctor_app_flutter/models/patient/patiant_info_model.dart';
import 'package:doctor_app_flutter/screens/base/base_view.dart';
import 'package:doctor_app_flutter/util/date-utils.dart';
import 'package:doctor_app_flutter/widgets/shared/Text.dart';
import 'package:doctor_app_flutter/widgets/shared/app_scaffold_widget.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:url_launcher/url_launcher.dart';
class ECGPage extends StatelessWidget {
@override
Widget build(BuildContext context) {
final routeArgs = ModalRoute.of(context).settings.arguments as Map;
PatiantInformtion patient = routeArgs['patient'];
return BaseView<PatientMuseViewModel>(
onModelReady: (model) => model.getECGPatient(
patientType: patient.patientType,
patientOutSA: 0,
patientID: patient.patientId),
builder: (_, model, w) => AppScaffold(
baseViewModel: model,
isShowAppBar: true,
appBarTitle: 'ECG',
body: ListView.builder(
itemCount: model.patientMuseResultsModelList.length,
itemBuilder: (context, index) => InkWell(
onTap: () async {
await launch(
model.patientMuseResultsModelList[index].imageURL);
},
child: Container(
width: double.infinity,
margin: EdgeInsets.all(5),
padding: EdgeInsets.all(10),
decoration: BoxDecoration(
border: Border.all(color: Colors.grey,width: 2)
),
child: Center(
child: Texts(
"${model.patientMuseResultsModelList[index].createdOnDateTime}"),
),
),
)),
),
);
}
}

@ -43,7 +43,7 @@ class _PatientSearchScreenState extends State<PatientSearchScreen> {
final GlobalKey<FormState> _formKey = GlobalKey<FormState>(); final GlobalKey<FormState> _formKey = GlobalKey<FormState>();
bool _autoValidate = false; bool _autoValidate = false;
bool onlyArrived = true; bool onlyArrived = true;
bool isView = false;
bool isFormSubmitted = false; bool isFormSubmitted = false;
FocusNode _nodeText1 = FocusNode(); FocusNode _nodeText1 = FocusNode();
@ -130,32 +130,32 @@ class _PatientSearchScreenState extends State<PatientSearchScreen> {
children: <Widget>[ children: <Widget>[
Column( Column(
children: <Widget>[ children: <Widget>[
Container( // Container(
child: Icon( // child: Icon(
DoctorApp.search_patient_1, // DoctorApp.search_patient_1,
size: 100, // size: 100,
color: Colors.black, // color: Colors.black,
), // ),
margin: EdgeInsets.only(top: 10), // margin: EdgeInsets.only(top: 10),
), // ),
Padding( // Padding(
padding: const EdgeInsets.only(top: 12.0), // padding: const EdgeInsets.only(top: 12.0),
child: AppText( // child: AppText(
TranslationBase.of(context) // TranslationBase.of(context)
.searchPatientImageCaptionTitle // .searchPatientImageCaptionTitle
.toUpperCase(), // .toUpperCase(),
fontWeight: FontWeight.bold, // fontWeight: FontWeight.bold,
fontSize: SizeConfig.heightMultiplier * 2.5, // fontSize: SizeConfig.heightMultiplier * 2.5,
), // ),
), // ),
Padding( // Padding(
padding: const EdgeInsets.only(top: 5.0), // padding: const EdgeInsets.only(top: 5.0),
child: AppText( // child: AppText(
TranslationBase.of(context) // TranslationBase.of(context)
.searchPatientImageCaptionBody, // .searchPatientImageCaptionBody,
fontSize: SizeConfig.heightMultiplier * 2, // fontSize: SizeConfig.heightMultiplier * 2,
), // ),
) // )
], ],
), ),
Container( Container(
@ -168,25 +168,86 @@ class _PatientSearchScreenState extends State<PatientSearchScreen> {
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[ children: <Widget>[
SizedBox( SizedBox(
height: 5, height: 15,
),
if (_selectedType != '7')
Container(
decoration: BoxDecoration(
borderRadius:
BorderRadius.all(Radius.circular(6.0)),
border: Border.all(
width: 1.0, color: HexColor("#CCCCCC"))),
padding: EdgeInsets.all(10),
child: AppTextFormField(
labelText:
TranslationBase.of(context).phoneNumber,
borderColor: Colors.white,
textInputType: TextInputType.number,
textInputAction: TextInputAction.done,
inputFormatter: ONLY_NUMBERS,
focusNode: _nodeText1,
onSaved: (value) {
value == null || value == ''
? _patientSearchFormValues
.setPatientMobileNumber = "0"
: _patientSearchFormValues
.setPatientMobileNumber = value;
if (value != null &&
value.toString().trim().isEmpty) {
_patientSearchFormValues
.setPatientMobileNumber = "0";
}
},
),
),
SizedBox(
height: 10,
),
Row(
mainAxisAlignment: MainAxisAlignment.end,
children: [
InkWell(
child: this.isView == false
? AppText(
'Search With Other Critearia',
color: Colors.red,
fontWeight: FontWeight.bold,
)
: AppText('Hide Other Criteria',
color: Colors.red,
fontWeight: FontWeight.bold),
onTap: () {
setState(() {
this.isView = !this.isView;
});
},
)
],
),
isView == true
? Column(children: [
SizedBox(
height: 10,
), ),
Container( Container(
height: 40.0, height: 65.0,
decoration: ShapeDecoration( decoration: ShapeDecoration(
shape: RoundedRectangleBorder( shape: RoundedRectangleBorder(
side: BorderSide( side: BorderSide(
width: 1.0, width: 1.0,
style: BorderStyle.solid, style: BorderStyle.solid,
color: HexColor("#CCCCCC")), color: HexColor("#CCCCCC")),
borderRadius: borderRadius: BorderRadius.all(
BorderRadius.all(Radius.circular(6.0)), Radius.circular(6.0)),
), ),
), ),
width: double.infinity, width: double.infinity,
child: Padding( child: Padding(
padding: EdgeInsets.only( padding: EdgeInsets.only(
top: SizeConfig.widthMultiplier * 0.9, top: SizeConfig.widthMultiplier * 0.9,
bottom: SizeConfig.widthMultiplier * 0.9, bottom:
SizeConfig.widthMultiplier * 0.9,
right: SizeConfig.widthMultiplier * 3, right: SizeConfig.widthMultiplier * 3,
left: SizeConfig.widthMultiplier * 3), left: SizeConfig.widthMultiplier * 3),
child: Row( child: Row(
@ -204,7 +265,8 @@ class _PatientSearchScreenState extends State<PatientSearchScreen> {
(BuildContext context) { (BuildContext context) {
return PATIENT_TYPE.map((item) { return PATIENT_TYPE.map((item) {
return Row( return Row(
mainAxisSize: MainAxisSize.max, mainAxisSize:
MainAxisSize.max,
children: <Widget>[ children: <Widget>[
!projectsProvider.isArabic !projectsProvider.isArabic
? AppText( ? AppText(
@ -233,7 +295,8 @@ class _PatientSearchScreenState extends State<PatientSearchScreen> {
items: PATIENT_TYPE.map((item) { items: PATIENT_TYPE.map((item) {
!projectsProvider.isArabic !projectsProvider.isArabic
? itemText = item['text'] ? itemText = item['text']
: itemText = item['text_ar']; : itemText =
item['text_ar'];
return DropdownMenuItem( return DropdownMenuItem(
child: Text( child: Text(
itemText, itemText,
@ -253,14 +316,15 @@ class _PatientSearchScreenState extends State<PatientSearchScreen> {
), ),
Container( Container(
decoration: BoxDecoration( decoration: BoxDecoration(
borderRadius: borderRadius: BorderRadius.all(
BorderRadius.all(Radius.circular(6.0)), Radius.circular(6.0)),
border: Border.all( border: Border.all(
width: 1.0, color: HexColor("#CCCCCC"))), width: 1.0,
padding: EdgeInsets.only(top: 5), color: HexColor("#CCCCCC"))),
padding: EdgeInsets.all(10),
child: AppTextFormField( child: AppTextFormField(
labelText: labelText: TranslationBase.of(context)
TranslationBase.of(context).firstName, .firstName,
borderColor: Colors.white, borderColor: Colors.white,
onSaved: (value) { onSaved: (value) {
value == null || value == '' value == null || value == ''
@ -271,8 +335,8 @@ class _PatientSearchScreenState extends State<PatientSearchScreen> {
if (value != null && if (value != null &&
value.toString().trim().isEmpty) { value.toString().trim().isEmpty) {
_patientSearchFormValues.setFirstName = _patientSearchFormValues
"0"; .setFirstName = "0";
} }
}, },
// validator: (value) { // validator: (value) {
@ -285,14 +349,15 @@ class _PatientSearchScreenState extends State<PatientSearchScreen> {
), ),
Container( Container(
decoration: BoxDecoration( decoration: BoxDecoration(
borderRadius: borderRadius: BorderRadius.all(
BorderRadius.all(Radius.circular(6.0)), Radius.circular(6.0)),
border: Border.all( border: Border.all(
width: 1.0, color: HexColor("#CCCCCC"))), width: 1.0,
padding: EdgeInsets.only(top: 5), color: HexColor("#CCCCCC"))),
padding: EdgeInsets.all(10),
child: AppTextFormField( child: AppTextFormField(
labelText: labelText: TranslationBase.of(context)
TranslationBase.of(context).middleName, .middleName,
borderColor: Colors.white, borderColor: Colors.white,
onSaved: (value) { onSaved: (value) {
value == null || value == '' value == null || value == ''
@ -302,8 +367,8 @@ class _PatientSearchScreenState extends State<PatientSearchScreen> {
.setMiddleName = value; .setMiddleName = value;
if (value != null && if (value != null &&
value.toString().trim().isEmpty) { value.toString().trim().isEmpty) {
_patientSearchFormValues.setMiddleName = _patientSearchFormValues
"0"; .setMiddleName = "0";
} }
}, },
// validator: (value) { // validator: (value) {
@ -316,77 +381,44 @@ class _PatientSearchScreenState extends State<PatientSearchScreen> {
), ),
Container( Container(
decoration: BoxDecoration( decoration: BoxDecoration(
borderRadius: borderRadius: BorderRadius.all(
BorderRadius.all(Radius.circular(6.0)), Radius.circular(6.0)),
border: Border.all(
width: 1.0, color: HexColor("#CCCCCC"))),
padding: EdgeInsets.only(top: 5),
child: AppTextFormField(
labelText:
TranslationBase.of(context).lastName,
borderColor: Colors.white,
onSaved: (value) {
value == null || value == ''
? _patientSearchFormValues.setLastName =
"0"
: _patientSearchFormValues.setLastName =
value;
if (value != null &&
value.toString().trim().isEmpty) {
_patientSearchFormValues.setLastName =
"0";
}
},
inputFormatter: ONLY_LETTERS),
),
SizedBox(
height: 10,
),
if (_selectedType != '7')
Container(
decoration: BoxDecoration(
borderRadius:
BorderRadius.all(Radius.circular(6.0)),
border: Border.all( border: Border.all(
width: 1.0, width: 1.0,
color: HexColor("#CCCCCC"))), color: HexColor("#CCCCCC"))),
padding: EdgeInsets.only(top: 5), padding: EdgeInsets.all(10),
child: AppTextFormField( child: AppTextFormField(
labelText: labelText: TranslationBase.of(context)
TranslationBase.of(context).phoneNumber, .lastName,
borderColor: Colors.white, borderColor: Colors.white,
textInputType: TextInputType.number,
textInputAction: TextInputAction.done,
inputFormatter: ONLY_NUMBERS,
focusNode: _nodeText1,
onSaved: (value) { onSaved: (value) {
value == null || value == '' value == null || value == ''
? _patientSearchFormValues ? _patientSearchFormValues
.setPatientMobileNumber = "0" .setLastName = "0"
: _patientSearchFormValues : _patientSearchFormValues
.setPatientMobileNumber = value; .setLastName = value;
if (value != null && if (value != null &&
value.toString().trim().isEmpty) { value.toString().trim().isEmpty) {
_patientSearchFormValues _patientSearchFormValues
.setPatientMobileNumber = "0"; .setLastName = "0";
} }
}, },
), inputFormatter: ONLY_LETTERS),
), ),
SizedBox( SizedBox(
height: 10, height: 10,
), ),
Container( Container(
decoration: BoxDecoration( decoration: BoxDecoration(
borderRadius: borderRadius: BorderRadius.all(
BorderRadius.all(Radius.circular(6.0)), Radius.circular(6.0)),
border: Border.all( border: Border.all(
width: 1.0, color: HexColor("#CCCCCC"))), width: 1.0,
padding: EdgeInsets.only(top: 5), color: HexColor("#CCCCCC"))),
padding: EdgeInsets.all(10),
child: AppTextFormField( child: AppTextFormField(
labelText: labelText: TranslationBase.of(context)
TranslationBase.of(context).patientID, .patientID,
borderColor: Colors.white, borderColor: Colors.white,
textInputType: TextInputType.number, textInputType: TextInputType.number,
inputFormatter: ONLY_NUMBERS, inputFormatter: ONLY_NUMBERS,
@ -396,10 +428,12 @@ class _PatientSearchScreenState extends State<PatientSearchScreen> {
? _patientSearchFormValues ? _patientSearchFormValues
.setPatientID = 0 .setPatientID = 0
: _patientSearchFormValues : _patientSearchFormValues
.setPatientID = int.parse(value); .setPatientID =
int.parse(value);
if (value != null && if (value != null &&
value.trim().toString().isEmpty) { value.trim().toString().isEmpty) {
_patientSearchFormValues.setPatientID = 0; _patientSearchFormValues
.setPatientID = 0;
} }
}), }),
), ),
@ -408,14 +442,15 @@ class _PatientSearchScreenState extends State<PatientSearchScreen> {
), ),
Container( Container(
decoration: BoxDecoration( decoration: BoxDecoration(
borderRadius: borderRadius: BorderRadius.all(
BorderRadius.all(Radius.circular(6.0)), Radius.circular(6.0)),
border: Border.all( border: Border.all(
width: 1.0, color: HexColor("#CCCCCC"))), width: 1.0,
padding: EdgeInsets.only(top: 5), color: HexColor("#CCCCCC"))),
padding: EdgeInsets.all(10),
child: AppTextFormField( child: AppTextFormField(
labelText: labelText: TranslationBase.of(context)
TranslationBase.of(context).patientFile, .patientFile,
borderColor: Colors.white, borderColor: Colors.white,
textInputType: TextInputType.number, textInputType: TextInputType.number,
focusNode: _nodeText3, focusNode: _nodeText3,
@ -423,9 +458,11 @@ class _PatientSearchScreenState extends State<PatientSearchScreen> {
onSaved: (value) {}, onSaved: (value) {},
), ),
), ),
(!(_selectedType == '2' || _selectedType == '4')) (!(_selectedType == '2' ||
_selectedType == '4'))
? DynamicElements( ? DynamicElements(
_patientSearchFormValues, isFormSubmitted) _patientSearchFormValues,
isFormSubmitted)
: SizedBox( : SizedBox(
height: 0, height: 0,
), ),
@ -437,7 +474,8 @@ class _PatientSearchScreenState extends State<PatientSearchScreen> {
), ),
Container( Container(
child: Row( child: Row(
mainAxisAlignment: MainAxisAlignment.start, mainAxisAlignment:
MainAxisAlignment.start,
children: <Widget>[ children: <Widget>[
Container( Container(
decoration: BoxDecoration( decoration: BoxDecoration(
@ -464,18 +502,26 @@ class _PatientSearchScreenState extends State<PatientSearchScreen> {
AppText( AppText(
TranslationBase.of(context) TranslationBase.of(context)
.onlyArrivedPatient, .onlyArrivedPatient,
fontSize: SizeConfig.textMultiplier * 2), fontSize:
SizeConfig.textMultiplier * 2),
])), ])),
SizedBox( SizedBox(
height: 10, height: 10,
), ),
])
: SizedBox(
height: SizeConfig.screenHeight * .4,
),
], ],
), ),
), ),
) ),
], ],
), ),
), ),
Column(
mainAxisAlignment: MainAxisAlignment.end,
children: [
Container( Container(
margin: EdgeInsets.all(SizeConfig.widthMultiplier * 5), margin: EdgeInsets.all(SizeConfig.widthMultiplier * 5),
child: Wrap( child: Wrap(
@ -491,7 +537,10 @@ class _PatientSearchScreenState extends State<PatientSearchScreen> {
), ),
), ),
], ],
)), ),
],
),
),
); );
} }
} }

@ -1,19 +1,19 @@
import 'package:doctor_app_flutter/config/config.dart'; import 'package:doctor_app_flutter/config/config.dart';
import 'package:doctor_app_flutter/config/shared_pref_kay.dart';
import 'package:doctor_app_flutter/core/viewModel/auth_view_model.dart';
import 'package:doctor_app_flutter/core/viewModel/patient_view_model.dart'; import 'package:doctor_app_flutter/core/viewModel/patient_view_model.dart';
import 'package:doctor_app_flutter/core/viewModel/project_view_model.dart'; import 'package:doctor_app_flutter/core/viewModel/project_view_model.dart';
import 'package:doctor_app_flutter/models/doctor/doctor_profile_model.dart'; import 'package:doctor_app_flutter/icons_app/doctor_app_icons.dart';
import 'package:doctor_app_flutter/models/doctor/profile_req_Model.dart';
import 'package:doctor_app_flutter/models/patient/patiant_info_model.dart'; import 'package:doctor_app_flutter/models/patient/patiant_info_model.dart';
import 'package:doctor_app_flutter/models/patient/patient_arrival/get_patient_arrival_list_request_model.dart'; import 'package:doctor_app_flutter/models/patient/patient_arrival/get_patient_arrival_list_request_model.dart';
import 'package:doctor_app_flutter/models/patient/patient_model.dart'; import 'package:doctor_app_flutter/models/patient/patient_model.dart';
import 'package:doctor_app_flutter/models/patient/topten_users_res_model.dart'; import 'package:doctor_app_flutter/models/patient/topten_users_res_model.dart';
import 'package:doctor_app_flutter/routes.dart'; import 'package:doctor_app_flutter/routes.dart';
import 'package:doctor_app_flutter/screens/base/base_view.dart'; import 'package:doctor_app_flutter/screens/base/base_view.dart';
import 'package:doctor_app_flutter/util/date-utils.dart';
import 'package:doctor_app_flutter/util/translations_delegate_base.dart'; import 'package:doctor_app_flutter/util/translations_delegate_base.dart';
import 'package:doctor_app_flutter/widgets/patients/PatientCard.dart'; import 'package:doctor_app_flutter/widgets/patients/PatientCard.dart';
import 'package:doctor_app_flutter/widgets/patients/clinic_list_dropdwon.dart'; import 'package:doctor_app_flutter/widgets/patients/clinic_list_dropdwon.dart';
import 'package:doctor_app_flutter/widgets/shared/app_button.dart';
import 'package:doctor_app_flutter/widgets/shared/app_buttons_widget.dart';
import 'package:doctor_app_flutter/widgets/shared/app_texts_widget.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/dr_app_circular_progress_Indeicator.dart';
import 'package:doctor_app_flutter/widgets/shared/errors/dr_app_embedded_error.dart'; import 'package:doctor_app_flutter/widgets/shared/errors/dr_app_embedded_error.dart';
@ -63,7 +63,7 @@ class _PatientsScreenState extends State<PatientsScreen> {
bool isSearch = false; bool isSearch = false;
String patientTypeTitle; String patientTypeTitle;
var _isLoading = true; var _isLoading = true;
var selectedFilter = 1;
bool _isError = false; bool _isError = false;
String error = ""; String error = "";
ProjectViewModel projectsProvider; ProjectViewModel projectsProvider;
@ -72,7 +72,6 @@ class _PatientsScreenState extends State<PatientsScreen> {
PatientModel patient; PatientModel patient;
searchData(String str) { searchData(String str) {
this.responseModelList = this.responseModelList2; this.responseModelList = this.responseModelList2;
var strExist = str.length > 0 ? true : false; var strExist = str.length > 0 ? true : false;
@ -202,24 +201,13 @@ class _PatientsScreenState extends State<PatientsScreen> {
Widget build(BuildContext context) { Widget build(BuildContext context) {
authProvider = Provider.of(context); authProvider = Provider.of(context);
_locations = [ _locations = [
TranslationBase TranslationBase.of(context).all,
.of(context) TranslationBase.of(context).today,
.all, TranslationBase.of(context).tomorrow,
TranslationBase TranslationBase.of(context).nextWeek,
.of(context)
.today,
TranslationBase
.of(context)
.tomorrow,
TranslationBase
.of(context)
.nextWeek,
]; ];
projectsProvider = Provider.of(context); projectsProvider = Provider.of(context);
final routeArgs = ModalRoute final routeArgs = ModalRoute.of(context).settings.arguments as Map;
.of(context)
.settings
.arguments as Map;
patient = widget.patientSearchForm != null patient = widget.patientSearchForm != null
? widget.patientSearchForm ? widget.patientSearchForm
@ -313,23 +301,11 @@ class _PatientsScreenState extends State<PatientsScreen> {
: _isError : _isError
? DrAppEmbeddedError(error: error) ? DrAppEmbeddedError(error: error)
: lItems == null || lItems.length == 0 : lItems == null || lItems.length == 0
? Column( ? DrAppEmbeddedError(
children: [
if(int.parse(patientType)==7)
ClinicList(clinicId: clinicId,onClinicChange: (newValue) {
clinicId = newValue;
changeClinic(newValue, context, model);
},),
Divider(
thickness: 0.8,
color: Color(0xffCCCCCC),
),
DrAppEmbeddedError(
error: error:
TranslationBase.of(context).youDontHaveAnyPatient), TranslationBase.of(context).youDontHaveAnyPatient)
],
)
: Container( : Container(
color: Colors.grey[200],
child: ListView( child: ListView(
scrollDirection: Axis.vertical, scrollDirection: Axis.vertical,
children: <Widget>[ children: <Widget>[
@ -352,20 +328,11 @@ class _PatientsScreenState extends State<PatientsScreen> {
) )
: Column( : Column(
children: <Widget>[ children: <Widget>[
Padding(
padding: EdgeInsets.only(
top:0),
child: SERVICES_PATIANT2[
int.parse(patientType)] ==
"List_MyOutPatient"
? _locationBar(context)
: Container(),
),
SizedBox(height: 18.5), SizedBox(height: 18.5),
Container( Container(
width: SizeConfig.screenWidth * 0.9, width: SizeConfig.screenWidth * 0.9,
height: height:
SizeConfig.screenHeight * 0.05, SizeConfig.screenHeight * 0.07,
child: TextField( child: TextField(
controller: _controller, controller: _controller,
onChanged: (String str) { onChanged: (String str) {
@ -373,37 +340,115 @@ class _PatientsScreenState extends State<PatientsScreen> {
}, },
decoration: buildInputDecoration( decoration: buildInputDecoration(
context, context,
TranslationBase TranslationBase.of(context)
.of(context)
.searchPatient), .searchPatient),
), ),
), ),
SizedBox( SizedBox(
height: 10.0, height: 10.0,
), ),
if(int.parse(patientType)==7) Padding(
ClinicList(clinicId: clinicId,onClinicChange: (newValue) { padding: EdgeInsets.only(
clinicId = newValue; top: MediaQuery.of(context)
changeClinic(newValue, context, model); .size
},), .height *
Divider( 0.03),
thickness: 0.8, child: SERVICES_PATIANT2[
color: Color(0xffCCCCCC), int.parse(patientType)] ==
"List_MyOutPatient"
? _locationBar(context)
: Container(),
),
// Row(
// mainAxisAlignment:
// MainAxisAlignment.spaceEvenly,
// children: [
// AppButton(
// title: TranslationBase.of(context)
// .all,
// onPressed: () {
// setState(() {
// selectedFilter = 1;
// filterPatients();
// });
// },
// color: selectedFilter == 1
// ? Colors.red[800]
// : Colors.grey[300],
// fontColor: selectedFilter == 1
// ? Colors.white
// : Colors.black,
// ),
// AppButton(
// title: TranslationBase.of(context)
// .today,
// onPressed: () {
// setState(() {
// selectedFilter = 2;
// filterPatients();
// });
// },
// color: selectedFilter == 2
// ? Colors.red[800]
// : Colors.grey[300],
// fontColor: selectedFilter == 2
// ? Colors.white
// : Colors.black,
// ),
// AppButton(
// title: TranslationBase.of(context)
// .tomorrow,
// onPressed: () {
// setState(() {
// selectedFilter = 3;
// filterPatients();
// });
// },
// color: selectedFilter == 3
// ? Colors.red[800]
// : Colors.grey[300],
// fontColor: selectedFilter == 3
// ? Colors.white
// : Colors.black,
// ),
// AppButton(
// title: TranslationBase.of(context)
// .nextWeek,
// onPressed: () {
// setState(() {
// selectedFilter = 4;
// // filterPatients();
// });
// },
// color: selectedFilter == 4
// ? Colors.red[800]
// : Colors.grey[300],
// fontColor: selectedFilter == 4
// ? Colors.white
// : Colors.black,
// ),
// ],
// ),
SizedBox(
height: 10.0,
), ),
// Divider(
// thickness: 0.8,
// color: Color(0xffCCCCCC),
// ),
Container( Container(
decoration: BoxDecoration( // decoration: BoxDecoration(
color: Color(0Xffffffff), // color: Color(0Xffffffff),
borderRadius: // borderRadius:
BorderRadius.circular(20)), // BorderRadius.circular(20)),
margin:
EdgeInsets.fromLTRB(0, 0, 0, 0),
child: (responseModelList.length > 0) child: (responseModelList.length > 0)
? Column( ? Column(
// mainAxisAlignment: MainAxisAlignment.center, // mainAxisAlignment: MainAxisAlignment.center,
children: responseModelList children: responseModelList
.map((PatiantInformtion .map((PatiantInformtion
item) { item) {
return PatientCard(patientInfo: item, return PatientCard(
patientInfo: item,
patientType: patientType, patientType: patientType,
onTap: () { onTap: () {
Navigator.of(context) Navigator.of(context)
@ -411,11 +456,15 @@ class _PatientsScreenState extends State<PatientsScreen> {
PATIENTS_PROFILE, PATIENTS_PROFILE,
arguments: { arguments: {
"patient": item, "patient": item,
"patientType":patientType, "patientType":
"from" : patient.getFrom, patientType,
"to" : patient.getTo,"isSearch" : isSearch, "from": patient
.getFrom,
"to":
patient.getTo,
}); });
},); },
);
}).toList(), }).toList(),
) )
: Center( : Center(
@ -519,7 +568,12 @@ class _PatientsScreenState extends State<PatientsScreen> {
InputDecoration buildInputDecoration(BuildContext context, hint) { InputDecoration buildInputDecoration(BuildContext context, hint) {
return InputDecoration( return InputDecoration(
prefixIcon: Icon(Icons.search, color: Colors.grey), suffixIcon: IconButton(
icon: new Image.asset("assets/images/filter-512.png"),
color: Colors.grey,
onPressed: () {},
iconSize: 20,
),
filled: true, filled: true,
fillColor: Colors.white, fillColor: Colors.white,
hintText: hint, hintText: hint,
@ -541,9 +595,9 @@ class _PatientsScreenState extends State<PatientsScreen> {
decoration: BoxDecoration( decoration: BoxDecoration(
color: Color(0Xffffffff), color: Color(0Xffffffff),
borderRadius: BorderRadius.circular(12.5), borderRadius: BorderRadius.circular(12.5),
border: Border.all( // border: Border.all(
width: 0.5, // width: 0.5,
), // ),
), ),
child: Row( child: Row(
mainAxisAlignment: MainAxisAlignment.spaceEvenly, mainAxisAlignment: MainAxisAlignment.spaceEvenly,

@ -26,7 +26,7 @@ import 'package:provider/provider.dart';
class PatientProfileScreen extends StatelessWidget { class PatientProfileScreen extends StatelessWidget {
PatiantInformtion patient; PatiantInformtion patient;
bool isFromSearch = false; bool isFromSearch = false;
//TODO change it
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
final routeArgs = ModalRoute.of(context).settings.arguments as Map; final routeArgs = ModalRoute.of(context).settings.arguments as Map;

@ -35,7 +35,7 @@ class _NewPrescriptionScreenState extends State<NewPrescriptionScreen> {
final routeArgs = ModalRoute.of(context).settings.arguments as Map; final routeArgs = ModalRoute.of(context).settings.arguments as Map;
patient = routeArgs['patient']; patient = routeArgs['patient'];
return BaseView<PrescriptionViewModel>( return BaseView<PrescriptionViewModel>(
onModelReady: (model) => model.getPrescription(mrn: patient.patientMRN), onModelReady: (model) => model.getPrescription(mrn: 0),
builder: builder:
(BuildContext context, PrescriptionViewModel model, Widget child) => (BuildContext context, PrescriptionViewModel model, Widget child) =>
AppScaffold( AppScaffold(
@ -45,6 +45,7 @@ class _NewPrescriptionScreenState extends State<NewPrescriptionScreen> {
baseViewModel: model, baseViewModel: model,
child: SingleChildScrollView( child: SingleChildScrollView(
child: Container( child: Container(
color: Colors.white,
child: Column( child: Column(
children: [ children: [
PatientPageHeaderWidget(patient), PatientPageHeaderWidget(patient),
@ -135,6 +136,7 @@ class _NewPrescriptionScreenState extends State<NewPrescriptionScreen> {
height: 50.0, height: 50.0,
width: 450.0, width: 450.0,
decoration: BoxDecoration( decoration: BoxDecoration(
color: Colors.white,
border: Border.all( border: Border.all(
color: Colors.grey), color: Colors.grey),
borderRadius: borderRadius:
@ -174,12 +176,13 @@ class _NewPrescriptionScreenState extends State<NewPrescriptionScreen> {
}, },
), ),
SizedBox( SizedBox(
height: 15.0, height: 10.0,
), ),
...List.generate( ...List.generate(
model.prescriptionList[0] model.prescriptionList[0]
.rowcount, .rowcount,
(index) => Container( (index) => Container(
color: Colors.white,
child: Column( child: Column(
children: [ children: [
SizedBox( SizedBox(
@ -197,6 +200,7 @@ class _NewPrescriptionScreenState extends State<NewPrescriptionScreen> {
// CrossAxisAlignment.start, // CrossAxisAlignment.start,
children: [ children: [
Container( Container(
color: Colors.white,
height: MediaQuery.of( height: MediaQuery.of(
context) context)
.size .size
@ -260,6 +264,7 @@ class _NewPrescriptionScreenState extends State<NewPrescriptionScreen> {
), ),
), ),
Container( Container(
color: Colors.white,
// height: MediaQuery.of( // height: MediaQuery.of(
// context) // context)
// .size // .size
@ -324,6 +329,8 @@ class _NewPrescriptionScreenState extends State<NewPrescriptionScreen> {
Row( Row(
children: [ children: [
Container( Container(
color: Colors
.white,
child: child:
Expanded( Expanded(
child: child:
@ -533,6 +540,8 @@ class _NewPrescriptionScreenState extends State<NewPrescriptionScreen> {
Expanded( Expanded(
child: child:
Container( Container(
color: Colors
.white,
// height: MediaQuery.of(context).size.height * // height: MediaQuery.of(context).size.height *
// 0.038, // 0.038,
child: child:
@ -567,6 +576,7 @@ class _NewPrescriptionScreenState extends State<NewPrescriptionScreen> {
), ),
), ),
Container( Container(
color: Colors.white,
height: MediaQuery.of( height: MediaQuery.of(
context) context)
.size .size

@ -47,6 +47,7 @@ class _NewPrescriptionHistoryScreenState
baseViewModel: model, baseViewModel: model,
child: SingleChildScrollView( child: SingleChildScrollView(
child: Container( child: Container(
color: Colors.white,
child: Column( child: Column(
children: [ children: [
PatientPageHeaderWidget(patient), PatientPageHeaderWidget(patient),
@ -83,6 +84,7 @@ class _NewPrescriptionHistoryScreenState
model.prescriptionList[0] model.prescriptionList[0]
.rowcount, .rowcount,
(index) => Container( (index) => Container(
color: Colors.white,
child: Column( child: Column(
children: [ children: [
SizedBox( SizedBox(

@ -34,7 +34,7 @@ class _ProcedureScreenState extends State<ProcedureScreen> {
final routeArgs = ModalRoute.of(context).settings.arguments as Map; final routeArgs = ModalRoute.of(context).settings.arguments as Map;
patient = routeArgs['patient']; patient = routeArgs['patient'];
return BaseView<ProcedureViewModel>( return BaseView<ProcedureViewModel>(
onModelReady: (model) => model.getProcedure(mrn: patient.patientMRN), onModelReady: (model) => model.getProcedure(mrn: 0),
builder: (BuildContext context, ProcedureViewModel model, Widget child) => builder: (BuildContext context, ProcedureViewModel model, Widget child) =>
AppScaffold( AppScaffold(
isShowAppBar: true, isShowAppBar: true,
@ -43,6 +43,7 @@ class _ProcedureScreenState extends State<ProcedureScreen> {
baseViewModel: model, baseViewModel: model,
child: SingleChildScrollView( child: SingleChildScrollView(
child: Container( child: Container(
color: Colors.white,
child: Column( child: Column(
children: [ children: [
PatientPageHeaderWidget(patient), PatientPageHeaderWidget(patient),
@ -130,6 +131,7 @@ class _ProcedureScreenState extends State<ProcedureScreen> {
height: 50.0, height: 50.0,
width: 450.0, width: 450.0,
decoration: BoxDecoration( decoration: BoxDecoration(
color: Colors.white,
border: Border.all( border: Border.all(
color: Colors.grey), color: Colors.grey),
borderRadius: borderRadius:
@ -189,11 +191,12 @@ class _ProcedureScreenState extends State<ProcedureScreen> {
// ), // ),
// ), // ),
SizedBox( SizedBox(
height: 35.0, height: 10.0,
), ),
...List.generate( ...List.generate(
model.procedureList[0].rowcount, model.procedureList[0].rowcount,
(index) => Container( (index) => Container(
color: Colors.white,
child: Column( child: Column(
children: [ children: [
SizedBox( SizedBox(

@ -0,0 +1,133 @@
import 'package:doctor_app_flutter/config/size_config.dart';
import 'package:doctor_app_flutter/core/viewModel/patient_view_model.dart';
import 'package:doctor_app_flutter/core/viewModel/sick_leave_view_model.dart';
import 'package:doctor_app_flutter/icons_app/doctor_app_icons.dart';
import 'package:doctor_app_flutter/models/patient/patiant_info_model.dart';
import 'package:doctor_app_flutter/models/sickleave/get_all_sickleave_response.dart';
import 'package:doctor_app_flutter/screens/base/base_view.dart';
import 'package:doctor_app_flutter/screens/sick-leave/sick_leave.dart';
import 'package:doctor_app_flutter/util/dr_app_toast_msg.dart';
import 'package:doctor_app_flutter/util/translations_delegate_base.dart';
import 'package:doctor_app_flutter/widgets/patients/profile/patient-page-header-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:flutter/material.dart';
import 'package:hexcolor/hexcolor.dart';
class ShowSickLeaveScreen extends StatelessWidget {
PatiantInformtion patient;
@override
Widget build(BuildContext context) {
final routeArgs = ModalRoute.of(context).settings.arguments as Map;
patient = routeArgs['patient'];
return BaseView<SickLeaveViewModel>(
onModelReady: (model) => model.getSickLeave(patient.patientMRN ?? patient.patientId),
builder: (_, model, w) => AppScaffold(
baseViewModel: model,
appBarTitle: TranslationBase.of(context).sickleave,
body: SingleChildScrollView(
child: Column(
children: [
PatientPageHeaderWidget(patient),
Column(
children: model.getAllSIckLeave
.map<Widget>((GetAllSickLeaveResponse item) {
return CardWithBgWidgetNew(
widget: Column(
children: [
Container(
padding: EdgeInsets.only(left: 10, right: 10),
child: Row(
mainAxisAlignment: MainAxisAlignment.start,
children: <Widget>[
Expanded(
flex: 4,
child: Wrap(
// mainAxisAlignment:
// MainAxisAlignment.start,
children: <Widget>[
Column(
crossAxisAlignment:
CrossAxisAlignment.start,
children: <Widget>[
Container(
padding: EdgeInsets.all(3),
child: AppText(
item.status == 1
? TranslationBase.of(context)
.hold
: item.status == 2
? TranslationBase.of(
context)
.active
: TranslationBase.of(
context)
.all,
fontWeight: FontWeight.bold,
color: Colors.white,
),
color: item.status == 1
? Colors.yellow[800]
: item.status == 2
? Colors.green
: Colors.black,
),
Row(
children: [
AppText(
TranslationBase.of(context)
.leaveStartDate +
' ',
fontWeight: FontWeight.bold,
),
Flexible(
child: Text(
item.startDate,
overflow: TextOverflow.ellipsis,
))
],
),
AppText(
item.noOfDays.toString() +
' ' +
TranslationBase.of(context)
.daysSickleave,
fontWeight: FontWeight.bold,
),
Row(children: [
AppText(
item.remarks ?? "",
)
]),
],
),
SizedBox(
width: 20,
),
],
),
),
],
)),
SizedBox(
height: 20,
),
Divider(
height: 1,
),
],
));
}).toList(),
)
],
),
),
),
);
}
}

@ -1133,6 +1133,9 @@ class TranslationBase {
localizedValues['arrivalpatient'][locale.languageCode]; localizedValues['arrivalpatient'][locale.languageCode];
String get searchmedicinepatient => String get searchmedicinepatient =>
localizedValues['searchmedicinepatient'][locale.languageCode]; localizedValues['searchmedicinepatient'][locale.languageCode];
String get appointmentDate =>
localizedValues['appointmentDate'][locale.languageCode];
String get arrivedP => localizedValues['arrived_p'][locale.languageCode];
} }
class TranslationBaseDelegate extends LocalizationsDelegate<TranslationBase> { class TranslationBaseDelegate extends LocalizationsDelegate<TranslationBase> {

@ -4,6 +4,7 @@ import 'package:doctor_app_flutter/icons_app/doctor_app_icons.dart';
import 'package:doctor_app_flutter/models/patient/patiant_info_model.dart'; import 'package:doctor_app_flutter/models/patient/patiant_info_model.dart';
import 'package:doctor_app_flutter/util/date-utils.dart'; import 'package:doctor_app_flutter/util/date-utils.dart';
import 'package:doctor_app_flutter/util/translations_delegate_base.dart'; import 'package:doctor_app_flutter/util/translations_delegate_base.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/app_texts_widget.dart';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
@ -13,67 +14,96 @@ class PatientCard extends StatelessWidget {
final PatiantInformtion patientInfo; final PatiantInformtion patientInfo;
final Function onTap; final Function onTap;
final String patientType; final String patientType;
const PatientCard({Key key, this.patientInfo, this.onTap, this.patientType}) : super(key: key); const PatientCard({Key key, this.patientInfo, this.onTap, this.patientType})
: super(key: key);
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Container( return Container(
padding: EdgeInsets.all(10), width: SizeConfig.screenWidth * 0.95,
decoration: myBoxDecoration(), padding: EdgeInsets.only(left: 10, right: 10, bottom: 10),
margin: EdgeInsets.only(bottom: 12), decoration: BoxDecoration(
borderRadius: BorderRadius.circular(10), color: Colors.white),
margin: EdgeInsets.all(5),
child: InkWell( child: InkWell(
child: Column(
children: [
SERVICES_PATIANT2[int.parse(patientType)] == "patientArrivalList"
? Container(height: 5, color: Colors.green[800])
: Container(),
SizedBox(
height: 10,
),
SERVICES_PATIANT2[int.parse(patientType)] == "patientArrivalList"
? Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
AppText(
TranslationBase.of(context).arrivedP,
color: Colors.green[800],
fontWeight: FontWeight.bold,
),
AppText(patientInfo.arrivedOn)
],
)
: SizedBox(),
Padding(
padding: EdgeInsets.only(left: 12.0),
child: Row( child: Row(
children: <Widget>[ mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Row(children: [
AppText(
patientInfo.firstName + " " + patientInfo.lastName,
fontSize: SizeConfig.textMultiplier * 2.5,
fontWeight: FontWeight.bold,
backGroundcolor: Colors.white,
),
patientInfo.gender == 1
? Icon(
DoctorApp.male_2,
color: Colors.blue,
)
: Icon(
DoctorApp.female_1,
color: Colors.pink,
),
]),
AppText(
patientInfo.nationalityName ?? patientInfo.nationality,
fontWeight: FontWeight.bold,
)
],
)),
Row(children: <Widget>[
Column( Column(
mainAxisAlignment: mainAxisAlignment: MainAxisAlignment.start,
MainAxisAlignment children: <Widget>[
.start,
children: <
Widget>[
Padding( Padding(
padding: EdgeInsets padding: EdgeInsets.only(left: 12.0),
.only( child: Container(
left: decoration: BoxDecoration(
12.0),
child:
Container(
decoration:
BoxDecoration(
boxShadow: [ boxShadow: [
BoxShadow( BoxShadow(
color: Color.fromRGBO( color: Color.fromRGBO(0, 0, 0, 0.08),
0, offset: Offset(0.0, 5.0),
0, blurRadius: 16.0)
0,
0.08),
offset: Offset(0.0,
5.0),
blurRadius:
16.0)
], ],
borderRadius: borderRadius: BorderRadius.all(Radius.circular(35.0)),
BorderRadius.all( color: Color(0xffCCCCCC),
Radius.circular(35.0)),
color: Color(
0xffCCCCCC),
), ),
width: 70, width: 70,
height: 70, height: 70,
child: Icon( child: Icon(
patientInfo.genderDescription == patientInfo.gender == 1
"Male" ? DoctorApp.male
? DoctorApp : DoctorApp.female_icon,
.male
: DoctorApp
.female_icon,
size: 70, size: 70,
color: Colors color: Colors.white,
.white,
), ),
), ),
), ),
], ],
), ),
SizedBox( SizedBox(
width: 10, width: 10,
), ),
@ -81,93 +111,58 @@ class PatientCard extends StatelessWidget {
child: Column( child: Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
AppText(
patientInfo.firstName +
" " +
patientInfo.lastName,
fontSize:
2.0 * SizeConfig.textMultiplier,
fontWeight:
FontWeight.bold,
backGroundcolor:
Colors.white,
),
SizedBox(height: 12,),
Table(
border: TableBorder.symmetric(
// inside: BorderSide(width: 2.0, color: Colors.white),
),
// defaultVerticalAlignment:TableCellVerticalAlignment.middle ,
children: [
TableRow(children: [
Container( Container(
child: RichText( child: RichText(
text: new TextSpan( text: new TextSpan(
style: new TextStyle( style: new TextStyle(
fontSize: 2.0 * SizeConfig.textMultiplier, color: Colors.black), fontSize: 2.0 * SizeConfig.textMultiplier,
color: Colors.black),
children: <TextSpan>[ children: <TextSpan>[
new TextSpan( new TextSpan(
text: TranslationBase.of(context).fileNo, text: TranslationBase.of(context).fileNo,
style: TextStyle(fontWeight: FontWeight.w700, fontSize: 2.2 * SizeConfig.textMultiplier)), style: TextStyle(
new TextSpan(text: patientInfo.patientId.toString()), fontSize:
],),), 2.2 * SizeConfig.textMultiplier)),
),
Container(
child: RichText(
text: new TextSpan(
style: new TextStyle(
fontSize: 2.0 * SizeConfig.textMultiplier, color: Colors.black),
children: <TextSpan>[
new TextSpan( new TextSpan(
text: TranslationBase.of(context).age+ " : ", text: patientInfo.patientId.toString(),
style: TextStyle(fontWeight: FontWeight.w700, )), style: TextStyle(
new TextSpan(text: "${DateUtils.getAgeByBirthday(patientInfo.dateofBirth, context)}"), fontWeight: FontWeight.w700,
],),), )),
],
),
), ),
]
), ),
TableRow(children: [
SizedBox(height: 5,),
SizedBox(height: 5,)
]),
TableRow(children: [
Container( Container(
child: RichText( child: RichText(
text: new TextSpan( text: new TextSpan(
style: new TextStyle( style: new TextStyle(
fontSize: 2.0 * SizeConfig.textMultiplier, color: Colors.black), fontSize: 2.0 * SizeConfig.textMultiplier,
color: Colors.black),
children: <TextSpan>[ children: <TextSpan>[
new TextSpan( new TextSpan(
text: TranslationBase.of(context).nationality + " : ", text: TranslationBase.of(context).age + " : ",
style: TextStyle(fontWeight: FontWeight.w700, fontSize: 2.2 * SizeConfig.textMultiplier)),
new TextSpan(text: (patientInfo.nationalityName ?? patientInfo.nationality)),
],),),
), ),
Container(
child: RichText(
text: new TextSpan(
style: new TextStyle(
fontSize: 2.0 * SizeConfig.textMultiplier, color: Colors.black),
children: <TextSpan>[
new TextSpan( new TextSpan(
text: TranslationBase.of(context).gender + " : ", text:
style: TextStyle(fontWeight: FontWeight.w700, )), "${DateUtils.getAgeByBirthday(patientInfo.dateofBirth, context)}",
new TextSpan(text: patientInfo.gender.toString() == '1' ? 'Male' : 'Female'), style: TextStyle(
],),), fontWeight: FontWeight.w700,
)),
],
), ),
]
), ),
],
), ),
if(SERVICES_PATIANT2[int.parse(patientType)] == "List_MyOutPatient") if (SERVICES_PATIANT2[int.parse(patientType)] ==
"List_MyOutPatient")
Container( Container(
child: Row( child: Row(
mainAxisAlignment: MainAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.start,
children: <Widget>[ children: <Widget>[
AppText(
TranslationBase.of(context).appointmentDate +
" : ",
fontSize: 14,
),
Container( Container(
height: 15, height: 15,
width: 60, width: 60,
@ -188,7 +183,8 @@ class PatientCard extends StatelessWidget {
), ),
Container( Container(
child: AppText( child: AppText(
convertDateFormat2(patientInfo.appointmentDate.toString()), convertDateFormat2(
patientInfo.appointmentDate.toString()),
fontSize: 1.5 * SizeConfig.textMultiplier, fontSize: 1.5 * SizeConfig.textMultiplier,
fontWeight: FontWeight.bold, fontWeight: FontWeight.bold,
), ),
@ -198,18 +194,84 @@ class PatientCard extends StatelessWidget {
) )
], ],
), ),
margin: EdgeInsets.only(top: 8,), margin: EdgeInsets.only(
top: 8,
),
) )
]))
]),
], ],
), ),
), onTap: onTap,
));
// ]),
// TableRow(children: [
// SizedBox(
// height: 5,
// ),
// SizedBox(
// height: 5,
// )
// ]),
// TableRow(children: [
// Container(
// child: RichText(
// text: new TextSpan(
// style: new TextStyle(
// fontSize: 2.0 * SizeConfig.textMultiplier,
// color: Colors.black),
// children: <TextSpan>[
// new TextSpan(
// text: TranslationBase.of(context)
// .nationality +
// " : ",
// style: TextStyle(
// fontWeight: FontWeight.w700,
// fontSize: 2.2 *
// SizeConfig.textMultiplier)),
// // ,
// ],
// ),
// ),
// ),
// Container(
// child: RichText(
// text: new TextSpan(
// style: new TextStyle(
// fontSize: 2.0 * SizeConfig.textMultiplier,
// color: Colors.black),
// children: <TextSpan>[
// new TextSpan(
// text:
// TranslationBase.of(context).gender +
// " : ",
// style: TextStyle(
// fontWeight: FontWeight.w700,
// )),
// new TextSpan(
// text:
// patientInfo.gender.toString() == '1'
// ? 'Male'
// : 'Female'),
// ],
// ),
// ),
// ),
// ]),
// ],
//),
// ),
// Divider(color: Colors.grey) // Divider(color: Colors.grey)
], //],
), //),
onTap: onTap, //],
), //),
); // onTap: onTap,
// ),
//);
} }
convertDateFormat2(String str) { convertDateFormat2(String str) {
@ -234,11 +296,11 @@ class PatientCard extends StatelessWidget {
myBoxDecoration() { myBoxDecoration() {
return BoxDecoration( return BoxDecoration(
border: Border( border: Border(
bottom: BorderSide( top: BorderSide(
color: Color(0xffCCCCCC), color: Colors.green,
width: 0.5, width: 5,
), ),
), ),
); borderRadius: BorderRadius.circular(10));
} }
} }

@ -4,6 +4,7 @@ import 'package:doctor_app_flutter/util/translations_delegate_base.dart';
import 'package:doctor_app_flutter/widgets/patients/profile/soap_update/custom_validation_error.dart'; import 'package:doctor_app_flutter/widgets/patients/profile/soap_update/custom_validation_error.dart';
import 'package:doctor_app_flutter/widgets/shared/app_text_form_field.dart'; import 'package:doctor_app_flutter/widgets/shared/app_text_form_field.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:hexcolor/hexcolor.dart';
import 'package:intl/intl.dart'; import 'package:intl/intl.dart';
class DynamicElements extends StatefulWidget { class DynamicElements extends StatefulWidget {
@ -40,12 +41,7 @@ class _DynamicElementsState extends State<DynamicElements> {
pickedDate.day.toString().padLeft(2, '0'); pickedDate.day.toString().padLeft(2, '0');
_fromDateController.text = selectedDate; _fromDateController.text = selectedDate;
} else { } else {
selectedDate = pickedDate.year.toString() + selectedDate = pickedDate.year.toString() +
"-" + "-" +
pickedDate.month.toString().padLeft(2, '0') + pickedDate.month.toString().padLeft(2, '0') +
@ -61,11 +57,12 @@ class _DynamicElementsState extends State<DynamicElements> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
final screenSize = MediaQuery final screenSize = MediaQuery.of(context).size;
.of(context) InputDecoration textFieldSelectorDecoration(
.size; {String hintText,
InputDecoration textFieldSelectorDecoration({String hintText, String selectedText,
String selectedText, bool isDropDown,IconData icon}) { bool isDropDown,
IconData icon}) {
return InputDecoration( return InputDecoration(
focusedBorder: OutlineInputBorder( focusedBorder: OutlineInputBorder(
borderSide: BorderSide(color: Color(0xFFCCCCCC), width: 2.0), borderSide: BorderSide(color: Color(0xFFCCCCCC), width: 2.0),
@ -85,9 +82,9 @@ class _DynamicElementsState extends State<DynamicElements> {
fontSize: 14, fontSize: 14,
color: Colors.grey.shade600, color: Colors.grey.shade600,
), ),
) );
;
} }
return LayoutBuilder( return LayoutBuilder(
builder: (ctx, constraints) { builder: (ctx, constraints) {
return Column( return Column(
@ -99,7 +96,13 @@ class _DynamicElementsState extends State<DynamicElements> {
SizedBox( SizedBox(
height: 10, height: 10,
), ),
AppTextFormField( Container(
decoration: BoxDecoration(
borderRadius: BorderRadius.all(Radius.circular(6.0)),
border: Border.all(width: 1.0, color: HexColor("#CCCCCC"))),
padding: EdgeInsets.all(10),
child: AppTextFormField(
borderColor: Colors.white,
onTap: () => _presentDatePicker('_selectedFromDate'), onTap: () => _presentDatePicker('_selectedFromDate'),
hintText: TranslationBase.of(context).fromDate, hintText: TranslationBase.of(context).fromDate,
controller: _fromDateController, controller: _fromDateController,
@ -108,43 +111,48 @@ class _DynamicElementsState extends State<DynamicElements> {
if (_fromDateController.text.toString().trim().isEmpty) { if (_fromDateController.text.toString().trim().isEmpty) {
widget._patientSearchFormValues.From = "0"; widget._patientSearchFormValues.From = "0";
} else { } else {
widget._patientSearchFormValues.From = _fromDateController.text.replaceAll("/", "-"); widget._patientSearchFormValues.From =
_fromDateController.text.replaceAll("/", "-");
} }
}, },
readOnly: true, readOnly: true,
)),
),
SizedBox( SizedBox(
height: 5, height: 5,
), ),
if(widget._patientSearchFormValues.From == "0" && widget.isFormSubmitted) if (widget._patientSearchFormValues.From == "0" &&
CustomValidationError(),SizedBox( widget.isFormSubmitted)
CustomValidationError(),
SizedBox(
height: 10, height: 10,
), ),
AppTextFormField( Container(
decoration: BoxDecoration(
border: Border.all(width: 1.0, color: HexColor("#CCCCCC")),
borderRadius: BorderRadius.all(Radius.circular(6.0))),
padding: EdgeInsets.all(10),
child: AppTextFormField(
readOnly: true, readOnly: true,
hintText: TranslationBase borderColor: Colors.white,
.of(context) hintText: TranslationBase.of(context).toDate,
.toDate,
controller: _toDateController, controller: _toDateController,
onTap: () { onTap: () {
_presentDatePicker('_selectedToDate'); _presentDatePicker('_selectedToDate');
}, },
inputFormatter: ONLY_DATE, inputFormatter: ONLY_DATE,
onSaved: (value) { onSaved: (value) {
if (_toDateController.text if (_toDateController.text.toString().trim().isEmpty) {
.toString()
.trim()
.isEmpty) {
widget._patientSearchFormValues.To = "0"; widget._patientSearchFormValues.To = "0";
} else { } else {
widget._patientSearchFormValues.To = widget._patientSearchFormValues.To =
_toDateController.text.replaceAll("/", "-"); _toDateController.text.replaceAll("/", "-");
} }
}, },
), )),
if(widget._patientSearchFormValues.To == "0" && widget.isFormSubmitted) if (widget._patientSearchFormValues.To == "0" &&
CustomValidationError(),SizedBox( widget.isFormSubmitted)
CustomValidationError(),
SizedBox(
height: 10, height: 10,
), ),
], ],

@ -17,7 +17,6 @@ import '../../../config/size_config.dart';
import '../../shared/app_texts_widget.dart'; import '../../shared/app_texts_widget.dart';
class ProfileMedicalInfoWidget extends StatelessWidget { class ProfileMedicalInfoWidget extends StatelessWidget {
String from; String from;
String to; String to;
PatiantInformtion patient; PatiantInformtion patient;
@ -132,7 +131,7 @@ class ProfileMedicalInfoWidget extends StatelessWidget {
? PatientProfileButton( ? PatientProfileButton(
key: key, key: key,
patient: patient, patient: patient,
route: ORDER_PRESCRIPTION, route: ORDER_PRESCRIPTION_HISTORY,
nameLine1: TranslationBase.of(context).orders, nameLine1: TranslationBase.of(context).orders,
nameLine2: TranslationBase.of(context).prescription, nameLine2: TranslationBase.of(context).prescription,
icon: 'lab.png') icon: 'lab.png')

@ -87,6 +87,20 @@ class ProfileMedicalInfoWidgetSearch extends StatelessWidget {
nameLine1: TranslationBase.of(context).previewHealth, nameLine1: TranslationBase.of(context).previewHealth,
nameLine2: TranslationBase.of(context).summaryReport, nameLine2: TranslationBase.of(context).summaryReport,
icon: 'radiology-1.png'), icon: 'radiology-1.png'),
PatientProfileButton(
key: key,
patient: patient,
route: PATIENT_ECG,
nameLine1: TranslationBase.of(context).patient,
nameLine2: "ECG",
icon: 'lab.png'),
PatientProfileButton(
key: key,
patient: patient,
route: SHOW_SICKLEAVE,
nameLine1: TranslationBase.of(context).patientSick,
nameLine2: TranslationBase.of(context).leave,
icon: 'sick_leaves_icons.png'),
], ],
), ),
); );

@ -573,7 +573,7 @@ packages:
name: meta name: meta
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "1.3.0-nullsafety.4" version: "1.3.0-nullsafety.3"
mime: mime:
dependency: transitive dependency: transitive
description: description:
@ -844,7 +844,7 @@ packages:
name: stack_trace name: stack_trace
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "1.10.0-nullsafety.2" version: "1.10.0-nullsafety.1"
stream_channel: stream_channel:
dependency: transitive dependency: transitive
description: description:
@ -986,5 +986,5 @@ packages:
source: hosted source: hosted
version: "2.2.1" version: "2.2.1"
sdks: sdks:
dart: ">=2.10.0 <=2.11.0-213.1.beta" dart: ">=2.10.0 <2.11.0"
flutter: ">=1.22.0 <2.0.0" flutter: ">=1.22.0 <2.0.0"

Loading…
Cancel
Save