flutter 2 models

merge-requests/892/head
hussam al-habibeh 4 years ago
parent a8adacfc5c
commit 1146f613df

@ -18,7 +18,8 @@ class DischargeSummaryService extends BaseService {
_allDischargeSummaryList;
Future getPendingDischargeSummary(
{required GetDischargeSummaryReqModel getDischargeSummaryReqModel}) async {
{required GetDischargeSummaryReqModel
getDischargeSummaryReqModel}) async {
hasError = false;
await baseAppClient.post(GET_PENDING_DISCHARGE_SUMMARY,
onSuccess: (dynamic response, int statusCode) {
@ -36,7 +37,7 @@ class DischargeSummaryService extends BaseService {
}
Future getAllDischargeSummary(
{GetDischargeSummaryReqModel getDischargeSummaryReqModel}) async {
{GetDischargeSummaryReqModel? getDischargeSummaryReqModel}) async {
hasError = false;
await baseAppClient.post(GET_ALL_DISCHARGE_SUMMARY,
onSuccess: (dynamic response, int statusCode) {
@ -49,6 +50,6 @@ class DischargeSummaryService extends BaseService {
}, onFailure: (String error, int statusCode) {
hasError = true;
super.error = error;
}, body: getDischargeSummaryReqModel.toJson());
}, body: getDischargeSummaryReqModel!.toJson());
}
}

@ -11,12 +11,11 @@ class OperationReportService extends BaseService {
List<GetReservationsResponseModel> get reservationList => _reservationList;
List<GetOperationDetailsResponseModel> _operationDetailsList = [];
List<GetOperationDetailsResponseModel> get operationDetailsList => _operationDetailsList;
List<GetOperationDetailsResponseModel> get operationDetailsList =>
_operationDetailsList;
Future getReservations(
{
required int patientId}) async {
getReservationsRequestModel =
Future getReservations({required int patientId}) async {
GetReservationsRequestModel getReservationsRequestModel =
GetReservationsRequestModel(patientID: patientId, doctorID: "");
hasError = false;
@ -35,10 +34,9 @@ class OperationReportService extends BaseService {
}, body: getReservationsRequestModel.toJson());
}
Future getOperationReportDetails(
{required GetOperationDetailsRequestModel getOperationReportRequestModel,
}) async {
Future getOperationReportDetails({
required GetOperationDetailsRequestModel getOperationReportRequestModel,
}) async {
hasError = false;
await baseAppClient.post(GET_OPERATION_DETAILS,
onSuccess: (dynamic response, int statusCode) {
@ -46,7 +44,8 @@ class OperationReportService extends BaseService {
_operationDetailsList.clear();
response['List_OperationDetails'].forEach(
(v) {
_operationDetailsList.add(GetOperationDetailsResponseModel.fromJson(v));
_operationDetailsList
.add(GetOperationDetailsResponseModel.fromJson(v));
},
);
}, onFailure: (String error, int statusCode) {

@ -43,16 +43,20 @@ class AuthenticationViewModel extends BaseViewModel {
NewLoginInformationModel get loginInfo => _authService.loginInfo;
List<DoctorProfileModel> get doctorProfilesList => _authService.doctorProfilesList;
List<DoctorProfileModel> get doctorProfilesList =>
_authService.doctorProfilesList;
SendActivationCodeForDoctorAppResponseModel get activationCodeVerificationScreenRes =>
_authService.activationCodeVerificationScreenRes;
SendActivationCodeForDoctorAppResponseModel
get activationCodeVerificationScreenRes =>
_authService.activationCodeVerificationScreenRes;
SendActivationCodeForDoctorAppResponseModel get activationCodeForDoctorAppRes =>
_authService.activationCodeForDoctorAppRes;
SendActivationCodeForDoctorAppResponseModel
get activationCodeForDoctorAppRes =>
_authService.activationCodeForDoctorAppRes;
CheckActivationCodeForDoctorAppResponseModel get checkActivationCodeForDoctorAppRes =>
_authService.checkActivationCodeForDoctorAppRes;
CheckActivationCodeForDoctorAppResponseModel
get checkActivationCodeForDoctorAppRes =>
_authService.checkActivationCodeForDoctorAppRes;
NewLoginInformationModel? loggedUser;
GetIMEIDetailsModel? user;
@ -66,13 +70,12 @@ class AuthenticationViewModel extends BaseViewModel {
bool unverified = false;
bool isFromLogin = false;
APP_STATUS appStatus = APP_STATUS.LOADING;
String localToken ="";
String localToken = "";
AuthenticationViewModel() {
getDeviceInfoFromFirebase();
getDoctorProfile();
}
/// Insert Device IMEI
Future insertDeviceImei(token) async {
var loggedIn = await sharedPref.getObj(LOGGED_IN_USER);
@ -86,19 +89,29 @@ class AuthenticationViewModel extends BaseViewModel {
profileInfo['IMEI'] = token;
profileInfo['LogInTypeID'] = await sharedPref.getInt(OTP_TYPE);
profileInfo['BioMetricEnabled'] = true;
profileInfo['MobileNo'] = loggedIn != null ? loggedIn['MobileNumber'] : user!.mobile;
InsertIMEIDetailsModel insertIMEIDetailsModel = InsertIMEIDetailsModel.fromJson(profileInfo);
insertIMEIDetailsModel.genderDescription = profileInfo['Gender_Description'];
insertIMEIDetailsModel.genderDescriptionN = profileInfo['Gender_DescriptionN'];
insertIMEIDetailsModel.genderDescriptionN = profileInfo['Gender_DescriptionN'];
profileInfo['MobileNo'] =
loggedIn != null ? loggedIn['MobileNumber'] : user!.mobile;
InsertIMEIDetailsModel insertIMEIDetailsModel =
InsertIMEIDetailsModel.fromJson(profileInfo);
insertIMEIDetailsModel.genderDescription =
profileInfo['Gender_Description'];
insertIMEIDetailsModel.genderDescriptionN =
profileInfo['Gender_DescriptionN'];
insertIMEIDetailsModel.genderDescriptionN =
profileInfo['Gender_DescriptionN'];
insertIMEIDetailsModel.titleDescription = profileInfo['Title_Description'];
insertIMEIDetailsModel.titleDescriptionN = profileInfo['Title_DescriptionN'];
insertIMEIDetailsModel.titleDescriptionN =
profileInfo['Title_DescriptionN'];
insertIMEIDetailsModel.projectID = await sharedPref.getInt(PROJECT_ID);
insertIMEIDetailsModel.doctorID =
loggedIn != null ? loggedIn['List_MemberInformation'][0]['MemberID'] : user!.doctorID;
insertIMEIDetailsModel.outSA = loggedIn != null ? loggedIn['PatientOutSA'] : user!.outSA;
insertIMEIDetailsModel.vidaAuthTokenID = await sharedPref.getString(VIDA_AUTH_TOKEN_ID);
insertIMEIDetailsModel.vidaRefreshTokenID = await sharedPref.getString(VIDA_REFRESH_TOKEN_ID);
insertIMEIDetailsModel.doctorID = loggedIn != null
? loggedIn['List_MemberInformation'][0]['MemberID']
: user!.doctorID;
insertIMEIDetailsModel.outSA =
loggedIn != null ? loggedIn['PatientOutSA'] : user!.outSA;
insertIMEIDetailsModel.vidaAuthTokenID =
await sharedPref.getString(VIDA_AUTH_TOKEN_ID);
insertIMEIDetailsModel.vidaRefreshTokenID =
await sharedPref.getString(VIDA_REFRESH_TOKEN_ID);
insertIMEIDetailsModel.password = userInfo.password;
await _authService.insertDeviceImei(insertIMEIDetailsModel);
@ -127,20 +140,23 @@ class AuthenticationViewModel extends BaseViewModel {
}
/// send activation code for for msg methods
Future sendActivationCodeVerificationScreen(AuthMethodTypes authMethodType) async {
Future sendActivationCodeVerificationScreen(
AuthMethodTypes authMethodType) async {
setState(ViewState.BusyLocal);
ActivationCodeForVerificationScreenModel activationCodeModel = ActivationCodeForVerificationScreenModel(
iMEI: user!.iMEI,
facilityId: user!.projectID,
memberID: user!.doctorID,
loginDoctorID: int.parse(user!.editedBy.toString()),
zipCode: user!.outSA == true ? '971' : '966',
mobileNumber: user!.mobile,
oTPSendType: authMethodType.getTypeIdService(),
isMobileFingerPrint: 1,
vidaAuthTokenID: user!.vidaAuthTokenID,
vidaRefreshTokenID: user!.vidaRefreshTokenID);
await _authService.sendActivationCodeVerificationScreen(activationCodeModel);
ActivationCodeForVerificationScreenModel activationCodeModel =
ActivationCodeForVerificationScreenModel(
iMEI: user!.iMEI,
facilityId: user!.projectID,
memberID: user!.doctorID,
loginDoctorID: int.parse(user!.editedBy.toString()),
zipCode: user!.outSA == true ? '971' : '966',
mobileNumber: user!.mobile,
oTPSendType: authMethodType.getTypeIdService(),
isMobileFingerPrint: 1,
vidaAuthTokenID: user!.vidaAuthTokenID,
vidaRefreshTokenID: user!.vidaRefreshTokenID);
await _authService
.sendActivationCodeVerificationScreen(activationCodeModel);
if (_authService.hasError) {
error = _authService.error!;
setState(ViewState.ErrorLocal);
@ -149,56 +165,73 @@ class AuthenticationViewModel extends BaseViewModel {
}
/// send activation code for silent login
Future sendActivationCodeForDoctorApp({required AuthMethodTypes authMethodType, required String password}) async {
Future sendActivationCodeForDoctorApp(
{required AuthMethodTypes authMethodType,
required String password}) async {
setState(ViewState.BusyLocal);
int projectID = await sharedPref.getInt(PROJECT_ID);
ActivationCodeModel activationCodeModel = ActivationCodeModel(
facilityId: projectID,
memberID: loggedUser!.listMemberInformation![0].memberID,
loginDoctorID: loggedUser!.listMemberInformation![0].employeeID,
otpSendType: authMethodType.getTypeIdService().toString(),
);
facilityId: projectID,
memberID: loggedUser!.listMemberInformation![0].memberID,
loginDoctorID: loggedUser!.listMemberInformation![0].employeeID,
otpSendType: authMethodType.getTypeIdService().toString(),
);
await _authService.sendActivationCodeForDoctorApp(activationCodeModel);
if (_authService.hasError) {
error = _authService.error!;
setState(ViewState.ErrorLocal);
} else {
await sharedPref.setString(TOKEN,
_authService.activationCodeForDoctorAppRes.logInTokenID!);
await sharedPref.setString(
TOKEN, _authService.activationCodeForDoctorAppRes.logInTokenID!);
setState(ViewState.Idle);
}
}
/// check activation code for sms and whats app
Future checkActivationCodeForDoctorApp({required String activationCode,bool isSilentLogin = false}) async {
Future checkActivationCodeForDoctorApp(
{required String activationCode, bool isSilentLogin = false}) async {
setState(ViewState.BusyLocal);
CheckActivationCodeRequestModel checkActivationCodeForDoctorApp = new CheckActivationCodeRequestModel(
zipCode: loggedUser != null ? loggedUser!.zipCode : user!.zipCode,
mobileNumber: loggedUser != null ? loggedUser!.mobileNumber : user!.mobile,
projectID: await sharedPref.getInt(PROJECT_ID) != null ? await sharedPref.getInt(PROJECT_ID) : user!.projectID,
logInTokenID: await sharedPref.getString(TOKEN),
activationCode: activationCode,
memberID:userInfo.userID!=null? int.parse(userInfo!.userID!):user!.doctorID ,
password: userInfo.password,
facilityId:userInfo.projectID!=null? userInfo.projectID.toString():user!.projectID.toString(),
oTPSendType: await sharedPref.getInt(OTP_TYPE),
iMEI: localToken,
loginDoctorID:userInfo.userID!=null? int.parse(userInfo!.userID!):user!.editedBy,// loggedUser.listMemberInformation[0].employeeID,
isForSilentLogin:isSilentLogin,
generalid: "Cs2020@2016\$2958");
await _authService.checkActivationCodeForDoctorApp(checkActivationCodeForDoctorApp);
CheckActivationCodeRequestModel checkActivationCodeForDoctorApp =
new CheckActivationCodeRequestModel(
zipCode: loggedUser != null ? loggedUser!.zipCode : user!.zipCode,
mobileNumber:
loggedUser != null ? loggedUser!.mobileNumber : user!.mobile,
projectID: await sharedPref.getInt(PROJECT_ID) != null
? await sharedPref.getInt(PROJECT_ID)
: user!.projectID,
logInTokenID: await sharedPref.getString(TOKEN),
activationCode: activationCode,
memberID: userInfo.userID != null
? int.parse(userInfo!.userID!)
: user!.doctorID,
password: userInfo.password,
facilityId: userInfo.projectID != null
? userInfo.projectID.toString()
: user!.projectID.toString(),
oTPSendType: await sharedPref.getInt(OTP_TYPE),
iMEI: localToken,
loginDoctorID: userInfo.userID != null
? int.parse(userInfo!.userID!)
: user!
.editedBy, // loggedUser.listMemberInformation[0].employeeID,
isForSilentLogin: isSilentLogin,
generalid: "Cs2020@2016\$2958");
await _authService
.checkActivationCodeForDoctorApp(checkActivationCodeForDoctorApp);
if (_authService.hasError) {
error = _authService.error!;
setState(ViewState.ErrorLocal);
} else {
await setDataAfterSendActivationSuccess(checkActivationCodeForDoctorAppRes);
await setDataAfterSendActivationSuccess(
checkActivationCodeForDoctorAppRes);
setState(ViewState.Idle);
}
}
/// get list of Hospitals
Future getHospitalsList(memberID) async {
GetHospitalsRequestModel getHospitalsRequestModel = GetHospitalsRequestModel();
GetHospitalsRequestModel getHospitalsRequestModel =
GetHospitalsRequestModel();
getHospitalsRequestModel.memberID = memberID;
await _hospitalsService.getHospitals(getHospitalsRequestModel);
if (_hospitalsService.hasError) {
@ -230,13 +263,15 @@ class AuthenticationViewModel extends BaseViewModel {
}
/// add  token to shared preferences in case of send activation code is success
setDataAfterSendActivationSuccess(CheckActivationCodeForDoctorAppResponseModel sendActivationCodeForDoctorAppResponseModel)async {
// print("VerificationCode : " + sendActivationCodeForDoctorAppResponseModel.verificationCode);
await sharedPref.setString(VIDA_AUTH_TOKEN_ID,
sendActivationCodeForDoctorAppResponseModel.vidaAuthTokenID);
await sharedPref.setString(VIDA_REFRESH_TOKEN_ID,
sendActivationCodeForDoctorAppResponseModel.vidaRefreshTokenID);
await sharedPref.setString(TOKEN,
setDataAfterSendActivationSuccess(
CheckActivationCodeForDoctorAppResponseModel
sendActivationCodeForDoctorAppResponseModel) async {
// print("VerificationCode : " + sendActivationCodeForDoctorAppResponseModel.verificationCode);
await sharedPref.setString(VIDA_AUTH_TOKEN_ID,
sendActivationCodeForDoctorAppResponseModel.vidaAuthTokenID!);
await sharedPref.setString(VIDA_REFRESH_TOKEN_ID,
sendActivationCodeForDoctorAppResponseModel.vidaRefreshTokenID!);
await sharedPref.setString(TOKEN,
sendActivationCodeForDoctorAppResponseModel.authenticationTokenID!);
}
@ -275,7 +310,9 @@ class AuthenticationViewModel extends BaseViewModel {
clinicID: clinicInfo.clinicID,
license: true,
projectID: clinicInfo.projectID,
languageID: 2);///TODO change the lan
languageID: 2);
///TODO change the lan
await _authService.getDoctorProfileBasedOnClinic(docInfo);
if (_authService.hasError) {
error = _authService.error!;
@ -288,13 +325,17 @@ class AuthenticationViewModel extends BaseViewModel {
/// add some logic in case of check activation code is success
onCheckActivationCodeSuccess({bool isSilentLogin = false}) async {
sharedPref.setString(TOKEN, checkActivationCodeForDoctorAppRes.authenticationTokenID!);
sharedPref.setString(
TOKEN, checkActivationCodeForDoctorAppRes.authenticationTokenID!);
if (checkActivationCodeForDoctorAppRes.listDoctorProfile != null &&
checkActivationCodeForDoctorAppRes.listDoctorProfile!.isNotEmpty) {
localSetDoctorProfile(checkActivationCodeForDoctorAppRes.listDoctorProfile![0]);
localSetDoctorProfile(
checkActivationCodeForDoctorAppRes.listDoctorProfile![0]);
} else {
sharedPref.setObj(CLINIC_NAME, checkActivationCodeForDoctorAppRes.listDoctorsClinic);
ClinicModel clinic = ClinicModel.fromJson(checkActivationCodeForDoctorAppRes.listDoctorsClinic![0].toJson());
sharedPref.setObj(
CLINIC_NAME, checkActivationCodeForDoctorAppRes.listDoctorsClinic);
ClinicModel clinic = ClinicModel.fromJson(
checkActivationCodeForDoctorAppRes.listDoctorsClinic![0].toJson());
await getDoctorProfileBasedOnClinic(clinic);
}
}
@ -336,13 +377,13 @@ class AuthenticationViewModel extends BaseViewModel {
setState(ViewState.ErrorLocal);
} else {
if (_authService.dashboardItemsList.length > 0) {
user =_authService.dashboardItemsList[0];
user = _authService.dashboardItemsList[0];
sharedPref.setObj(
LAST_LOGIN_USER, _authService.dashboardItemsList[0]);
await sharedPref.setString(VIDA_REFRESH_TOKEN_ID,
user!.vidaRefreshTokenID!);
await sharedPref.setString(VIDA_AUTH_TOKEN_ID,
user!.vidaAuthTokenID!);
await sharedPref.setString(
VIDA_REFRESH_TOKEN_ID, user!.vidaRefreshTokenID!);
await sharedPref.setString(
VIDA_AUTH_TOKEN_ID, user!.vidaAuthTokenID!);
this.unverified = true;
}
setState(ViewState.Idle);
@ -352,7 +393,6 @@ class AuthenticationViewModel extends BaseViewModel {
}
}
/// determine the status of the app
APP_STATUS get status {
if (state == ViewState.Busy) {

@ -14,16 +14,20 @@ class DischargeSummaryViewModel extends BaseViewModel {
List<GetDischargeSummaryResModel> get pendingDischargeSummaryList =>
_dischargeSummaryService.pendingDischargeSummaryList;
List<GetDischargeSummaryResModel> get allDisChargeSummaryList =>
_dischargeSummaryService.allDischargeSummaryList;
Future getPendingDischargeSummary({required int patientId, required int admissionNo, }) async {
GetDischargeSummaryReqModel getDischargeSummaryReqModel = GetDischargeSummaryReqModel(admissionNo:admissionNo,patientID: patientId );
Future getPendingDischargeSummary({
required int patientId,
required int admissionNo,
}) async {
GetDischargeSummaryReqModel getDischargeSummaryReqModel =
GetDischargeSummaryReqModel(
admissionNo: admissionNo, patientID: patientId);
hasError = false;
setState(ViewState.Busy);
await _dischargeSummaryService.getPendingDischargeSummary(getDischargeSummaryReqModel: getDischargeSummaryReqModel);
await _dischargeSummaryService.getPendingDischargeSummary(
getDischargeSummaryReqModel: getDischargeSummaryReqModel);
if (_dischargeSummaryService.hasError) {
error = _dischargeSummaryService.error!;
setState(ViewState.ErrorLocal);
@ -32,19 +36,22 @@ class DischargeSummaryViewModel extends BaseViewModel {
}
}
Future getAllDischargeSummary({int patientId, int admissionNo, }) async {
GetDischargeSummaryReqModel getDischargeSummaryReqModel = GetDischargeSummaryReqModel(admissionNo:admissionNo,patientID: patientId );
Future getAllDischargeSummary({
int? patientId,
int? admissionNo,
}) async {
GetDischargeSummaryReqModel getDischargeSummaryReqModel =
GetDischargeSummaryReqModel(
admissionNo: admissionNo!, patientID: patientId!);
hasError = false;
setState(ViewState.Busy);
await _dischargeSummaryService.getAllDischargeSummary(getDischargeSummaryReqModel: getDischargeSummaryReqModel);
await _dischargeSummaryService.getAllDischargeSummary(
getDischargeSummaryReqModel: getDischargeSummaryReqModel);
if (_dischargeSummaryService.hasError) {
error = _dischargeSummaryService.error;
error = _dischargeSummaryService.error!;
setState(ViewState.ErrorLocal);
} else {
setState(ViewState.Idle);
}
}
}

@ -42,7 +42,10 @@ class _DiabeticChartState extends State<DiabeticChart> {
DiabeticType(nameAr: "Urine Glucose", nameEn: "Urine Glucose", value: 1),
DiabeticType(nameAr: "Urine Acet", nameEn: "Urine Acet", value: 2),
DiabeticType(nameAr: "Blood Glucose", nameEn: "Blood Glucose", value: 3),
DiabeticType(nameAr: "Blood Glucose(Glucometer)", nameEn: "Blood Glucose(Glucometer)", value: 4)
DiabeticType(
nameAr: "Blood Glucose(Glucometer)",
nameEn: "Blood Glucose(Glucometer)",
value: 4)
];
late DiabeticType selectedDiabeticType;
@ -56,7 +59,8 @@ class _DiabeticChartState extends State<DiabeticChart> {
onModelReady: (model) async {
selectedDiabeticType = diabeticType[2];
await model.getDiabeticChartValues(patient, selectedDiabeticType.value, isLocalBusy: false);
await model.getDiabeticChartValues(patient, selectedDiabeticType.value!,
isLocalBusy: false);
generateData(model);
},
builder: (_, model, w) => AppScaffold(
@ -70,84 +74,69 @@ class _DiabeticChartState extends State<DiabeticChart> {
child: Column(
children: [
Container(
width: MediaQuery.of(context).size.width * 0.7,
width: MediaQuery.of(context).size.width * 0.7,
child: DropdownButtonHideUnderline(
child: DropdownButton(
dropdownColor: Colors.white,
iconEnabledColor: Colors.black,
isExpanded: true,
value: selectedDiabeticType.value,
iconSize: 25,
elevation: 16,
selectedItemBuilder: (BuildContext context) {
return diabeticType
.map((item) {
return Row(
mainAxisSize: MainAxisSize.max,
mainAxisAlignment:
MainAxisAlignment.end,
children: <Widget>[
Column(
mainAxisAlignment:
MainAxisAlignment.center,
children: [
Container(
padding: EdgeInsets.all(2),
margin: EdgeInsets.all(2),
decoration: new BoxDecoration(
color: Colors.red[800],
borderRadius:
BorderRadius.circular(
20),
),
constraints: BoxConstraints(
minWidth: 20,
minHeight: 20,
),
child: Center(
child: AppText(
diabeticType
.length
.toString(),
color: Colors.white,
fontSize: projectsProvider
.isArabic
? 10
: 11,
textAlign:
TextAlign.center,
),
)),
],
),
AppText(
selectedDiabeticType.nameEn,
fontSize: 12,
color: Colors.black,
fontWeight: FontWeight.bold,
textAlign: TextAlign.end),
dropdownColor: Colors.white,
iconEnabledColor: Colors.black,
isExpanded: true,
value: selectedDiabeticType.value,
iconSize: 25,
elevation: 16,
selectedItemBuilder: (BuildContext context) {
return diabeticType.map((item) {
return Row(
mainAxisSize: MainAxisSize.max,
mainAxisAlignment: MainAxisAlignment.end,
children: <Widget>[
Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Container(
padding: EdgeInsets.all(2),
margin: EdgeInsets.all(2),
decoration: new BoxDecoration(
color: Colors.red[800],
borderRadius: BorderRadius.circular(20),
),
constraints: BoxConstraints(
minWidth: 20,
minHeight: 20,
),
child: Center(
child: AppText(
diabeticType.length.toString(),
color: Colors.white,
fontSize:
projectsProvider.isArabic ? 10 : 11,
textAlign: TextAlign.center,
),
)),
],
);
}).toList();
},
onChanged: (newValue) async {
await onChangeFunc(newValue, model, patient);
setState(() {
});
},
items: diabeticType
.map((item) {
return DropdownMenuItem(
child: AppText(
item.nameEn,
textAlign: TextAlign.left,
),
value: item.value,
);
}).toList(),
)),
AppText(selectedDiabeticType.nameEn,
fontSize: 12,
color: Colors.black,
fontWeight: FontWeight.bold,
textAlign: TextAlign.end),
],
);
}).toList();
},
onChanged: (newValue) async {
await onChangeFunc(newValue, model, patient);
setState(() {});
},
items: diabeticType.map((item) {
return DropdownMenuItem(
child: AppText(
item.nameEn,
textAlign: TextAlign.left,
),
value: item.value,
);
}).toList(),
)),
),
timeSeriesData1.length != 0 || timeSeriesData2.length != 0
? Padding(
@ -155,14 +144,13 @@ class _DiabeticChartState extends State<DiabeticChart> {
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Container(
margin: EdgeInsets.symmetric(horizontal: 8),
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.circular(12)),
child: LineChartForDiabetic(
title: selectedDiabeticType.nameEn,
title: selectedDiabeticType.nameEn!,
isOX: false,
timeSeries1: timeSeriesData1,
// timeSeries2: timeSeriesData2,
@ -211,21 +199,21 @@ class _DiabeticChartState extends State<DiabeticChart> {
model.diabeticChartValuesList.toList().forEach(
(element) {
DateTime elementDate =
AppDateUtils.getDateTimeFromServerFormat(element.dateChart);
if (element.resultValue.toInt() != 0)
AppDateUtils.getDateTimeFromServerFormat(element.dateChart!);
if (element.resultValue!.toInt() != 0)
timeSeriesData1.add(
TimeSeriesSales2(
new DateTime(
elementDate.year, elementDate.month, elementDate.day),
element.resultValue.toDouble(),
element.resultValue!.toDouble(),
),
);
if (element.resultValue.toInt() != 0)
if (element.resultValue!.toInt() != 0)
timeSeriesData2.add(
TimeSeriesSales2(
new DateTime(
elementDate.year, elementDate.month, elementDate.day),
element.resultValue.toDouble(),
element.resultValue!.toDouble(),
),
);
},
@ -236,20 +224,17 @@ class _DiabeticChartState extends State<DiabeticChart> {
onChangeFunc(newValue, PatientViewModel model, patient) async {
GifLoaderDialogUtils.showMyDialog(context);
setState(() {
selectedDiabeticType = diabeticType[newValue-1];
selectedDiabeticType = diabeticType[newValue - 1];
timeSeriesData1.clear();
timeSeriesData2.clear();
});
await model.getDiabeticChartValues(patient, selectedDiabeticType.value,isLocalBusy:true);
if(model.state == ViewState.ErrorLocal){
await model.getDiabeticChartValues(patient, selectedDiabeticType.value!,
isLocalBusy: true);
if (model.state == ViewState.ErrorLocal) {
Helpers.showErrorToast(model.error);
}
generateData(model);
GifLoaderDialogUtils.hideDialog(context);
}
}

@ -12,8 +12,10 @@ import 'package:provider/provider.dart';
class DiabeticDetails extends StatefulWidget {
final List<GetDiabeticChartValuesResponseModel> diabeticDetailsList;
DiabeticDetails(
{Key? key, required this.diabeticDetailsList,});
DiabeticDetails({
Key? key,
required this.diabeticDetailsList,
});
@override
_VitalSignDetailsWidgetState createState() => _VitalSignDetailsWidgetState();
@ -40,7 +42,6 @@ class _VitalSignDetailsWidgetState extends State<DiabeticDetails> {
TranslationBase.of(context).date,
fontSize: SizeConfig.textMultiplier * 1.5,
fontWeight: FontWeight.bold,
fontFamily: 'Poppins',
),
// height: 60,
@ -52,7 +53,7 @@ class _VitalSignDetailsWidgetState extends State<DiabeticDetails> {
padding: EdgeInsets.all(8),
child: Container(
child: AppText(
"Result",
"Result",
fontSize: SizeConfig.textMultiplier * 1.5,
fontWeight: FontWeight.bold,
fontFamily: 'Poppins',
@ -70,7 +71,8 @@ class _VitalSignDetailsWidgetState extends State<DiabeticDetails> {
),
Table(
border: TableBorder(
horizontalInside: BorderSide(width: 1.0, color: Colors.grey[300]!),
horizontalInside:
BorderSide(width: 1.0, color: Colors.grey[300]!),
),
children: fullData(projectViewModel),
),
@ -85,7 +87,7 @@ class _VitalSignDetailsWidgetState extends State<DiabeticDetails> {
widget.diabeticDetailsList.forEach((diabetic) {
var data = diabetic.resultValue;
DateTime elementDate =
AppDateUtils.getDateTimeFromServerFormat(diabetic.dateChart);
AppDateUtils.getDateTimeFromServerFormat(diabetic.dateChart!);
if (data != 0)
tableRow.add(TableRow(children: [
Container(

@ -50,10 +50,11 @@ class _ProgressNoteState extends State<DiagnosisScreen> {
print(type);
GetDiagnosisForInPatientRequestModel getDiagnosisForInPatientRequestModel =
GetDiagnosisForInPatientRequestModel(
GetDiagnosisForInPatientRequestModel(
admissionNo: int.parse(patient!.admissionNo!),
patientTypeID: patient!.patientType!,
patientID: patient.patientId, setupID: "010266");
patientID: patient.patientId,
setupID: "010266");
model.getDiagnosisForInPatient(getDiagnosisForInPatientRequestModel);
}
@ -76,8 +77,7 @@ class _ProgressNoteState extends State<DiagnosisScreen> {
),
body: model.diagnosisForInPatientList == null ||
model.diagnosisForInPatientList.length == 0
? DrAppEmbeddedError(
error: TranslationBase.of(context).noItem!)
? DrAppEmbeddedError(error: TranslationBase.of(context).noItem!)
: Container(
color: Colors.grey[200],
child: Column(
@ -85,8 +85,7 @@ class _ProgressNoteState extends State<DiagnosisScreen> {
Expanded(
child: Container(
child: ListView.builder(
itemCount:
model.diagnosisForInPatientList.length,
itemCount: model.diagnosisForInPatientList.length,
itemBuilder: (BuildContext ctxt, int index) {
return FractionallySizedBox(
widthFactor: 0.95,
@ -160,7 +159,7 @@ class _ProgressNoteState extends State<DiagnosisScreen> {
.getDateTimeFromServerFormat(model
.diagnosisForInPatientList[
index]
.createdOn),
.createdOn!),
isArabic:
projectViewModel
.isArabic,
@ -186,7 +185,7 @@ class _ProgressNoteState extends State<DiagnosisScreen> {
.getDateTimeFromServerFormat(model
.diagnosisForInPatientList[
index]
.createdOn))
.createdOn!))
: AppDateUtils.getHour(
DateTime.now()),
fontWeight: FontWeight.w600,
@ -207,9 +206,9 @@ class _ProgressNoteState extends State<DiagnosisScreen> {
MainAxisAlignment.start,
children: [
AppText(
TranslationBase.of(
context)
.icd! + " : ",
TranslationBase.of(context)
.icd! +
" : ",
fontSize: 12,
),
Expanded(
@ -228,16 +227,17 @@ class _ProgressNoteState extends State<DiagnosisScreen> {
),
Row(
mainAxisAlignment:
MainAxisAlignment.start,
MainAxisAlignment.start,
children: [
AppText("Ascii Desc : ",
AppText(
"Ascii Desc : ",
fontSize: 12,
),
Expanded(
child: AppText(
model
.diagnosisForInPatientList[
index]
index]
.asciiDesc,
fontSize: 12,
isCopyable: true,

@ -19,7 +19,8 @@ class LabResultHistoryDetailsWidget extends StatefulWidget {
_VitalSignDetailsWidgetState createState() => _VitalSignDetailsWidgetState();
}
class _VitalSignDetailsWidgetState extends State<LabResultHistoryDetailsWidget> {
class _VitalSignDetailsWidgetState
extends State<LabResultHistoryDetailsWidget> {
@override
Widget build(BuildContext context) {
ProjectViewModel projectViewModel = Provider.of(context);
@ -85,7 +86,7 @@ class _VitalSignDetailsWidgetState extends State<LabResultHistoryDetailsWidget>
List<TableRow> fullData(ProjectViewModel projectViewModel) {
List<TableRow> tableRow = [];
widget.labResultHistory.forEach((vital) {
var date = AppDateUtils.convertStringToDate(vital.verifiedOnDateTime);
var date = AppDateUtils.convertStringToDate(vital.verifiedOnDateTime!);
tableRow.add(TableRow(children: [
Container(
child: Container(
@ -113,4 +114,4 @@ class _VitalSignDetailsWidgetState extends State<LabResultHistoryDetailsWidget>
});
return tableRow;
}
}
}

@ -110,10 +110,10 @@ class _AllLabSpecialResultState extends State<AllLabSpecialResult> {
height: 160,
decoration: BoxDecoration(
color: model.allSpecialLabList[index]
.isLiveCareAppointment
.isLiveCareAppointment!
? Colors.red[900]
: !model.allSpecialLabList[index]
.isInOutPatient
.isInOutPatient!
? Colors.black
: Color(0xffa9a089),
borderRadius: BorderRadius.only(
@ -135,12 +135,12 @@ class _AllLabSpecialResultState extends State<AllLabSpecialResult> {
child: Center(
child: Text(
model.allSpecialLabList[index]
.isLiveCareAppointment
.isLiveCareAppointment!
? TranslationBase.of(context)
.liveCare!
.toUpperCase()
: !model.allSpecialLabList[index]
.isInOutPatient
.isInOutPatient!
? TranslationBase.of(context)
.inPatientLabel!
.toUpperCase()
@ -159,21 +159,21 @@ class _AllLabSpecialResultState extends State<AllLabSpecialResult> {
FadePage(
page: SpecialLabResultDetailsPage(
resultData: model.allSpecialLabList[index]
.resultDataHTML,
.resultDataHTML!,
patient: patient,
),
),
),
doctorName:
model.allSpecialLabList[index].doctorName,
model.allSpecialLabList[index].doctorName!,
invoiceNO:
' ${model.allSpecialLabList[index].invoiceNo}',
profileUrl: model
.allSpecialLabList[index].doctorImageURL,
.allSpecialLabList[index].doctorImageURL!,
branch:
model.allSpecialLabList[index].projectName,
clinic: model
.allSpecialLabList[index].clinicDescription,
model.allSpecialLabList[index].projectName!,
clinic: model.allSpecialLabList[index]
.clinicDescription!,
appointmentDate:
AppDateUtils.getDateTimeFromServerFormat(
model.allSpecialLabList[index].createdOn,

@ -14,21 +14,21 @@ import 'package:html_editor_enhanced/html_editor.dart';
import 'package:permission_handler/permission_handler.dart';
class AddVerifyMedicalReport extends StatefulWidget {
final PatiantInformtion patient;
final String?patientType;
final PatiantInformtion? patient;
final String? patientType;
final String? arrivalType;
final MedicalReportModel? medicalReport;
final PatientMedicalReportViewModel model;
final PatientMedicalReportViewModel? model;
final MedicalReportStatus? status;
final String? medicalNote;
const AddVerifyMedicalReport(
{Key? key,
required this.patient,
this.patient,
this.patientType,
this.arrivalType,
this.medicalReport,
required this.model,
this.model,
this.status,
this.medicalNote})
: super(key: key);
@ -69,13 +69,26 @@ class _AddVerifyMedicalReportState extends State<AddVerifyMedicalReport> {
children: [
if (model.medicalReportTemplate.length > 0)
HtmlRichEditor(
initialText: (widget.medicalReport != null
initialText: (widget.medicalReport !=
null
? widget.medicalNote
: widget.model.medicalReportTemplate[0].templateText!.length > 0
? widget.model.medicalReportTemplate[0].templateText
: widget
.model!
.medicalReportTemplate[
0]
.templateText!
.length >
0
? widget
.model!
.medicalReportTemplate[0]
.templateText
: ""),
hint: "Write the medical report ",
height: MediaQuery.of(context).size.height * 0.75, controller: _controller,
height:
MediaQuery.of(context).size.height *
0.75,
controller: _controller,
),
],
),
@ -106,22 +119,30 @@ class _AddVerifyMedicalReportState extends State<AddVerifyMedicalReport> {
if (txtOfMedicalReport.isNotEmpty) {
GifLoaderDialogUtils.showMyDialog(context);
widget.medicalReport != null
?await widget.model.updateMedicalReport(
widget.patient,
? await widget.model!.updateMedicalReport(
widget.patient!,
txtOfMedicalReport,
widget.medicalReport != null ? widget.medicalReport!.lineItemNo : null,
widget.medicalReport != null ? widget.medicalReport!.invoiceNo : null)
: await widget.model.addMedicalReport(widget.patient, txtOfMedicalReport);
widget.medicalReport != null
? widget.medicalReport!.lineItemNo
: null,
widget.medicalReport != null
? widget.medicalReport!.invoiceNo
: null)
: await widget.model!.addMedicalReport(
widget.patient!, txtOfMedicalReport);
//model.getMedicalReportList(patient);
Navigator.pop(context);
GifLoaderDialogUtils.hideDialog(context);
if (widget.model.state == ViewState.ErrorLocal) {
DrAppToastMsg.showErrorToast(widget.model.error);
if (widget.model!.state ==
ViewState.ErrorLocal) {
DrAppToastMsg.showErrorToast(
widget.model!.error);
}
} else {
DrAppToastMsg.showErrorToast("Please enter medical note");
DrAppToastMsg.showErrorToast(
"Please enter medical note");
}
},
),
@ -138,17 +159,22 @@ class _AddVerifyMedicalReportState extends State<AddVerifyMedicalReport> {
color: Color(0xff359846),
fontWeight: FontWeight.w700,
onPressed: () async {
txtOfMedicalReport = await _controller.getText();
txtOfMedicalReport =
await _controller.getText();
if (txtOfMedicalReport.isNotEmpty) {
GifLoaderDialogUtils.showMyDialog(context);
await widget.model.verifyMedicalReport(widget.patient, widget.medicalReport!);
await widget.model!.verifyMedicalReport(
widget.patient!, widget.medicalReport!);
GifLoaderDialogUtils.hideDialog(context);
Navigator.pop(context);
if (widget.model.state == ViewState.ErrorLocal) {
DrAppToastMsg.showErrorToast(widget.model.error);
if (widget.model!.state ==
ViewState.ErrorLocal) {
DrAppToastMsg.showErrorToast(
widget.model!.error);
}
} else {
DrAppToastMsg.showErrorToast("Please enter medical note");
DrAppToastMsg.showErrorToast(
"Please enter medical note");
}
},
),

@ -54,7 +54,8 @@ class _ProgressNoteState extends State<NursingProgressNoteScreen> {
GetNursingProgressNoteRequestModel(
admissionNo: int.parse(patient!.admissionNo!),
patientTypeID: patient!.patientType!,
patientID: patient.patientId, setupID: "010266");
patientID: patient.patientId,
setupID: "010266");
model.getNursingProgressNote(getNursingProgressNoteRequestModel);
}
@ -162,7 +163,7 @@ class _ProgressNoteState extends State<NursingProgressNoteScreen> {
.getDateTimeFromServerFormat(model
.patientNursingProgressNoteList[
index]
.createdOn),
.createdOn!),
isArabic:
projectViewModel
.isArabic,
@ -188,7 +189,7 @@ class _ProgressNoteState extends State<NursingProgressNoteScreen> {
.getDateTimeFromServerFormat(model
.patientNursingProgressNoteList[
index]
.createdOn))
.createdOn!))
: AppDateUtils.getHour(
DateTime.now()),
fontWeight: FontWeight.w600,

File diff suppressed because it is too large Load Diff
Loading…
Cancel
Save