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');
} }
if(isInPatient){
await _vitalSignService.getInPatientVitalSignHistory(patient);
}else {
await _vitalSignService.getPatientVitalSignsHistory(patient, from, to); 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,7 +2,8 @@ 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.hasBorder = false,
this.imageName, this.imageName,
@required this.child, @required this.child,
this.onTap, this.onTap,
@ -10,7 +11,8 @@ class HomePageCard extends StatelessWidget {
this.width, this.width,
this.height, this.height,
this.color, this.color,
this.opacity = 0.4}) 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(
@ -32,6 +34,7 @@ class HomePageCard extends StatelessWidget {
: 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

@ -457,15 +457,20 @@ 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(
scrollDirection: Axis.horizontal,
children: [
HomePageCard( HomePageCard(
color: Colors.red[800], color: Colors.red[800],
margin: EdgeInsets.all(5),
child: Column( child: Column(
mainAxisAlignment: MainAxisAlignment.center, mainAxisAlignment:
crossAxisAlignment: CrossAxisAlignment.start, MainAxisAlignment.center,
crossAxisAlignment:
CrossAxisAlignment.start,
children: <Widget>[ children: <Widget>[
Padding( Padding(
padding: EdgeInsets.only( padding: EdgeInsets.only(
@ -500,9 +505,12 @@ class _HomeScreenState extends State<HomeScreen> {
), ),
HomePageCard( HomePageCard(
color: Colors.grey[300], color: Colors.grey[300],
margin: EdgeInsets.all(5),
child: Column( child: Column(
mainAxisAlignment: MainAxisAlignment.center, mainAxisAlignment:
crossAxisAlignment: CrossAxisAlignment.start, MainAxisAlignment.center,
crossAxisAlignment:
CrossAxisAlignment.start,
children: <Widget>[ children: <Widget>[
Padding( Padding(
padding: EdgeInsets.only( padding: EdgeInsets.only(
@ -537,9 +545,12 @@ class _HomeScreenState extends State<HomeScreen> {
), ),
HomePageCard( HomePageCard(
color: Colors.black, color: Colors.black,
margin: EdgeInsets.all(5),
child: Column( child: Column(
mainAxisAlignment: MainAxisAlignment.center, mainAxisAlignment:
crossAxisAlignment: CrossAxisAlignment.start, MainAxisAlignment.center,
crossAxisAlignment:
CrossAxisAlignment.start,
children: <Widget>[ children: <Widget>[
Padding( Padding(
padding: EdgeInsets.only( padding: EdgeInsets.only(
@ -569,19 +580,15 @@ class _HomeScreenState extends State<HomeScreen> {
SearchMedicinePatientScreen(), SearchMedicinePatientScreen(),
)); ));
}, },
)
],
), ),
SizedBox(
height: 10,
),
Row(
children: [
HomePageCard( HomePageCard(
color: Colors.black, color: Colors.red[800],
margin: EdgeInsets.all(5),
child: Column( child: Column(
mainAxisAlignment: MainAxisAlignment.center, mainAxisAlignment:
crossAxisAlignment: CrossAxisAlignment.start, MainAxisAlignment.center,
crossAxisAlignment:
CrossAxisAlignment.start,
children: <Widget>[ children: <Widget>[
Padding( Padding(
padding: EdgeInsets.only( padding: EdgeInsets.only(
@ -594,7 +601,8 @@ class _HomeScreenState extends State<HomeScreen> {
Container( Container(
padding: EdgeInsets.all(10), padding: EdgeInsets.all(10),
child: AppText( child: AppText(
TranslationBase.of(context).inPatient, TranslationBase.of(context)
.inPatient,
color: Colors.white, color: Colors.white,
textAlign: TextAlign.start, textAlign: TextAlign.start,
fontSize: 13, fontSize: 13,
@ -609,16 +617,29 @@ class _HomeScreenState extends State<HomeScreen> {
"patientSearchForm": "patientSearchForm":
_patientSearchFormValues, _patientSearchFormValues,
"selectedType": "1", "selectedType": "1",
"arrivalType": "1", "arrivalType": "1"
"isSearch":true
}); });
}, },
) )
], ])),
), // Row(
SizedBox( // mainAxisAlignment: MainAxisAlignment.spaceBetween,
height: 20, // crossAxisAlignment: CrossAxisAlignment.start,
), // 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,7 +65,10 @@ class PatientProfileScreen extends StatelessWidget {
child: Column( child: Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
PatientProfileHeaderNewDesign( !isFromSearch && patientType == "1"
? PatientProfileHeaderNewDesignInPatient(
patient, patientType, arrivalType)
: PatientProfileHeaderNewDesign(
patient, patientType, arrivalType), patient, patientType, arrivalType),
Expanded( Expanded(
child: Padding( child: Padding(
@ -79,6 +84,14 @@ class PatientProfileScreen extends StatelessWidget {
from: from, from: from,
to: to, to: to,
) )
: patientType == "1"
? ProfileMedicalInfoWidgetInPatient(
patient: patient,
patientType: patientType,
arrivalType: arrivalType,
from: from,
to: to,
)
: ProfileMedicalInfoWidget( : ProfileMedicalInfoWidget(
patient: patient, patient: patient,
patientType: patientType, patientType: patientType,

@ -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,12 +29,16 @@ 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: [
if (SERVICES_PATIANT2[int.parse(patientType)] == "List_MyOutPatient")
Container( Container(
height: MediaQuery.of(context).size.height * .20, height: MediaQuery.of(context).size.height * .20,
width: 5, width: 5,
@ -212,6 +216,8 @@ class PatientCard extends StatelessWidget {
), ),
), ),
), ),
if (SERVICES_PATIANT2[int.parse(patientType)] ==
"List_MyOutPatient")
Container( Container(
child: RichText( child: RichText(
text: new TextSpan( text: new TextSpan(
@ -222,7 +228,8 @@ class PatientCard extends StatelessWidget {
), ),
children: <TextSpan>[ children: <TextSpan>[
new TextSpan( new TextSpan(
text: TranslationBase.of(context).age + text:
TranslationBase.of(context).age +
" : ", " : ",
style: TextStyle(fontSize: 14)), style: TextStyle(fontSize: 14)),
new TextSpan( new TextSpan(
@ -235,6 +242,58 @@ class PatientCard extends StatelessWidget {
), ),
), ),
), ),
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(
text: TranslationBase.of(context)
.admissionDate +
" : ",
style: TextStyle(fontSize: 14)),
new TextSpan(
text:
"${DateUtils.convertDateFromServerFormat(patientInfo.admissionDate.toString(), 'yyyy-MM-dd')}",
style: TextStyle(
fontWeight: FontWeight.w700,
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