Merge branches 'development' and 'progress_note' of https://gitlab.com/Cloud_Solution/doctor_app_flutter into progress_note

merge-requests/537/head
Elham Rababah 5 years ago
commit 0909879ccf

@ -437,6 +437,10 @@ const Map<String, Map<String, String>> localizedValues = {
'en': "Expected Admission Date", 'en': "Expected Admission Date",
'ar': 'تاريخ القبول المتوقع' 'ar': 'تاريخ القبول المتوقع'
}, },
'admissionDate': {
'en': "Admission Date",
'ar': 'تاريخ القبول'
},
// 'emergencyAdmission': {'en': "EMERGENCY ADMISSION", 'ar': 'دخول الطوارئ'}, // 'emergencyAdmission': {'en': "EMERGENCY ADMISSION", 'ar': 'دخول الطوارئ'},
'isSickLeaveRequired': { 'isSickLeaveRequired': {
'en': "Is Sick Leave Required", 'en': "Is Sick Leave Required",
@ -852,4 +856,7 @@ const Map<String, Map<String, String>> localizedValues = {
}, },
"updateNow": {"en": "Update Now", "ar": "تحديث الان"}, "updateNow": {"en": "Update Now", "ar": "تحديث الان"},
"updateTheApp": {"en": "Update The App", "ar": "تحديث التطبيق"}, "updateTheApp": {"en": "Update The App", "ar": "تحديث التطبيق"},
"admission-date": {"en": "Admission Date", "ar": "تاريخ القبول"},
"noOfDays": {"en": "No of days", "ar": "عدد الأيام"},
"numOfDays": {"en": "Number of Days", "ar": "عدد الأيام"},
}; };

@ -68,4 +68,29 @@ class VitalSignsService extends BaseService {
body: body, body: body,
); );
} }
Future getInPatientVitalSignHistory(PatiantInformtion patient) async {
hasError = false;
Map<String, dynamic> body = Map();
body['PatientID'] = patient.patientId;
body['InOutPatientType'] = 1;
body['PatientTypeID'] = 1;
await baseAppClient.post(
GET_PATIENT_VITAL_SIGN,
onSuccess: (dynamic response, int statusCode) {
patientVitalSignsHistory.clear();
if (response['List_DoctorPatientVitalSign'] != null) {
response['List_DoctorPatientVitalSign'].forEach((v) {
patientVitalSignsHistory.add(new VitalSignHistory.fromJson(v));
});
}
},
onFailure: (String error, int statusCode) {
hasError = true;
super.error = error.toString();
},
body: body,
);
}
} }

