merge-requests/70/head
unknown 5 years ago
commit b94011af47

@ -10,12 +10,41 @@ const PATIENT_PROGRESS_NOTE_URL = "DoctorApplication.svc/REST/GetProgressNoteFor
const PATIENT_INSURANCE_APPROVALS_URL = "DoctorApplication.svc/REST/GetApprovalStatusForInpatient";
const PATIENT_ORDERS_URL = "DoctorApplication.svc/REST/GetProgressNoteForInPatient";
const GET_PROJECTS = 'Lists.svc/REST/GetProjectForDoctorAPP';
const GET_PATIENT_VITAL_SIGN = 'Doctors.svc/REST/Doctor_GetPatientVitalSign';
const GET_PATIENT_LAB_OREDERS =
'DoctorApplication.svc/REST/GetPatientLabOreders';
const GET_PRESCRIPTION = 'Patients.svc/REST/GetPrescriptionApptList';
const GET_RADIOLOGY = 'DoctorApplication.svc/REST/GetPatientRadResult';
//*********change value to decode json from Dropdown ************
var SERVICES_PATIANT = ["GetMyOutPatient", "GetMyInPatient", "GtMyDischargePatient","GtMyReferredPatient","GtMyDischargeReferralPatient","GtMyTomorrowPatient","GtMyReferralPatient"];
var SERVICES_PATIANT2 = ["List_MyOutPatient", "List_MyInPatient","List_MyDischargePatient" ,"List_MyReferredPatient","List_MyDischargeReferralPatient","List_MyTomorrowPatient","List_MyReferralPatient"];
var SERVICES_PATIANT_HEADER = ["OutPatient", "InPatient", "Discharge","Referred","Referral Discharge","Tomorrow","Referral"];
var SERVICES_PATIANT = [
"GetMyOutPatient",
"GetMyInPatient",
"GtMyDischargePatient",
"GtMyReferredPatient",
"GtMyDischargeReferralPatient",
"GtMyTomorrowPatient",
"GtMyReferralPatient"
];
var SERVICES_PATIANT2 = [
"List_MyOutPatient",
"List_MyInPatient",
"List_MyDischargePatient",
"List_MyReferredPatient",
"List_MyDischargeReferralPatient",
"List_MyTomorrowPatient",
"List_MyReferralPatient"
];
var SERVICES_PATIANT_HEADER = [
"OutPatient",
"InPatient",
"Discharge",
"Referred",
"Referral Discharge",
"Tomorrow",
"Referral"
];
//******************
// Colors ////// by : ibrahim
const PRIMARY_COLOR = 0xff58434F;
const PRIMARY_COLOR = 0xff58434F;