@ -138,42 +138,6 @@ class PatientService extends BaseService {
return Future.value(localRes); return Future.value(localRes);
} }
Future getPatientVitalSign(patient) async {
hasError = false;
await baseAppClient.post(
GET_PATIENT_VITAL_SIGN,
onSuccess: (dynamic response, int statusCode) {
_patientVitalSignList = [];
response['List_DoctorPatientVitalSign'].forEach((v) {
_patientVitalSignList.add(new VitalSignResModel.fromJson(v));
});
if (_patientVitalSignList.length > 0) {
List<VitalSignResModel> patientVitalSignOrderdSubListTemp = [];
patientVitalSignOrderdSubListTemp = _patientVitalSignList;
patientVitalSignOrderdSubListTemp
.sort((VitalSignResModel a, VitalSignResModel b) {
return b.vitalSignDate.microsecondsSinceEpoch -
a.vitalSignDate.microsecondsSinceEpoch;
});
patientVitalSignOrderdSubList.clear();
int length = patientVitalSignOrderdSubListTemp.length >= 20
? 20
: patientVitalSignOrderdSubListTemp.length;
for (int x = 0; x < length; x++) {
patientVitalSignOrderdSubList
.add(patientVitalSignOrderdSubListTemp[x]);
}
}
},
onFailure: (String error, int statusCode) {
hasError = true;
super.error = error;
},
body: patient,
);
}
Future getLabResultOrders(patient) async { Future getLabResultOrders(patient) async {
hasError = false; hasError = false;
await baseAppClient.post( await baseAppClient.post(

@ -38,7 +38,7 @@ class VitalSignsViewModel extends BaseViewModel {
} }
Future getPatientVitalSignHistory( Future getPatientVitalSignHistory(
PatiantInformtion patient, String from, String to) async { PatiantInformtion patient, String from, String to, bool isInPatient) async {
setState(ViewState.Busy); setState(ViewState.Busy);
if (from == null || from == "0") { if (from == null || from == "0") {
from = DateUtils.convertDateToFormat(DateTime.now(), 'yyyy-MM-dd'); from = DateUtils.convertDateToFormat(DateTime.now(), 'yyyy-MM-dd');
@ -47,7 +47,12 @@ class VitalSignsViewModel extends BaseViewModel {
to = DateUtils.convertDateToFormat(DateTime.now(), 'yyyy-MM-dd'); to = DateUtils.convertDateToFormat(DateTime.now(), 'yyyy-MM-dd');
} }
await _vitalSignService.getPatientVitalSignsHistory(patient, from, to); if(isInPatient){
await _vitalSignService.getInPatientVitalSignHistory(patient);
}else {
await _vitalSignService.getPatientVitalSignsHistory(patient, from, to);
}
if (_vitalSignService.hasError) { if (_vitalSignService.hasError) {
error = _vitalSignService.error; error = _vitalSignService.error;
setState(ViewState.Error); setState(ViewState.Error);

@ -66,16 +66,6 @@ class PatientViewModel extends BaseViewModel {
return localRes; return localRes;
} }
Future getPatientVitalSign(patient) async {
setState(ViewState.Busy);
await _patientService.getPatientVitalSign(patient);
if (_patientService.hasError) {
error = _patientService.error;
setState(ViewState.Error);
} else
setState(ViewState.Idle);
}
Future getLabResultOrders(patient) async { Future getLabResultOrders(patient) async {
setState(ViewState.Busy); setState(ViewState.Busy);
await _patientService.getLabResultOrders(patient); await _patientService.getLabResultOrders(patient);

@ -35,7 +35,7 @@ class VitalSignHistory {
var triageCategory; var triageCategory;
var gCScore; var gCScore;
var lineItemNo; var lineItemNo;
DateTime vitalSignDate; var vitalSignDate;
var actualTimeTaken; var actualTimeTaken;
var sugarLevel; var sugarLevel;
var fBS; var fBS;

@ -2,15 +2,17 @@ import 'package:flutter/material.dart';
import 'package:hexcolor/hexcolor.dart'; import 'package:hexcolor/hexcolor.dart';
class HomePageCard extends StatelessWidget { class HomePageCard extends StatelessWidget {
const HomePageCard({this.hasBorder = false, const HomePageCard(
this.imageName, {this.hasBorder = false,
@required this.child, this.imageName,
this.onTap, @required this.child,
Key key, this.onTap,
this.width, Key key,
this.height, this.width,
this.color, this.height,
this.opacity = 0.4}) this.color,
this.opacity = 0.4,
this.margin})
: super(key: key); : super(key: key);
final bool hasBorder; final bool hasBorder;
final String imageName; final String imageName;
@ -20,7 +22,7 @@ class HomePageCard extends StatelessWidget {
final double height; final double height;
final Color color; final Color color;
final double opacity; final double opacity;
final EdgeInsets margin;
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return InkWell( return InkWell(
@ -30,13 +32,14 @@ class HomePageCard extends StatelessWidget {
height: height != null height: height != null
? height ? height
: MediaQuery.of(context).orientation == Orientation.portrait : MediaQuery.of(context).orientation == Orientation.portrait
? MediaQuery.of(context).size.height * 0.18 ? MediaQuery.of(context).size.height * 0.18
: MediaQuery.of(context).size.height * 0.36, : MediaQuery.of(context).size.height * 0.36,
margin: this.margin,
decoration: BoxDecoration( decoration: BoxDecoration(
color: !hasBorder color: !hasBorder
? color != null ? color != null
? color ? color
: HexColor('#050705').withOpacity(opacity) : HexColor('#050705').withOpacity(opacity)
: Colors.white, : Colors.white,
borderRadius: BorderRadius.circular(15.0), borderRadius: BorderRadius.circular(15.0),
border: hasBorder border: hasBorder
@ -44,11 +47,11 @@ class HomePageCard extends StatelessWidget {
: Border.all(width: 0.0, color: Colors.transparent), : Border.all(width: 0.0, color: Colors.transparent),
image: imageName != null image: imageName != null
? DecorationImage( ? DecorationImage(
image: AssetImage('assets/images/dashboard/${imageName}'), image: AssetImage('assets/images/dashboard/${imageName}'),
fit: BoxFit.cover, fit: BoxFit.cover,
colorFilter: new ColorFilter.mode( colorFilter: new ColorFilter.mode(
Colors.black.withOpacity(0.2), BlendMode.dstIn), Colors.black.withOpacity(0.2), BlendMode.dstIn),
) )
: null, : null,
), ),
child: Center( child: Center(
@ -59,4 +62,4 @@ class HomePageCard extends StatelessWidget {
} }
getDashboardWidget() {} getDashboardWidget() {}
} }

@ -457,168 +457,189 @@ class _HomeScreenState extends State<HomeScreen> {
SizedBox( SizedBox(
height: 10, height: 10,
), ),
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween, new Container(
crossAxisAlignment: CrossAxisAlignment.start, height: 130,
children: <Widget>[ child: new ListView(
HomePageCard( scrollDirection: Axis.horizontal,
color: Colors.red[800], children: [
child: Column( HomePageCard(
mainAxisAlignment: MainAxisAlignment.center, color: Colors.red[800],
crossAxisAlignment: CrossAxisAlignment.start, margin: EdgeInsets.all(5),
children: <Widget>[ child: Column(
Padding( mainAxisAlignment:
padding: EdgeInsets.only( MainAxisAlignment.center,
top: 10, left: 10, right: 0), crossAxisAlignment:
child: Icon( CrossAxisAlignment.start,
DoctorApp.referral_1, children: <Widget>[
size: 35, Padding(
color: Colors.white, padding: EdgeInsets.only(
)), top: 10, left: 10, right: 0),
Container( child: Icon(
padding: EdgeInsets.all(10), DoctorApp.referral_1,
child: AppText( size: 35,
TranslationBase.of(context) color: Colors.white,
.patientsreferral, )),
color: Colors.white, Container(
textAlign: TextAlign.start, padding: EdgeInsets.all(10),
fontSize: 15, child: AppText(
)) TranslationBase.of(context)
], .patientsreferral,
), color: Colors.white,
hasBorder: false, textAlign: TextAlign.start,
onTap: () { fontSize: 15,
Navigator.push( ))
context, ],
MaterialPageRoute( ),
builder: (context) => hasBorder: false,
PatientReferralScreen(), onTap: () {
// MyReferredPatient(), Navigator.push(
context,
MaterialPageRoute(
builder: (context) =>
PatientReferralScreen(),
// MyReferredPatient(),
),
);
},
), ),
); HomePageCard(
}, color: Colors.grey[300],
), margin: EdgeInsets.all(5),
HomePageCard( child: Column(
color: Colors.grey[300], mainAxisAlignment:
child: Column( MainAxisAlignment.center,
mainAxisAlignment: MainAxisAlignment.center, crossAxisAlignment:
crossAxisAlignment: CrossAxisAlignment.start, CrossAxisAlignment.start,
children: <Widget>[ children: <Widget>[
Padding( Padding(
padding: EdgeInsets.only( padding: EdgeInsets.only(
top: 10, left: 10, right: 0), top: 10, left: 10, right: 0),
child: Icon( child: Icon(
DoctorApp.arrival_patients, DoctorApp.arrival_patients,
size: 35, size: 35,
color: Colors.black, color: Colors.black,
)), )),
Container( Container(
padding: EdgeInsets.all(10), padding: EdgeInsets.all(10),
child: AppText( child: AppText(
TranslationBase.of(context) TranslationBase.of(context)
.arrivalpatient, .arrivalpatient,
color: Colors.black, color: Colors.black,
textAlign: TextAlign.start, textAlign: TextAlign.start,
fontSize: 15, fontSize: 15,
)) ))
], ],
), ),
hasBorder: false, hasBorder: false,
onTap: () { onTap: () {
getRequestHeader(false); getRequestHeader(false);
Navigator.of(context) Navigator.of(context)
.pushNamed(PATIENTS, arguments: { .pushNamed(PATIENTS, arguments: {
"patientSearchForm": "patientSearchForm":
_patientSearchFormValues, _patientSearchFormValues,
"selectedType": "7", "selectedType": "7",
"arrivalType": "1" "arrivalType": "1"
}); });
}, },
), ),
HomePageCard( HomePageCard(
color: Colors.black, color: Colors.black,
child: Column( margin: EdgeInsets.all(5),
mainAxisAlignment: MainAxisAlignment.center, child: Column(
crossAxisAlignment: CrossAxisAlignment.start, mainAxisAlignment:
children: <Widget>[ MainAxisAlignment.center,
Padding( crossAxisAlignment:
padding: EdgeInsets.only( CrossAxisAlignment.start,
top: 10, left: 10, right: 0), children: <Widget>[
child: Icon( Padding(
DoctorApp.search, padding: EdgeInsets.only(
size: 32, top: 10, left: 10, right: 0),
color: Colors.white, child: Icon(
)), DoctorApp.search,
Container( size: 32,
padding: EdgeInsets.all(10), color: Colors.white,
child: AppText( )),
TranslationBase.of(context) Container(
.searchmedicinepatient, padding: EdgeInsets.all(10),
color: Colors.white, child: AppText(
textAlign: TextAlign.start, TranslationBase.of(context)
fontSize: 13, .searchmedicinepatient,
)) color: Colors.white,
], textAlign: TextAlign.start,
), fontSize: 13,
hasBorder: false, ))
onTap: () { ],
Navigator.push( ),
context, hasBorder: false,
MaterialPageRoute( onTap: () {
builder: (context) => Navigator.push(
SearchMedicinePatientScreen(), context,
)); MaterialPageRoute(
}, builder: (context) =>
) SearchMedicinePatientScreen(),
], ));
), },
SizedBox( ),
height: 10, HomePageCard(
), color: Colors.red[800],
Row( margin: EdgeInsets.all(5),
children: [ child: Column(
HomePageCard( mainAxisAlignment:
color: Colors.black, MainAxisAlignment.center,
child: Column( crossAxisAlignment:
mainAxisAlignment: MainAxisAlignment.center, CrossAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.start, children: <Widget>[
children: <Widget>[ Padding(
Padding( padding: EdgeInsets.only(
padding: EdgeInsets.only( top: 10, left: 10, right: 0),
top: 10, left: 10, right: 0), child: Icon(
child: Icon( DoctorApp.search,
DoctorApp.search, size: 32,
size: 32, color: Colors.white,
color: Colors.white, )),
)), Container(
Container( padding: EdgeInsets.all(10),
padding: EdgeInsets.all(10), child: AppText(
child: AppText( TranslationBase.of(context)
TranslationBase.of(context).inPatient, .inPatient,
color: Colors.white, color: Colors.white,
textAlign: TextAlign.start, textAlign: TextAlign.start,
fontSize: 13, fontSize: 13,
)) ))
], ],
), ),
hasBorder: false, hasBorder: false,
onTap: () { onTap: () {
getRequestHeader(true); getRequestHeader(true);
Navigator.of(context) Navigator.of(context)
.pushNamed(PATIENTS, arguments: { .pushNamed(PATIENTS, arguments: {
"patientSearchForm": "patientSearchForm":
_patientSearchFormValues, _patientSearchFormValues,
"selectedType": "1", "selectedType": "1",
"arrivalType": "1", "arrivalType": "1"
"isSearch":true });
}); },
}, )
) ])),
], // Row(
), // mainAxisAlignment: MainAxisAlignment.spaceBetween,
SizedBox( // crossAxisAlignment: CrossAxisAlignment.start,
height: 20, // children: <Widget>[
),
// ],
// ),
// SizedBox(
// height: 10,
// ),
// Row(
// children: [
// ],
// ),
// SizedBox(
// height: 20,
// ),
Row( Row(
// mainAxisAlignment: MainAxisAlignment.spaceAround, // mainAxisAlignment: MainAxisAlignment.spaceAround,
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,

@ -2,7 +2,6 @@ import 'package:doctor_app_flutter/config/size_config.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/app_texts_widget.dart'; import 'package:doctor_app_flutter/widgets/shared/app_texts_widget.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:hexcolor/hexcolor.dart';
/// * /// *
/// By Mousa Zaid Mousa Abuzaid /// By Mousa Zaid Mousa Abuzaid

@ -7,7 +7,9 @@ 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/screens/base/base_view.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/profile/patient-profile-header-new-design.dart'; import 'package:doctor_app_flutter/widgets/patients/profile/patient-profile-header-new-design.dart';
import 'package:doctor_app_flutter/widgets/patients/profile/patient-profile-header-new-design_in_patient.dart';
import 'package:doctor_app_flutter/widgets/patients/profile/profile_medical_info_widget.dart'; import 'package:doctor_app_flutter/widgets/patients/profile/profile_medical_info_widget.dart';
import 'package:doctor_app_flutter/widgets/patients/profile/profile_medical_info_widget_in_patient.dart';
import 'package:doctor_app_flutter/widgets/patients/profile/profile_medical_info_widget_search.dart'; import 'package:doctor_app_flutter/widgets/patients/profile/profile_medical_info_widget_search.dart';
import 'package:doctor_app_flutter/widgets/shared/app_scaffold_widget.dart'; import 'package:doctor_app_flutter/widgets/shared/app_scaffold_widget.dart';
import 'package:doctor_app_flutter/widgets/shared/buttons/app_buttons_widget.dart'; import 'package:doctor_app_flutter/widgets/shared/buttons/app_buttons_widget.dart';
@ -63,8 +65,11 @@ class PatientProfileScreen extends StatelessWidget {
child: Column( child: Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
PatientProfileHeaderNewDesign( !isFromSearch && patientType == "1"
patient, patientType, arrivalType), ? PatientProfileHeaderNewDesignInPatient(
patient, patientType, arrivalType)
: PatientProfileHeaderNewDesign(
patient, patientType, arrivalType),
Expanded( Expanded(
child: Padding( child: Padding(
padding: const EdgeInsets.all(16.0), padding: const EdgeInsets.all(16.0),
@ -79,13 +84,21 @@ class PatientProfileScreen extends StatelessWidget {
from: from, from: from,
to: to, to: to,
) )
: ProfileMedicalInfoWidget( : patientType == "1"
patient: patient, ? ProfileMedicalInfoWidgetInPatient(
patientType: patientType, patient: patient,
arrivalType: arrivalType, patientType: patientType,
from: from, arrivalType: arrivalType,
to: to, from: from,
), to: to,
)
: ProfileMedicalInfoWidget(
patient: patient,
patientType: patientType,
arrivalType: arrivalType,
from: from,
to: to,
),
], ],
), ),
), ),

@ -35,7 +35,7 @@ class VitalSignDetailsScreen extends StatelessWidget {
return BaseView<VitalSignsViewModel>( return BaseView<VitalSignsViewModel>(
onModelReady: (model) => onModelReady: (model) =>
model.getPatientVitalSignHistory(patient, from, to), model.getPatientVitalSignHistory(patient, from, to, patientType == "1"),
builder: (_, mode, widget) => AppScaffold( builder: (_, mode, widget) => AppScaffold(
baseViewModel: mode, baseViewModel: mode,
isShowAppBar: true, isShowAppBar: true,

@ -1229,6 +1229,10 @@ class TranslationBase {
String get updateNow => localizedValues['updateNow'][locale.languageCode]; String get updateNow => localizedValues['updateNow'][locale.languageCode];
String get updateTheApp => String get updateTheApp =>
localizedValues['updateTheApp'][locale.languageCode]; localizedValues['updateTheApp'][locale.languageCode];
String get admissionDate =>
localizedValues['admission-date'][locale.languageCode];
String get noOfDays => localizedValues['noOfDays'][locale.languageCode];
String get numOfDays => localizedValues['numOfDays'][locale.languageCode];
} }
class TranslationBaseDelegate extends LocalizationsDelegate<TranslationBase> { class TranslationBaseDelegate extends LocalizationsDelegate<TranslationBase> {

@ -29,23 +29,27 @@ class PatientCard extends StatelessWidget {
return Container( return Container(
width: SizeConfig.screenWidth * 0.9, width: SizeConfig.screenWidth * 0.9,
margin: EdgeInsets.all(6), margin: EdgeInsets.all(6),
padding: EdgeInsets.only(left: 0, right: 5, bottom: 5, top: 5), padding:
(SERVICES_PATIANT2[int.parse(patientType)] == "List_MyInPatient")
? EdgeInsets.only(left: 0, right: 5, bottom: 20, top: 5)
: EdgeInsets.only(left: 0, right: 5, bottom: 5, top: 5),
decoration: BoxDecoration( decoration: BoxDecoration(
borderRadius: BorderRadius.circular(15), borderRadius: BorderRadius.circular(15),
color: Colors.white, color: Colors.white,
), ),
child: Stack(children: [ child: Stack(children: [
Container( if (SERVICES_PATIANT2[int.parse(patientType)] == "List_MyOutPatient")
height: MediaQuery.of(context).size.height * .20, Container(
width: 5, height: MediaQuery.of(context).size.height * .20,
decoration: BoxDecoration( width: 5,
borderRadius: BorderRadius.only( decoration: BoxDecoration(
topLeft: Radius.circular(10), borderRadius: BorderRadius.only(
bottomLeft: Radius.circular(10)), topLeft: Radius.circular(10),
color: patientInfo.patientStatusType == 43 bottomLeft: Radius.circular(10)),
? Colors.green[500] color: patientInfo.patientStatusType == 43
: Colors.red[800], ? Colors.green[500]
)), : Colors.red[800],
)),
Container( Container(
padding: EdgeInsets.only(left: 10, right: 0, bottom: 0), padding: EdgeInsets.only(left: 10, right: 0, bottom: 0),
child: InkWell( child: InkWell(
@ -212,29 +216,84 @@ class PatientCard extends StatelessWidget {
), ),
), ),
), ),
Container( if (SERVICES_PATIANT2[int.parse(patientType)] ==
child: RichText( "List_MyOutPatient")
text: new TextSpan( Container(
style: new TextStyle( child: RichText(
fontSize: 2.0 * SizeConfig.textMultiplier, text: new TextSpan(
color: Colors.black, style: new TextStyle(
fontFamily: 'Poppins', fontSize: 2.0 * SizeConfig.textMultiplier,
color: Colors.black,
fontFamily: 'Poppins',
),
children: <TextSpan>[
new TextSpan(
text:
TranslationBase.of(context).age +
" : ",
style: TextStyle(fontSize: 14)),
new TextSpan(
text:
"${DateUtils.getAgeByBirthday(patientInfo.dateofBirth, context)}",
style: TextStyle(
fontWeight: FontWeight.w700,
fontSize: 15)),
],
), ),
children: <TextSpan>[ ),
),
if (SERVICES_PATIANT2[int.parse(patientType)] ==
"List_MyInPatient")
Container(
child: RichText(
text: new TextSpan(
style: new TextStyle(
fontSize:
2.0 * SizeConfig.textMultiplier,
color: Colors.black,
fontFamily: 'Poppins',
),
children: <TextSpan>[
new TextSpan( new TextSpan(
text: TranslationBase.of(context).age + text: TranslationBase.of(context)
.admissionDate +
" : ", " : ",
style: TextStyle(fontSize: 14)), style: TextStyle(fontSize: 14)),
new TextSpan( new TextSpan(
text: text:
"${DateUtils.getAgeByBirthday(patientInfo.dateofBirth, context)}", "${DateUtils.convertDateFromServerFormat(patientInfo.admissionDate.toString(), 'yyyy-MM-dd')}",
style: TextStyle( style: TextStyle(
fontWeight: FontWeight.w700, fontWeight: FontWeight.w700,
fontSize: 15)), fontSize: 15)),
], ]))),
), // Container(
), // child: Row(
), // crossAxisAlignment: CrossAxisAlignment.start,
// mainAxisAlignment: MainAxisAlignment.start,
// children: <Widget>[
// Expanded(
// child: AppText(
// TranslationBase.of(context).noOfDays +
// " : ",
// fontSize: 14,
// ),
// ),
// AppText(
// patientInfo.days,
// color: Colors.white,
// fontSize: 1.5 * SizeConfig.textMultiplier,
// textAlign: TextAlign.center,
// fontWeight: FontWeight.bold,
// ),
// SizedBox(
// height: 0.5,
// )
// ],
// ),
// margin: EdgeInsets.only(
// top: 8,
// ),
// ),
if (SERVICES_PATIANT2[int.parse(patientType)] == if (SERVICES_PATIANT2[int.parse(patientType)] ==
"List_MyOutPatient") "List_MyOutPatient")
Container( Container(

@ -110,6 +110,9 @@ class PatientProfileButton extends StatelessWidget {
} }
void navigator(BuildContext context, route) { void navigator(BuildContext context, route) {
if(route == null)
return;
if (from == null) { if (from == null) {
from = DateUtils.convertDateToFormat(DateTime.now(), 'yyyy-MM-dd'); from = DateUtils.convertDateToFormat(DateTime.now(), 'yyyy-MM-dd');
} }

@ -0,0 +1,238 @@
import 'package:doctor_app_flutter/config/config.dart';
import 'package:doctor_app_flutter/config/size_config.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/util/date-utils.dart';
import 'package:doctor_app_flutter/util/helpers.dart';
import 'package:doctor_app_flutter/util/translations_delegate_base.dart';
import 'package:doctor_app_flutter/widgets/shared/app_texts_widget.dart';
import 'package:flutter/material.dart';
import 'package:hexcolor/hexcolor.dart';
import 'package:intl/intl.dart';
class PatientProfileHeaderNewDesignInPatient extends StatelessWidget {
final PatiantInformtion patient;
final String patientType;
final String arrivalType;
final double height;
PatientProfileHeaderNewDesignInPatient(
this.patient, this.patientType, this.arrivalType,
{this.height = 0.0});
@override
Widget build(BuildContext context) {
int gender = 1;
if (patient.patientDetails != null) {
gender = patient.patientDetails.gender;
} else {
gender = patient.gender;
}
return Container(
padding: EdgeInsets.only(
left: 0,
right: 5,
bottom: 5,
),
decoration: BoxDecoration(
color: Colors.white,
),
height: height == 0 ? 200 : height,
child: Container(
padding: EdgeInsets.only(left: 10, right: 10, bottom: 10),
margin: EdgeInsets.only(top: 50),
child: Column(
children: [
Container(
padding: EdgeInsets.only(left: 12.0),
child: Row(children: [
IconButton(
icon: Icon(Icons.arrow_back_ios),
color: Colors.black, //Colors.black,
onPressed: () => Navigator.pop(context),
),
Expanded(
child: AppText(
patient.firstName != null
? (Helpers.capitalize(patient.firstName) +
" " +
Helpers.capitalize(patient.lastName))
: Helpers.capitalize(patient.patientDetails.fullName),
fontSize: SizeConfig.textMultiplier * 2.2,
fontWeight: FontWeight.bold,
fontFamily: 'Poppins',
),
),
gender == 1
? Icon(
DoctorApp.male_2,
color: Colors.blue,
)
: Icon(
DoctorApp.female_1,
color: Colors.pink,
),
Container(
margin: EdgeInsets.symmetric(horizontal: 4),
child: InkWell(
onTap: () {
// should call patient or show mobile number : patient.mobileNumber
},
child: Icon(
Icons.phone,
color: Colors.black87,
),
),
),
]),
),
Row(children: [
Padding(
padding: EdgeInsets.only(left: 12.0),
child: Container(
width: 60,
height: 60,
child: Image.asset(
gender == 1
? 'assets/images/male_avatar.png'
: 'assets/images/female_avatar.png',
fit: BoxFit.cover,
),
),
),
SizedBox(
width: 10,
),
Expanded(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Row(
children: [
AppText(
TranslationBase.of(context).fileNumber,
fontSize: 1.2 * SizeConfig.textMultiplier,
),
AppText(patient.patientId.toString(),
fontSize: 1.4 * SizeConfig.textMultiplier,
fontWeight: FontWeight.w700),
],
),
Row(
children: [
AppText(
"7:00 PM st",
fontWeight: FontWeight.bold,
fontSize: 1.4 * SizeConfig.textMultiplier,
),
],
)
],
),
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Row(
children: [
AppText(
"${TranslationBase.of(context).admissionDate}: ",
fontSize: 1.2 * SizeConfig.textMultiplier,
),
AppText(
DateUtils.convertDateFromServerFormat(
patient.createdOn, "dd MMM,yyyy"),
fontSize: 1.4 * SizeConfig.textMultiplier,
fontWeight: FontWeight.w700),
],
),
Row(
children: [
AppText(
patient.nationalityName ??
patient.nationality ??
patient.nationalityId ??
'',
fontWeight: FontWeight.bold,
fontSize: 1.4 * SizeConfig.textMultiplier,
),
patient.nationalityFlagURL != null
? ClipRRect(
borderRadius: BorderRadius.circular(20.0),
child: Image.network(
patient.nationalityFlagURL,
height: 25,
width: 30,
errorBuilder: (BuildContext context,
Object exception,
StackTrace stackTrace) {
return Text('No Image');
},
))
: SizedBox()
],
)
],
),
Row(
children: [
AppText(
"${TranslationBase.of(context).numOfDays}: ",
fontSize: 1.2 * SizeConfig.textMultiplier,
),
AppText("4 st",
fontSize: 1.4 * SizeConfig.textMultiplier,
fontWeight: FontWeight.w700),
],
),
],
),
),
]),
],
),
),
);
}
convertDateFormat2(String str) {
String newDate;
const start = "/Date(";
if (str.isNotEmpty) {
const end = "+0300)";
final startIndex = str.indexOf(start);
final endIndex = str.indexOf(end, startIndex + start.length);
var date = new DateTime.fromMillisecondsSinceEpoch(
int.parse(str.substring(startIndex + start.length, endIndex)));
newDate = date.year.toString() +
"/" +
date.month.toString().padLeft(2, '0') +
"/" +
date.day.toString().padLeft(2, '0');
}
return newDate.toString();
}
isToday(date) {
DateTime tempDate = new DateFormat("yyyy-MM-dd").parse(date);
return DateFormat("yyyy-MM-dd").format(tempDate) ==
DateFormat("yyyy-MM-dd").format(DateTime.now());
}
myBoxDecoration() {
return BoxDecoration(
border: Border(
top: BorderSide(
color: Colors.green,
width: 5,
),
),
borderRadius: BorderRadius.circular(10));
}
}

@ -0,0 +1,164 @@
import 'package:doctor_app_flutter/config/config.dart';
import 'package:doctor_app_flutter/core/enum/viewstate.dart';
import 'package:doctor_app_flutter/core/viewModel/SOAP_view_model.dart';
import 'package:doctor_app_flutter/models/SOAP/PostEpisodeReqModel.dart';
import 'package:doctor_app_flutter/models/patient/patiant_info_model.dart';
import 'package:doctor_app_flutter/routes.dart';
import 'package:doctor_app_flutter/screens/base/base_view.dart';
import 'package:doctor_app_flutter/util/date-utils.dart';
import 'package:doctor_app_flutter/util/translations_delegate_base.dart';
import 'package:doctor_app_flutter/widgets/patients/profile/PatientProfileButton.dart';
import 'package:doctor_app_flutter/widgets/shared/dr_app_circular_progress_Indeicator.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:hexcolor/hexcolor.dart';
import '../../../config/size_config.dart';
import '../../shared/app_texts_widget.dart';
class ProfileMedicalInfoWidgetInPatient extends StatelessWidget {
final String from;
final String to;
final PatiantInformtion patient;
final String patientType;
final String arrivalType;
ProfileMedicalInfoWidgetInPatient(
{Key key,
this.patient,
this.patientType,
this.arrivalType,
this.from,
this.to});
@override
Widget build(BuildContext context) {
return BaseView<SOAPViewModel>(
onModelReady: (model) async {},
builder: (_, model, w) => GridView.count(
shrinkWrap: true,
physics: NeverScrollableScrollPhysics(),
crossAxisSpacing: 10,
mainAxisSpacing: 10,
childAspectRatio: 1 / 1.0,
crossAxisCount: 3,
children: [
PatientProfileButton(
key: key,
patient: patient,
patientType: patientType,
arrivalType: arrivalType,
from: from,
to: to,
nameLine1: TranslationBase.of(context).vital,
nameLine2: TranslationBase.of(context).signs,
route: VITAL_SIGN_DETAILS,
icon: 'patient/vital_signs.png'),
PatientProfileButton(
key: key,
patient: patient,
patientType: patientType,
arrivalType: arrivalType,
route: LAB_RESULT,
nameLine1: TranslationBase.of(context).lab,
nameLine2: TranslationBase.of(context).result,
icon: 'patient/lab_results.png'),
PatientProfileButton(
key: key,
patient: patient,
patientType: patientType,
arrivalType: arrivalType,
route: RADIOLOGY_PATIENT,
nameLine1: TranslationBase.of(context).radiology,
nameLine2: TranslationBase.of(context).result,
icon: 'patient/health_summary.png'),
PatientProfileButton(
key: key,
patient: patient,
patientType: patientType,
arrivalType: arrivalType,
route: ORDER_PRESCRIPTION_NEW,
nameLine1: TranslationBase.of(context).patient,
nameLine2: TranslationBase.of(context).prescription,
icon: 'patient/order_prescription.png'),
PatientProfileButton(
key: key,
patient: patient,
patientType: patientType,
arrivalType: arrivalType,
route: PROGRESS_NOTE,
nameLine1: TranslationBase.of(context).progress,
nameLine2: TranslationBase.of(context).note,
icon: 'patient/Progress_notes.png'),
PatientProfileButton(
key: key,
patient: patient,
patientType: patientType,
arrivalType: arrivalType,
route: null,
nameLine1: "Text",
nameLine2: TranslationBase.of(context).orders,
icon: 'patient/Progress_notes.png'),
PatientProfileButton(
key: key,
patient: patient,
patientType: patientType,
arrivalType: arrivalType,
route: ORDER_PROCEDURE,
nameLine1: TranslationBase.of(context).orders,
nameLine2: TranslationBase.of(context).procedures,
icon: 'patient/Order_Procedures.png'),
PatientProfileButton(
key: key,
patient: patient,
patientType: patientType,
arrivalType: arrivalType,
route: MEDICAL_FILE,
nameLine1: "Medical",
//TranslationBase.of(context).medicalReport,
nameLine2: "Report",
//TranslationBase.of(context).summaryReport,
icon: 'patient/health_summary.png'),
PatientProfileButton(
key: key,
patient: patient,
patientType: patientType,
arrivalType: arrivalType,
route: null,
nameLine1: "Health",
//TranslationBase.of(context).medicalReport,
nameLine2: "Summery",
//TranslationBase.of(context).summaryReport,
icon: 'patient/health_summary.png'),
PatientProfileButton(
key: key,
patient: patient,
patientType: patientType,
arrivalType: arrivalType,
route: null,
nameLine1: TranslationBase.of(context).referral,
nameLine2: TranslationBase.of(context).patient,
icon: 'patient/refer_patient.png'),
PatientProfileButton(
key: key,
patient: patient,
patientType: patientType,
arrivalType: arrivalType,
route: null,
nameLine1: TranslationBase.of(context).insurance,
nameLine2: TranslationBase.of(context).approvals,
icon: 'patient/vital_signs.png'),
PatientProfileButton(
key: key,
patient: patient,
patientType: patientType,
arrivalType: arrivalType,
route: null,
nameLine1: "Discharge",
nameLine2: "Summery",
icon: 'patient/patient_sick_leave.png'),
],
),
);
}
}
Loading…
Cancel
Save