@ -0,0 +1,43 @@
/*
*@author: Elham Rababah
*@Date:17/5/2020
*@param:
*@return:
*@desc: Clinic Model
*/
class ClinicModel {
Null setupID;
int projectID;
int doctorID;
int clinicID;
bool isActive;
String clinicName;
ClinicModel(
{this.setupID,
this.projectID,
this.doctorID,
this.clinicID,
this.isActive,
this.clinicName});
ClinicModel.fromJson(Map<String, dynamic> json) {
setupID = json['SetupID'];
projectID = json['ProjectID'];
doctorID = json['DoctorID'];
clinicID = json['ClinicID'];
isActive = json['IsActive'];
clinicName = json['ClinicName'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['SetupID'] = this.setupID;
data['ProjectID'] = this.projectID;
data['DoctorID'] = this.doctorID;
data['ClinicID'] = this.clinicID;
data['IsActive'] = this.isActive;
data['ClinicName'] = this.clinicName;
return data;
}
}

@ -0,0 +1,71 @@
/*
*@author: Elham Rababah
*@Date:17/5/2020
*@param:
*@return:
*@desc: ProfileReqModel
*/
class ProfileReqModel {
int projectID;
int clinicID;
int doctorID;
bool isRegistered;
bool license;
int languageID;
String stamp;
String iPAdress;
double versionID;
int channel;
String tokenID;
String sessionID;
bool isLoginForDoctorApp;
ProfileReqModel(
{this.projectID,
this.clinicID,
this.doctorID,
this.isRegistered =true,
this.license,
this.languageID,
this.stamp = '2020-04-26T09:32:18.317Z',
this.iPAdress='11.11.11.11',
this.versionID=1.2,
this.channel=9,
this.sessionID='E2bsEeYEJo',
this.tokenID,
this.isLoginForDoctorApp = true});
ProfileReqModel.fromJson(Map<String, dynamic> json) {
projectID = json['ProjectID'];
clinicID = json['ClinicID'];
doctorID = json['doctorID'];
isRegistered = json['IsRegistered'];
license = json['License'];
languageID = json['LanguageID'];
stamp = json['stamp'];
iPAdress = json['IPAdress'];
versionID = json['VersionID'];
channel = json['Channel'];
tokenID = json['TokenID'];
sessionID = json['SessionID'];
isLoginForDoctorApp = json['IsLoginForDoctorApp'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['ProjectID'] = this.projectID;
data['ClinicID'] = this.clinicID;
data['doctorID'] = this.doctorID;
data['IsRegistered'] = this.isRegistered;
data['License'] = this.license;
data['LanguageID'] = this.languageID;
data['stamp'] = this.stamp;
data['IPAdress'] = this.iPAdress;
data['VersionID'] = this.versionID;
data['Channel'] = this.channel;
data['TokenID'] = this.tokenID;
data['SessionID'] = this.sessionID;
data['IsLoginForDoctorApp'] = this.isLoginForDoctorApp;
return data;
}
}

@ -14,6 +14,7 @@ const SEND_ACTIVATION_CODE_BY_OTP_NOTIFICATION_TYPE =
'Sentry.svc/REST/DoctorApplication_SendActivationCodebyOTPNotificationType';
const MEMBER_CHECK_ACTIVATION_CODE_NEW ='Sentry.svc/REST/MemberCheckActivationCode_New';
const GET_DOC_PROFILES = 'Doctors.svc/REST/GetDocProfiles';
class AuthProvider with ChangeNotifier {
Future<Map> login(UserModel userInfo) async {
const url = LOGIN_URL;
@ -85,4 +86,23 @@ class AuthProvider with ChangeNotifier {
throw error;
}
}
/*
*@author: Elham Rababah
*@Date:17/5/2020
*@param: docInfo
*@return:Future<Map>
*@desc: getDocProfiles
*/
Future<Map> getDocProfiles(docInfo) async {
const url = GET_DOC_PROFILES;
try {
final response = await AppClient.post(url, body: json.encode(docInfo));
return Future.value(json.decode(response.body));
} catch (error) {
print(error);
throw error;
}
}
}

@ -1,23 +1,11 @@
import 'dart:convert';
import 'package:doctor_app_flutter/client/app_client.dart';
import 'package:doctor_app_flutter/config/config.dart';
import 'package:doctor_app_flutter/config/shared_pref_kay.dart';
import 'package:doctor_app_flutter/util/dr_app_shared_pref.dart';
import '../interceptor/http_interceptor.dart';
import 'package:flutter/cupertino.dart';
import 'package:http/http.dart';
import 'package:http_interceptor/http_client_with_interceptor.dart';
const GET_PROJECTS = BASE_URL + 'Lists.svc/REST/GetProjectForDoctorAPP';
class HospitalProvider with ChangeNotifier {
Client client =
HttpClientWithInterceptor.build(interceptors: [HttpInterceptor()]);
Future<Map> getProjectsList() async {
const url = GET_PROJECTS;
var info = {
@ -31,7 +19,7 @@ class HospitalProvider with ChangeNotifier {
"IsLoginForDoctorApp": true
};
try {
final response = await client.post(url, body: json.encode(info));
final response = await AppClient.post(url, body: json.encode(info));
return Future.value(json.decode(response.body));
} catch (error) {
throw error;

@ -9,20 +9,17 @@ import 'package:flutter/cupertino.dart';
import 'package:http/http.dart';
import 'package:http_interceptor/http_client_with_interceptor.dart';
import '../client/app_client.dart';
import '../config/config.dart';
import '../interceptor/http_interceptor.dart';
import '../models/patient/lab_orders_res_model.dart';
import '../models/patient/patiant_info_model.dart';
import '../models/patient/patient_model.dart';
import '../models/patient/prescription_res_model.dart';
import '../models/patient/radiology_res_model.dart';
import '../models/patient/vital_sign_res_model.dart';
import '../util/helpers.dart';
const GET_PATIENT_VITAL_SIGN =
BASE_URL + 'Doctors.svc/REST/Doctor_GetPatientVitalSign';
const GET_PATIENT_LAB_OREDERS =
BASE_URL + 'DoctorApplication.svc/REST/GetPatientLabOreders';
const GET_PRESCRIPTION = BASE_URL + 'Patients.svc/REST/GetPrescriptionApptList';
const GET_RADIOLOGY =
BASE_URL + 'DoctorApplication.svc/REST/GetPatientRadResult';
Helpers helpers = Helpers();
class PatientsProvider with ChangeNotifier {
@ -43,12 +40,12 @@ class PatientsProvider with ChangeNotifier {
Future<Map> getPatientList(PatientModel patient, patientType) async {
/* const url =
BASE_URL+'DoctorApplication.svc/REST/GetMyInPatient';*/
int val = int.parse(patientType);
//**********Modify url by amjad amireh for patiant type*********
final url =BASE_URL+"DoctorApplication.svc/REST/"+ SERVICES_PATIANT[val];
//**********Modify url by amjad amireh for patiant type*********
final url =
BASE_URL + "DoctorApplication.svc/REST/" + SERVICES_PATIANT[val];
// print("a===========$url=======a");
try {
@ -103,7 +100,7 @@ class PatientsProvider with ChangeNotifier {
try {
if (await Helpers.checkConnection()) {
final response = await client.post(GET_PATIENT_VITAL_SIGN,
final response = await AppClient.post(GET_PATIENT_VITAL_SIGN,
body: json.encode(patient));
final int statusCode = response.statusCode;
isLoading = false;
@ -136,15 +133,6 @@ class PatientsProvider with ChangeNotifier {
}
}
PatiantInformtion getSelectedPatient() {
return _selectedPatient;
}
setSelectedPatient(PatiantInformtion patient) {
// return _selectedPatient;
_selectedPatient = patient;
}
/*@author: Elham Rababah
*@Date:27/4/2020
*@param: patient
@ -158,7 +146,7 @@ class PatientsProvider with ChangeNotifier {
try {
if (await Helpers.checkConnection()) {
final response = await client.post(GET_PATIENT_LAB_OREDERS,
final response = await AppClient.post(GET_PATIENT_LAB_OREDERS,
body: json.encode(patient));
final int statusCode = response.statusCode;
isLoading = false;
@ -204,7 +192,7 @@ class PatientsProvider with ChangeNotifier {
try {
if (await Helpers.checkConnection()) {
final response =
await client.post(GET_PRESCRIPTION, body: json.encode(patient));
await AppClient.post(GET_PRESCRIPTION, body: json.encode(patient));
final int statusCode = response.statusCode;
isLoading = false;
@ -263,7 +251,7 @@ class PatientsProvider with ChangeNotifier {
try {
if (await Helpers.checkConnection()) {
final response =
await client.post(GET_RADIOLOGY, body: json.encode(patient));
await AppClient.post(GET_RADIOLOGY, body: json.encode(patient));
final int statusCode = response.statusCode;
isLoading = false;

@ -46,8 +46,9 @@ class _VerificationMethodsScreenState extends State<VerificationMethodsScreen> {
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
AuthHeader(loginType.verificationMethods),
VerificationMethods(changeLoadingStata:
changeLoadingStata,),
VerificationMethods(
changeLoadingStata: changeLoadingStata,
),
],
),
),

@ -39,9 +39,6 @@ class _PatientSearchScreenState extends State<PatientSearchScreen> {
bool _autoValidate = false;
var _patientSearchFormValues = PatientModel(
ProjectID: 15,
ClinicID: 0,
DoctorID: 4709,
FirstName: "0",
MiddleName: "0",
LastName: "0",
@ -62,15 +59,10 @@ class _PatientSearchScreenState extends State<PatientSearchScreen> {
void _validateInputs() async {
try {
print("####IBRAHIM TEST#####" + _patientSearchFormValues.From);
// _patientSearchFormValues.TokenID =
List<dynamic> doctorProfiles = await sharedPref.getObj(DOCTOR_PROFILE);
Map profile = await sharedPref.getObj(DOCTOR_PROFILE);
DoctorProfileModel doctorProfile =
DoctorProfileModel.fromJson(doctorProfiles[0]);
print(doctorProfile.doctorName);
new DoctorProfileModel.fromJson(profile);
if (_formKey.currentState.validate()) {
//*****If all data are correct then save data to out variables****
_formKey.currentState.save();
//*********************************** */
@ -78,16 +70,12 @@ class _PatientSearchScreenState extends State<PatientSearchScreen> {
sharedPref.setString(SLECTED_PATIENT_TYPE, _selectedType);
print('_selectedType${_selectedType}');
String token = await sharedPref.getString(TOKEN);
int projectID = await sharedPref.getInt(PROJECT_ID);
//====================
int doctorID = doctorProfile.doctorID;//await sharedPref.getInt(DOCTOR_ID);
//====================
_patientSearchFormValues.TokenID = token;
_patientSearchFormValues.ProjectID = projectID;//15
//===================
_patientSearchFormValues.DoctorID = doctorID;
//====================
// print(_patientSearchFormValues.PatientMobileNumber+"dfdfdfddf");
_patientSearchFormValues.ProjectID = doctorProfile.projectID ;//15
_patientSearchFormValues.DoctorID = doctorProfile.doctorID;
_patientSearchFormValues.ClinicID = doctorProfile.clinicID;
Navigator.of(context).pushNamed(PATIENTS, arguments: {
"patientSearchForm": _patientSearchFormValues,
"selectedType": _selectedType

@ -23,7 +23,7 @@ class AuthHeader extends StatelessWidget {
children: <Widget>[
Container(
margin: SizeConfig.isMobile
? EdgeInsetsDirectional.fromSTEB(0, 50, 0, 0)
? EdgeInsetsDirectional.fromSTEB(0, SizeConfig.realScreenHeight*0.03, 0, 0)
: EdgeInsetsDirectional.fromSTEB(
SizeConfig.realScreenWidth * 0.13, 0, 0, 0),
child: buildImageLogo(),

@ -1,4 +1,7 @@
import 'package:doctor_app_flutter/config/shared_pref_kay.dart';
import 'package:doctor_app_flutter/models/clinic_model.dart';
import 'package:doctor_app_flutter/models/doctor_profile_model.dart';
import 'package:doctor_app_flutter/models/profile_req_Model.dart';
import 'package:flutter/material.dart';
import 'package:hexcolor/hexcolor.dart';
import 'package:provider/provider.dart';
@ -32,6 +35,7 @@ class _VerifyAccountState extends State<VerifyAccount> {
};
Future _loggedUserFuture;
var _loggedUser;
AuthProvider authProv;
@override
void initState() {
super.initState();
@ -46,7 +50,7 @@ class _VerifyAccountState extends State<VerifyAccount> {
@override
Widget build(BuildContext context) {
AuthProvider authProv = Provider.of<AuthProvider>(context);
authProv = Provider.of<AuthProvider>(context);
return FutureBuilder(
future: Future.wait([_loggedUserFuture]),
@ -200,6 +204,7 @@ class _VerifyAccountState extends State<VerifyAccount> {
}
return null;
}
/*
*@author: Elham Rababah
*@Date:28/4/2020
@ -256,7 +261,7 @@ class _VerifyAccountState extends State<VerifyAccount> {
*@return:
*@desc: verify Account func call sendActivationCodeByOtpNotificationType service
*/
verifyAccount(AuthProvider authProv, Function changeLoadingStata) async{
verifyAccount(AuthProvider authProv, Function changeLoadingStata) async {
if (verifyAccountForm.currentState.validate()) {
changeLoadingStata(true);
@ -285,12 +290,22 @@ class _VerifyAccountState extends State<VerifyAccount> {
changeLoadingStata(true);
authProv.memberCheckActivationCodeNew(model).then((res) {
changeLoadingStata(false);
// changeLoadingStata(false);
if (res['MessageStatus'] == 1) {
sharedPref.setString(TOKEN, res['AuthenticationTokenID']);
sharedPref.setObj(DOCTOR_PROFILE, res['List_DoctorProfile']);
Navigator.of(context).pushNamed(HOME);
if (res['List_DoctorProfile'] != null) {
loginProcessCompleted(res['List_DoctorProfile'][0],changeLoadingStata);
} else {
_asyncSimpleDialog(context, res['List_DoctorsClinic'], 'ClinicName',
'Please Select Clinic')
.then((clinicInfo) {
ClinicModel clinic = ClinicModel.fromJson(clinicInfo);
print(clinicInfo);
getDocProfiles(clinic, changeLoadingStata);
});
}
} else {
changeLoadingStata(false);
helpers.showErrorToast(res['ErrorEndUserMessage']);
}
}).catchError((err) {
@ -303,4 +318,68 @@ class _VerifyAccountState extends State<VerifyAccount> {
// changeLoadingStata(false);
}
}
/*
*@author: Elham Rababah
*@Date:17/5/2020
*@param: Map<String, dynamic> profile, Function changeLoadingStata
*@return:
*@desc: loginProcessCompleted
*/
loginProcessCompleted(Map<String, dynamic> profile, Function changeLoadingStata) {
changeLoadingStata(false);
sharedPref.setObj(DOCTOR_PROFILE, profile);
Navigator.of(context).pushNamed(HOME);
}
Future<dynamic> _asyncSimpleDialog(
BuildContext context, List list, String txtKey,
[String text = '']) async {
return await showDialog<dynamic>(
context: context,
barrierDismissible: true,
builder: (BuildContext context) {
return SimpleDialog(
title: Text(text),
children: list.map((value) {
return SimpleDialogOption(
onPressed: () {
Navigator.pop(context,
value); //here passing the index to be return on item selection
},
child: Text(value[txtKey]), //item value
);
}).toList(),
);
});
}
/*
*@author: Elham Rababah
*@Date:17/5/2020
*@param: ClinicModel clinicInfo, Function changeLoadingStata
*@return:
*@desc: getDocProfiles
*/
getDocProfiles(ClinicModel clinicInfo, Function changeLoadingStata) {
ProfileReqModel docInfo = new ProfileReqModel(
doctorID: clinicInfo.doctorID,
clinicID: clinicInfo.clinicID,
license: true,
projectID: clinicInfo.projectID,
tokenID: '',
languageID: 2);
authProv.getDocProfiles(docInfo).then((res) {
if (res['MessageStatus'] == 1) {
print("DoctorProfileList ${res['DoctorProfileList'][0]}");
loginProcessCompleted(res['DoctorProfileList'][0], changeLoadingStata);
} else {
changeLoadingStata(false);
helpers.showErrorToast(res['ErrorEndUserMessage']);
}
}).catchError((err) {
print('$err');
});
}
}

@ -1,3 +1,4 @@
import 'package:doctor_app_flutter/widgets/shared/rounded_container_widget.dart';
import 'package:flutter/material.dart';
import 'package:hexcolor/hexcolor.dart';
import 'package:provider/provider.dart';
@ -57,7 +58,7 @@ class _VerificationMethodsState extends State<VerificationMethods> {
return Text('Error: ${snapshot.error}');
} else {
return Container(
width: SizeConfig.realScreenWidth * 0.90,
width: SizeConfig.realScreenWidth * 0.80,
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
@ -68,55 +69,54 @@ class _VerificationMethodsState extends State<VerificationMethods> {
),
),
SizedBox(
height: 40,
height: 20,
),
Container(
width: SizeConfig.realScreenWidth * 80,
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Row(
mainAxisAlignment: spaceBetweenMethods,
children: <Widget>[
buildVerificationMethod(
context,
'assets/images/verification_fingerprint_icon.png',
'Fingerprint',
() {}),
buildVerificationMethod(
context,
'assets/images/verification_faceid_icon.png',
'Face ID',
() {}),
],
height: SizeConfig.realScreenHeight * 0.6,
child: CustomScrollView(
primary: false,
slivers: <Widget>[
SliverPadding(
padding: const EdgeInsets.all(0),
sliver: SliverGrid.count(
// childAspectRatio: 0.7,
crossAxisSpacing: 0,
mainAxisSpacing: 5,
crossAxisCount: 2,
children: <Widget>[
buildVerificationMethod(
context,
'assets/images/verification_fingerprint_icon.png',
'Fingerprint',
() {}),
buildVerificationMethod(
context,
'assets/images/verification_faceid_icon.png',
'Face ID',
() {}),
buildVerificationMethod(
context,
'assets/images/verification_whatsapp_icon.png',
'WhatsApp', () {
sendActivationCodeByOtpNotificationType(
2, authProv);
}),
buildVerificationMethod(
context,
'assets/images/verification_sms_icon.png',
'SMS', () {
sendActivationCodeByOtpNotificationType(
1, authProv);
}),
],
),
),
SizedBox(
height: 40,
),
Row(
mainAxisAlignment: spaceBetweenMethods,
children: <Widget>[
buildVerificationMethod(
context,
'assets/images/verification_whatsapp_icon.png',
'WhatsApp', () {
sendActivationCodeByOtpNotificationType(
2, authProv);
}),
buildVerificationMethod(
context,
'assets/images/verification_sms_icon.png',
'SMS', () {
sendActivationCodeByOtpNotificationType(
1, authProv);
}),
],
)
],
),
// height: 500,
),
SizedBox(
height: SizeConfig.heightMultiplier * 2,
SizedBox(
// height: 20,
)
],
),
@ -126,41 +126,43 @@ class _VerificationMethodsState extends State<VerificationMethods> {
});
}
InkWell buildVerificationMethod(context, url, dec, Function fun) {
return InkWell(
onTap: fun,
child: Container(
// height: SizeConfig.heightMultiplier *2,
height: SizeConfig.heightMultiplier * 19,
width: SizeConfig.widthMultiplier * 37,
Center buildVerificationMethod(context, url, dec, Function fun) {
return Center(
child: InkWell(
onTap: fun,
child: Container(
// height: SizeConfig.heightMultiplier *2,
height: SizeConfig.heightMultiplier * 19,
width: SizeConfig.widthMultiplier * 37,
padding: EdgeInsets.all(10),
decoration: BoxDecoration(
border: Border.all(
width: 1,
color: Hexcolor(
'#CCCCCC') // <--- border width here
padding: EdgeInsets.all(10),
decoration: BoxDecoration(
border: Border.all(
width: 1,
color: Hexcolor(
'#CCCCCC') // <--- border width here
),
borderRadius: BorderRadius.all(Radius.circular(10))),
child: Column(
children: <Widget>[
Container(
margin: EdgeInsetsDirectional.only(
top: SizeConfig.heightMultiplier * 0.5),
child: Image.asset(
url,
height: SizeConfig.heightMultiplier * 11,
fit: BoxFit.cover,
),
borderRadius: BorderRadius.all(Radius.circular(10))),
child: Column(
children: <Widget>[
Container(
margin: EdgeInsetsDirectional.only(
top: SizeConfig.heightMultiplier * 0.5),
child: Image.asset(
url,
height: SizeConfig.heightMultiplier * 10,
fit: BoxFit.cover,
),
),
SizedBox(
height: 10,
),
Text(
dec,
style: TextStyle(fontSize: SizeConfig.textMultiplier * 2),
)
],
SizedBox(
height: 10,
),
Text(
dec,
style: TextStyle(fontSize: SizeConfig.textMultiplier * 2),
)
],
),
),
),
);
@ -180,7 +182,7 @@ class _VerificationMethodsState extends State<VerificationMethods> {
Map model = {
"LogInTokenID": _loggedUser['LogInTokenID'],
"Channel": 9,
"MobileNumber": 785228065,//_loggedUser['MobileNumber'],
"MobileNumber": 785228065, //_loggedUser['MobileNumber'],
"IPAdress": "11.11.11.11",
"LanguageID": 2,
"ProjectID": 15, //TODO : this should become daynamci

@ -1,9 +1,6 @@
import 'package:doctor_app_flutter/models/patient/patiant_info_model.dart';
import 'package:doctor_app_flutter/providers/patients_provider.dart';
import 'package:flutter/material.dart';
import 'package:hexcolor/hexcolor.dart';
import 'package:provider/provider.dart';
import '../../../config/size_config.dart';
import '../../shared/profile_image_widget.dart';

@ -96,7 +96,7 @@ class ProfileMedicalInfoWidget extends StatelessWidget {
children: <Widget>[
InkWell(
onTap: () {
navigator(context, VITAL_SIGN);
navigator(context, PROGRESS_NOTE);
},
child: CircleAvatarWidget(
des: 'Progress Notes',

Loading…
Cancel
Save