diff --git a/android/app/build.gradle b/android/app/build.gradle
index deb42f99..96428f49 100644
--- a/android/app/build.gradle
+++ b/android/app/build.gradle
@@ -39,7 +39,7 @@ android {
defaultConfig {
// TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
applicationId "com.hmg.hmgDr"
- minSdkVersion 18
+ minSdkVersion 21
targetSdkVersion 30
versionCode flutterVersionCode.toInteger()
versionName flutterVersionName
diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml
index c656ebbf..0e71249f 100644
--- a/android/app/src/main/AndroidManifest.xml
+++ b/android/app/src/main/AndroidManifest.xml
@@ -9,12 +9,19 @@
additional functionality it is fine to subclass or reimplement
FlutterApplication and put your custom class here.
-->
-
-
-
+
+
+
+
+
+
+
+
+
+
("TokenID")
val generalId = call.argument("generalId")
val doctorId = call.argument("DoctorId")
+ val patientName = call.argument("patientName")
- val sessionStatusModel = GetSessionStatusModel(VC_ID, tokenID, generalId, doctorId)
+ val sessionStatusModel = GetSessionStatusModel(VC_ID, tokenID, generalId, doctorId, patientName)
openVideoCall(apiKey, sessionId, token, appLang, baseUrl, sessionStatusModel)
diff --git a/android/app/src/main/kotlin/com/hmg/hmgDr/Model/GetSessionStatusModel.java b/android/app/src/main/kotlin/com/hmg/hmgDr/Model/GetSessionStatusModel.java
index d41aa146..60350539 100644
--- a/android/app/src/main/kotlin/com/hmg/hmgDr/Model/GetSessionStatusModel.java
+++ b/android/app/src/main/kotlin/com/hmg/hmgDr/Model/GetSessionStatusModel.java
@@ -20,15 +20,19 @@ public class GetSessionStatusModel implements Parcelable {
@SerializedName("DoctorId")
@Expose
private Integer doctorId;
+ @SerializedName("PatientName")
+ @Expose
+ private String patientName;
public GetSessionStatusModel() {
}
- public GetSessionStatusModel(Integer vCID, String tokenID, String generalid, Integer doctorId) {
+ public GetSessionStatusModel(Integer vCID, String tokenID, String generalid, Integer doctorId, String patientName) {
this.vCID = vCID;
this.tokenID = tokenID;
this.generalid = generalid;
this.doctorId = doctorId;
+ this.patientName = patientName;
}
protected GetSessionStatusModel(Parcel in) {
@@ -44,6 +48,7 @@ public class GetSessionStatusModel implements Parcelable {
} else {
doctorId = in.readInt();
}
+ patientName = in.readString();
}
public static final Creator CREATOR = new Creator() {
@@ -90,6 +95,16 @@ public class GetSessionStatusModel implements Parcelable {
this.doctorId = doctorId;
}
+ public String getPatientName() {
+ if (patientName == null)
+ patientName = "-";
+ return patientName;
+ }
+
+ public void setPatientName(String patientName) {
+ this.patientName = patientName;
+ }
+
@Override
public int describeContents() {
return 0;
@@ -111,5 +126,6 @@ public class GetSessionStatusModel implements Parcelable {
dest.writeByte((byte) 1);
dest.writeInt(doctorId);
}
+ dest.writeString(patientName);
}
}
diff --git a/android/app/src/main/kotlin/com/hmg/hmgDr/ui/VideoCallActivity.java b/android/app/src/main/kotlin/com/hmg/hmgDr/ui/VideoCallActivity.java
index 80f60c33..be4ebfb8 100644
--- a/android/app/src/main/kotlin/com/hmg/hmgDr/ui/VideoCallActivity.java
+++ b/android/app/src/main/kotlin/com/hmg/hmgDr/ui/VideoCallActivity.java
@@ -11,8 +11,10 @@ import android.opengl.GLSurfaceView;
import android.os.Bundle;
import android.os.CountDownTimer;
import android.os.Handler;
+import android.os.SystemClock;
import android.util.Log;
import android.view.View;
+import android.widget.Chronometer;
import android.widget.FrameLayout;
import android.widget.ImageView;
import android.widget.ProgressBar;
@@ -75,7 +77,13 @@ public class VideoCallActivity extends AppCompatActivity implements EasyPermissi
private boolean isSpeckerClicked;
private boolean isMicClicked;
+ private TextView patientName;
+ private Chronometer cmTimer;
+ long elapsedTime;
+ Boolean resume = false;
+
private ImageView mCallBtn;
+ private ImageView btnMinimize;
private ImageView mCameraBtn;
private ImageView mSwitchCameraBtn;
private ImageView mspeckerBtn;
@@ -128,7 +136,7 @@ public class VideoCallActivity extends AppCompatActivity implements EasyPermissi
@Override
protected void onDestroy() {
disconnectSession();
-
+ cmTimer.stop();
super.onDestroy();
}
@@ -148,8 +156,28 @@ public class VideoCallActivity extends AppCompatActivity implements EasyPermissi
videoCallPresenter = new VideoCallPresenterImpl(this, baseUrl);
+ patientName = findViewById(R.id.patient_name);
+ patientName.setText(sessionStatusModel.getPatientName());
+
+ cmTimer = findViewById(R.id.cmTimer);
+ cmTimer.setFormat("mm:ss");
+ cmTimer.setOnChronometerTickListener(arg0 -> {
+ long minutes;
+ long seconds;
+ if (!resume) {
+ minutes = ((SystemClock.elapsedRealtime() - cmTimer.getBase()) / 1000) / 60;
+ seconds = ((SystemClock.elapsedRealtime() - cmTimer.getBase()) / 1000) % 60;
+ elapsedTime = SystemClock.elapsedRealtime();
+ } else {
+ minutes = ((elapsedTime - cmTimer.getBase()) / 1000) / 60;
+ seconds = ((elapsedTime - cmTimer.getBase()) / 1000) % 60;
+ elapsedTime = elapsedTime + 1000;
+ }
+ Log.d(TAG, "onChronometerTick: " + minutes + " : " + seconds);
+ });
mCallBtn = findViewById(R.id.btn_call);
+ btnMinimize = findViewById(R.id.btn_minimize);
mCameraBtn = findViewById(R.id.btn_camera);
mSwitchCameraBtn = findViewById(R.id.btn_switch_camera);
mspeckerBtn = findViewById(R.id.btn_specker);
@@ -190,11 +218,7 @@ public class VideoCallActivity extends AppCompatActivity implements EasyPermissi
private void hiddenButtons() {
mVolHandler = new Handler();
- mVolRunnable = new Runnable() {
- public void run() {
- controlPanel.setVisibility(View.GONE);
- }
- };
+ mVolRunnable = () -> controlPanel.setVisibility(View.GONE);
mVolHandler.postDelayed(mVolRunnable, 5 * 1000);
}
@@ -256,6 +280,11 @@ public class VideoCallActivity extends AppCompatActivity implements EasyPermissi
}
mSession.publish(mPublisher);
+
+ if (!resume) {
+ cmTimer.setBase(SystemClock.elapsedRealtime());
+ }
+ cmTimer.start();
}
@Override
@@ -263,14 +292,15 @@ public class VideoCallActivity extends AppCompatActivity implements EasyPermissi
Log.d(TAG, "onDisconnected: disconnected from session " + session.getSessionId());
mSession = null;
+ cmTimer.stop();
}
@Override
public void onError(Session session, OpentokError opentokError) {
Log.d(TAG, "onError: Error (" + opentokError.getMessage() + ") in session " + session.getSessionId());
- Toast.makeText(this, "Session error. See the logcat please.", Toast.LENGTH_LONG).show();
- finish();
+ // Toast.makeText(this, "Session error. See the logcat please.", Toast.LENGTH_LONG).show();
+ //finish();
}
@Override
@@ -282,6 +312,8 @@ public class VideoCallActivity extends AppCompatActivity implements EasyPermissi
}
isConnected = true;
subscribeToStream(stream);
+ if(mConnectedHandler!=null && mConnectedRunnable!=null)
+ mConnectedHandler.removeCallbacks(mConnectedRunnable);
videoCallPresenter.callChangeCallStatus(new ChangeCallStatusRequestModel(3,sessionStatusModel.getDoctorId(), sessionStatusModel.getGeneralid(),token,sessionStatusModel.getVCID()));
}
@@ -315,8 +347,8 @@ public class VideoCallActivity extends AppCompatActivity implements EasyPermissi
public void onError(PublisherKit publisherKit, OpentokError opentokError) {
Log.d(TAG, "onError: Error (" + opentokError.getMessage() + ") in publisher");
- Toast.makeText(this, "Session error. See the logcat please.", Toast.LENGTH_LONG).show();
- finish();
+ // Toast.makeText(this, "onError: Error (" + opentokError.getMessage() + ") in publisher", Toast.LENGTH_LONG).show();
+ // finish();
}
@Override
@@ -379,6 +411,10 @@ public class VideoCallActivity extends AppCompatActivity implements EasyPermissi
finish();
}
+ public void onMinimizedClicked(View view) {
+
+ }
+
public void onSwitchCameraClicked(View view) {
if (mPublisher != null) {
isSwitchCameraClicked = !isSwitchCameraClicked;
@@ -427,6 +463,10 @@ public class VideoCallActivity extends AppCompatActivity implements EasyPermissi
returnIntent.putExtra("sessionStatusNotRespond", sessionStatusModel);
setResult(Activity.RESULT_OK, returnIntent);
finish();
+ } else if( sessionStatusModel.getSessionStatus() == 4 ){
+ isConnected = true;
+ if(mConnectedHandler!=null && mConnectedRunnable!=null)
+ mConnectedHandler.removeCallbacks(mConnectedRunnable);
}
}
diff --git a/android/app/src/main/res/drawable/ic_mini.xml b/android/app/src/main/res/drawable/ic_mini.xml
new file mode 100644
index 00000000..29df8da2
--- /dev/null
+++ b/android/app/src/main/res/drawable/ic_mini.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
diff --git a/android/app/src/main/res/drawable/shape_capsule.xml b/android/app/src/main/res/drawable/shape_capsule.xml
new file mode 100644
index 00000000..a5dcdd09
--- /dev/null
+++ b/android/app/src/main/res/drawable/shape_capsule.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/android/app/src/main/res/layout/activity_video_call.xml b/android/app/src/main/res/layout/activity_video_call.xml
index 2dcf2ba4..a3c2ced1 100644
--- a/android/app/src/main/res/layout/activity_video_call.xml
+++ b/android/app/src/main/res/layout/activity_video_call.xml
@@ -1,169 +1,181 @@
-
+ android:background="@color/text_color"
+ android:orientation="vertical">
+
-
-
+
+
+
+
+ android:layout_alignParentEnd="true"
+ android:background="@drawable/shape_capsule"
+ android:padding="@dimen/padding_space_small">
+
+
+
+
-
+ android:layout_height="0dp"
+ android:layout_weight="1"
+ tools:context=".ui.VideoCallActivity">
+
+
+
+
+
+
+
+
+ android:background="@color/remoteBackground">
+
-
-
-
+
-
-
+
+
+
+
+
+
+ android:padding="@dimen/padding_space_big_2">
+ android:src="@drawable/ic_mini" />
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/android/app/src/main/res/values/colors.xml b/android/app/src/main/res/values/colors.xml
index d1d2a305..29782be0 100644
--- a/android/app/src/main/res/values/colors.xml
+++ b/android/app/src/main/res/values/colors.xml
@@ -8,4 +8,10 @@
#827b92
#484258
+ #FF2E303A
+
+ #fff
+ #000
+ #389842
+ #d51e26
diff --git a/android/app/src/main/res/values/dimens.xml b/android/app/src/main/res/values/dimens.xml
index 79f3d269..2d53d554 100644
--- a/android/app/src/main/res/values/dimens.xml
+++ b/android/app/src/main/res/values/dimens.xml
@@ -8,7 +8,11 @@
60dp
54dp
+ 64dp
+
+ 24dp
+ 25dp
88dp
117dp
@@ -16,7 +20,16 @@
100dp
90dp
-
- 24dp
- 25dp
+
+ 14sp
+ 16sp
+ 24sp
+
+
+ 4dp
+ 8sp
+ 16dp
+ 24dp
+
+
diff --git a/lib/client/base_app_client.dart b/lib/client/base_app_client.dart
index 10181bf4..b1785b0e 100644
--- a/lib/client/base_app_client.dart
+++ b/lib/client/base_app_client.dart
@@ -3,6 +3,7 @@ import 'dart:io' show Platform;
import 'package:doctor_app_flutter/config/config.dart';
import 'package:doctor_app_flutter/config/shared_pref_kay.dart';
+import 'package:doctor_app_flutter/core/service/NavigationService.dart';
import 'package:doctor_app_flutter/core/viewModel/authentication_view_model.dart';
import 'package:doctor_app_flutter/models/doctor/doctor_profile_model.dart';
import 'package:doctor_app_flutter/models/patient/patiant_info_model.dart';
@@ -12,6 +13,9 @@ import 'package:flutter/cupertino.dart';
import 'package:http/http.dart' as http;
import 'package:provider/provider.dart';
+import '../locator.dart';
+import '../routes.dart';
+
DrAppSharedPreferances sharedPref = new DrAppSharedPreferances();
Helpers helpers = new Helpers();
@@ -116,7 +120,9 @@ class BaseAppClient {
await Provider.of(AppGlobal.CONTEX,
listen: false)
.logout();
+
Helpers.showErrorToast('Your session expired Please login again');
+ locator().pushNamedAndRemoveUntil(ROOT);
}
if (isAllowAny) {
onFailure(getError(parsed), statusCode);
diff --git a/lib/config/config.dart b/lib/config/config.dart
index bd701836..eb946dea 100644
--- a/lib/config/config.dart
+++ b/lib/config/config.dart
@@ -56,6 +56,8 @@ const ADD_REFERRED_DOCTOR_REMARKS = 'Services/DoctorApplication.svc/REST/AddRefe
const GET_MY_REFERRED_PATIENT = 'Services/DoctorApplication.svc/REST/GtMyReferredPatient';
+const GET_MY_REFERRED_OUT_PATIENT = 'Services/DoctorApplication.svc/REST/GtMyReferredOutPatient';
+
const GET_PENDING_REFERRAL_PATIENT = 'Services/DoctorApplication.svc/REST/PendingReferrals';
const CREATE_REFERRAL_PATIENT = 'Services/DoctorApplication.svc/REST/CreateReferral';
@@ -179,6 +181,8 @@ const GET_ECG = "Services/Patients.svc/REST/HIS_GetPatientMuseResults";
const GET_MY_REFERRAL_INPATIENT = "Services/DoctorApplication.svc/REST/GtMyReferralPatient";
+const GET_MY_REFERRAL_OUT_PATIENT = "Services/DoctorApplication.svc/REST/GtMyReferralForOutPatient";
+
const GET_MY_DISCHARGE_PATIENT = "Services/DoctorApplication.svc/REST/GtMyDischargeReferralPatient";
const GET_DISCHARGE_PATIENT = "Services/DoctorApplication.svc/REST/GtMyDischargePatient";
diff --git a/lib/config/localized_values.dart b/lib/config/localized_values.dart
index 11f31ba6..4d0436aa 100644
--- a/lib/config/localized_values.dart
+++ b/lib/config/localized_values.dart
@@ -1008,4 +1008,6 @@ const Map> localizedValues = {
"allLab": {"en": "All Lab", "ar": "جميع المختبرات"},
"allPrescription": {"en": "All Prescription", "ar": "جميع الوصفات"},
"addPrescription": {"en": "Add prescription", "ar": "إضافة الوصفات"},
+ "edit": {"en": "Edit", "ar": "تعديل"},
+ "summeryReply": {"en": "Summary Reply", "ar": "موجز الرد"},
};
diff --git a/lib/core/enum/PatientType.dart b/lib/core/enum/PatientType.dart
new file mode 100644
index 00000000..96fd9ae5
--- /dev/null
+++ b/lib/core/enum/PatientType.dart
@@ -0,0 +1,4 @@
+enum PatientType{
+ IN_PATIENT,
+ OUT_PATIENT,
+}
\ No newline at end of file
diff --git a/lib/core/model/live_care/AlternativeServicesList.dart b/lib/core/model/live_care/AlternativeServicesList.dart
index fab11b71..11f27b95 100644
--- a/lib/core/model/live_care/AlternativeServicesList.dart
+++ b/lib/core/model/live_care/AlternativeServicesList.dart
@@ -11,6 +11,7 @@ class AlternativeService {
AlternativeService.fromJson(Map json) {
serviceID = json['ServicID'];
serviceName = json['ServiceName'];
+ isSelected = false;
}
Map toJson() {
diff --git a/lib/core/model/referral/MyReferralPatientModel.dart b/lib/core/model/referral/MyReferralPatientModel.dart
index 797109dd..1072e098 100644
--- a/lib/core/model/referral/MyReferralPatientModel.dart
+++ b/lib/core/model/referral/MyReferralPatientModel.dart
@@ -64,65 +64,65 @@ class MyReferralPatientModel {
MyReferralPatientModel(
{this.rowID,
- this.projectID,
- this.lineItemNo,
- this.doctorID,
- this.patientID,
- this.doctorName,
- this.doctorNameN,
- this.firstName,
- this.middleName,
- this.lastName,
- this.firstNameN,
- this.middleNameN,
- this.lastNameN,
- this.gender,
- this.dateofBirth,
- this.mobileNumber,
- this.emailAddress,
- this.patientIdentificationNo,
- this.patientType,
- this.admissionNo,
- this.admissionDate,
- this.roomID,
- this.bedID,
- this.nursingStationID,
- this.description,
- this.nationalityName,
- this.nationalityNameN,
- this.clinicDescription,
- this.clinicDescriptionN,
- this.referralDoctor,
- this.referringDoctor,
- this.referralClinic,
- this.referringClinic,
- this.referralStatus,
- this.referralDate,
- this.referringDoctorRemarks,
- this.referredDoctorRemarks,
- this.referralResponseOn,
- this.priority,
- this.frequency,
- this.mAXResponseTime,
- this.episodeID,
- this.appointmentNo,
- this.appointmentDate,
- this.appointmentType,
- this.patientMRN,
- this.createdOn,
- this.clinicID,
- this.nationalityID,
- this.age,
- this.doctorImageURL,
- this.frequencyDescription,
- this.genderDescription,
- this.isDoctorLate,
- this.isDoctorResponse,
- this.nationalityFlagURL,
- this.nursingStationName,
- this.priorityDescription,
- this.referringClinicDescription,
- this.referringDoctorName});
+ this.projectID,
+ this.lineItemNo,
+ this.doctorID,
+ this.patientID,
+ this.doctorName,
+ this.doctorNameN,
+ this.firstName,
+ this.middleName,
+ this.lastName,
+ this.firstNameN,
+ this.middleNameN,
+ this.lastNameN,
+ this.gender,
+ this.dateofBirth,
+ this.mobileNumber,
+ this.emailAddress,
+ this.patientIdentificationNo,
+ this.patientType,
+ this.admissionNo,
+ this.admissionDate,
+ this.roomID,
+ this.bedID,
+ this.nursingStationID,
+ this.description,
+ this.nationalityName,
+ this.nationalityNameN,
+ this.clinicDescription,
+ this.clinicDescriptionN,
+ this.referralDoctor,
+ this.referringDoctor,
+ this.referralClinic,
+ this.referringClinic,
+ this.referralStatus,
+ this.referralDate,
+ this.referringDoctorRemarks,
+ this.referredDoctorRemarks,
+ this.referralResponseOn,
+ this.priority,
+ this.frequency,
+ this.mAXResponseTime,
+ this.episodeID,
+ this.appointmentNo,
+ this.appointmentDate,
+ this.appointmentType,
+ this.patientMRN,
+ this.createdOn,
+ this.clinicID,
+ this.nationalityID,
+ this.age,
+ this.doctorImageURL,
+ this.frequencyDescription,
+ this.genderDescription,
+ this.isDoctorLate,
+ this.isDoctorResponse,
+ this.nationalityFlagURL,
+ this.nursingStationName,
+ this.priorityDescription,
+ this.referringClinicDescription,
+ this.referringDoctorName});
MyReferralPatientModel.fromJson(Map json) {
rowID = json['RowID'];
@@ -158,8 +158,21 @@ class MyReferralPatientModel {
referringDoctor = json['ReferringDoctor'];
referralClinic = json['ReferralClinic'];
referringClinic = json['ReferringClinic'];
- referralStatus = json['ReferralStatus'];
- referralDate = AppDateUtils.convertStringToDate(json['ReferralDate']);
+ referralStatus = json["ReferralStatus"] is String
+ ? json['ReferralStatus'] == "Accepted"
+ ? 46
+ : json['ReferralStatus'] == "Pending"
+ ? 1
+ : 0
+ : json["ReferralStatus"];
+ try {
+ referralDate = AppDateUtils.getDateTimeFromString(json['ReferralDate']);
+ } catch (e) {
+ referralDate = AppDateUtils.convertStringToDate(json['ReferralDate']);
+ } finally {
+ referralDate = DateTime.now();
+ }
+
referringDoctorRemarks = json['ReferringDoctorRemarks'];
referredDoctorRemarks = json['ReferredDoctorRemarks'];
referralResponseOn = json['ReferralResponseOn'];
@@ -253,6 +266,6 @@ class MyReferralPatientModel {
}
get patientName {
- return this.firstName+" "+this.lastName;
+ return this.firstName + " " + this.lastName;
}
}
diff --git a/lib/core/model/referral/MyReferralPatientRequestModel.dart b/lib/core/model/referral/MyReferralPatientRequestModel.dart
new file mode 100644
index 00000000..08b98a99
--- /dev/null
+++ b/lib/core/model/referral/MyReferralPatientRequestModel.dart
@@ -0,0 +1,104 @@
+class MyReferralPatientRequestModel {
+ int channel;
+ int clinicID;
+ int doctorID;
+ int editedBy;
+ String firstName;
+ String from;
+ String iPAdress;
+ bool isLoginForDoctorApp;
+ int languageID;
+ String lastName;
+ String middleName;
+ int patientID;
+ String patientIdentificationID;
+ String patientMobileNumber;
+ bool patientOutSA;
+ int patientTypeID;
+ int projectID;
+ String sessionID;
+ String stamp;
+ String to;
+ String tokenID;
+ double versionID;
+ String vidaAuthTokenID;
+
+ MyReferralPatientRequestModel(
+ {this.channel,
+ this.clinicID,
+ this.doctorID,
+ this.editedBy,
+ this.firstName,
+ this.from,
+ this.iPAdress,
+ this.isLoginForDoctorApp,
+ this.languageID,
+ this.lastName,
+ this.middleName,
+ this.patientID,
+ this.patientIdentificationID,
+ this.patientMobileNumber,
+ this.patientOutSA,
+ this.patientTypeID,
+ this.projectID,
+ this.sessionID,
+ this.stamp,
+ this.to,
+ this.tokenID,
+ this.versionID,
+ this.vidaAuthTokenID});
+
+ MyReferralPatientRequestModel.fromJson(Map json) {
+ channel = json['Channel'];
+ clinicID = json['ClinicID'];
+ doctorID = json['DoctorID'];
+ editedBy = json['EditedBy'];
+ firstName = json['FirstName'];
+ from = json['From'];
+ iPAdress = json['IPAdress'];
+ isLoginForDoctorApp = json['IsLoginForDoctorApp'];
+ languageID = json['LanguageID'];
+ lastName = json['LastName'];
+ middleName = json['MiddleName'];
+ patientID = json['PatientID'];
+ patientIdentificationID = json['PatientIdentificationID'];
+ patientMobileNumber = json['PatientMobileNumber'];
+ patientOutSA = json['PatientOutSA'];
+ patientTypeID = json['PatientTypeID'];
+ projectID = json['ProjectID'];
+ sessionID = json['SessionID'];
+ stamp = json['stamp'];
+ to = json['To'];
+ tokenID = json['TokenID'];
+ versionID = json['VersionID'];
+ vidaAuthTokenID = json['VidaAuthTokenID'];
+ }
+
+ Map toJson() {
+ final Map data = new Map();
+ data['Channel'] = this.channel;
+ data['ClinicID'] = this.clinicID;
+ data['DoctorID'] = this.doctorID;
+ data['EditedBy'] = this.editedBy;
+ data['FirstName'] = this.firstName;
+ data['From'] = this.from;
+ data['IPAdress'] = this.iPAdress;
+ data['IsLoginForDoctorApp'] = this.isLoginForDoctorApp;
+ data['LanguageID'] = this.languageID;
+ data['LastName'] = this.lastName;
+ data['MiddleName'] = this.middleName;
+ data['PatientID'] = this.patientID;
+ data['PatientIdentificationID'] = this.patientIdentificationID;
+ data['PatientMobileNumber'] = this.patientMobileNumber;
+ data['PatientOutSA'] = this.patientOutSA;
+ data['PatientTypeID'] = this.patientTypeID;
+ data['ProjectID'] = this.projectID;
+ data['SessionID'] = this.sessionID;
+ data['stamp'] = this.stamp;
+ data['To'] = this.to;
+ data['TokenID'] = this.tokenID;
+ data['VersionID'] = this.versionID;
+ data['VidaAuthTokenID'] = this.vidaAuthTokenID;
+ return data;
+ }
+}
diff --git a/lib/core/service/NavigationService.dart b/lib/core/service/NavigationService.dart
new file mode 100644
index 00000000..426ace4d
--- /dev/null
+++ b/lib/core/service/NavigationService.dart
@@ -0,0 +1,12 @@
+import 'package:flutter/material.dart';
+
+class NavigationService {
+ final GlobalKey navigatorKey =
+ new GlobalKey();
+ Future navigateTo(String routeName) {
+ return navigatorKey.currentState.pushNamed(routeName);
+ }
+ Future pushNamedAndRemoveUntil(String routeName) {
+ return navigatorKey.currentState.pushNamedAndRemoveUntil(routeName,(asd)=>false);
+ }
+}
\ No newline at end of file
diff --git a/lib/core/service/patient/LiveCarePatientServices.dart b/lib/core/service/patient/LiveCarePatientServices.dart
index e813e017..29b120ec 100644
--- a/lib/core/service/patient/LiveCarePatientServices.dart
+++ b/lib/core/service/patient/LiveCarePatientServices.dart
@@ -74,7 +74,7 @@ class LiveCarePatientServices extends BaseService {
}, body: startCallReq.toJson(), isLiveCare: _isLive);
}
- Future endCallWithCharge(int vcID, String altServiceList) async {
+ Future endCallWithCharge(int vcID, List altServiceList) async {
hasError = false;
await baseAppClient.post(END_CALL_WITH_CHARGE, onSuccess: (dynamic response, int statusCode) {
endCallResponse = response;
@@ -84,6 +84,7 @@ class LiveCarePatientServices extends BaseService {
}, body: {
"VC_ID": vcID,
"AltServiceList": altServiceList,
+ "generalid":GENERAL_ID
}, isLiveCare: _isLive);
}
@@ -110,7 +111,7 @@ class LiveCarePatientServices extends BaseService {
hasError = true;
super.error = error;
}, body: {
- "VC_ID": vcID,
+ "VC_ID": vcID, "generalid": GENERAL_ID
}, isLiveCare: _isLive);
}
@@ -140,6 +141,7 @@ class LiveCarePatientServices extends BaseService {
super.error = error;
}, body: {
"VC_ID": vcID,
- }, isLiveCare: _isLive);
+ "generalid": GENERAL_ID
+ }, isLiveCare: _isLive);
}
}
diff --git a/lib/core/service/patient/MyReferralPatientService.dart b/lib/core/service/patient/MyReferralPatientService.dart
index 536e68a7..39a75e8f 100644
--- a/lib/core/service/patient/MyReferralPatientService.dart
+++ b/lib/core/service/patient/MyReferralPatientService.dart
@@ -1,5 +1,6 @@
import 'package:doctor_app_flutter/config/config.dart';
import 'package:doctor_app_flutter/core/model/referral/MyReferralPatientModel.dart';
+import 'package:doctor_app_flutter/core/model/referral/MyReferralPatientRequestModel.dart';
import 'package:doctor_app_flutter/core/service/base/base_service.dart';
import 'package:doctor_app_flutter/models/doctor/request_add_referred_doctor_remarks.dart';
@@ -8,22 +9,22 @@ class MyReferralInPatientService extends BaseService {
Future getMyReferralPatientService() async {
hasError = false;
- Map body = Map();
await getDoctorProfile();
- body['DoctorID'] = doctorProfile.doctorID;
- body['FirstName'] = "0";
- body['MiddleName'] = "0";
- body['LastName'] = "0";
- body['PatientMobileNumber'] = "0";
- body['PatientIdentificationID'] = "0";
- body['PatientID'] = 0;
- body['From'] = "0";
- body['To'] = "0";
- body['stamp'] = DateTime.now().toIso8601String();
- body['IsLoginForDoctorApp'] = true;
- body['IPAdress'] = "11.11.11.11";
- body['PatientOutSA'] = false;
- body['PatientTypeID'] = 1;
+
+ MyReferralPatientRequestModel myReferralPatientRequestModel =
+ MyReferralPatientRequestModel(
+ doctorID: doctorProfile.doctorID,
+ firstName: "0",
+ middleName: "0",
+ lastName: "0",
+ patientMobileNumber: "0",
+ patientIdentificationID: "0",
+ patientID: 0,
+ from: "0",
+ to: "0",
+ stamp: DateTime.now().toIso8601String(),
+ isLoginForDoctorApp: true,
+ patientTypeID: 1);
myReferralPatients.clear();
await baseAppClient.post(
GET_MY_REFERRAL_INPATIENT,
@@ -38,7 +39,43 @@ class MyReferralInPatientService extends BaseService {
hasError = true;
super.error = error;
},
- body: body,
+ body: myReferralPatientRequestModel.toJson(),
+ );
+ }
+
+ Future getMyReferralOutPatientService() async {
+ hasError = false;
+ await getDoctorProfile();
+
+ MyReferralPatientRequestModel myReferralPatientRequestModel =
+ MyReferralPatientRequestModel(
+ doctorID: doctorProfile.doctorID,
+ firstName: "0",
+ middleName: "0",
+ lastName: "0",
+ patientMobileNumber: "0",
+ patientIdentificationID: "0",
+ patientID: 0,
+ from: "0",
+ to: "0",
+ stamp: DateTime.now().toIso8601String(),
+ isLoginForDoctorApp: true,
+ patientTypeID: 1);
+ myReferralPatients.clear();
+ await baseAppClient.post(
+ GET_MY_REFERRAL_OUT_PATIENT,
+ onSuccess: (dynamic response, int statusCode) {
+ if (response['List_MyOutPatientReferral'] != null) {
+ response['List_MyOutPatientReferral'].forEach((v) {
+ myReferralPatients.add(MyReferralPatientModel.fromJson(v));
+ });
+ }
+ },
+ onFailure: (String error, int statusCode) {
+ hasError = true;
+ super.error = error;
+ },
+ body: myReferralPatientRequestModel.toJson(),
);
}
diff --git a/lib/core/service/patient/patient-doctor-referral-service.dart b/lib/core/service/patient/patient-doctor-referral-service.dart
index c83c74c9..81529590 100644
--- a/lib/core/service/patient/patient-doctor-referral-service.dart
+++ b/lib/core/service/patient/patient-doctor-referral-service.dart
@@ -157,6 +157,36 @@ class PatientReferralService extends LookupService {
);
}
+ Future getMyReferredOutPatient() async {
+ hasError = false;
+ RequestMyReferralPatientModel _requestMyReferralPatient =
+ RequestMyReferralPatientModel();
+ DoctorProfileModel doctorProfile = await getDoctorProfile();
+
+ await baseAppClient.post(
+ GET_MY_REFERRED_OUT_PATIENT,
+ onSuccess: (dynamic response, int statusCode) {
+ listMyReferredPatientModel.clear();
+
+ response['List_MyReferredOutPatient'].forEach((v) {
+ MyReferredPatientModel item = MyReferredPatientModel.fromJson(v);
+ if (doctorProfile != null) {
+ item.isReferralDoctorSameBranch =
+ doctorProfile.projectID == item.projectID;
+ } else {
+ item.isReferralDoctorSameBranch = false;
+ }
+ listMyReferredPatientModel.add(item);
+ });
+ },
+ onFailure: (String error, int statusCode) {
+ hasError = true;
+ super.error = error;
+ },
+ body: _requestMyReferralPatient.toJson(),
+ );
+ }
+
Future getPendingReferralList() async {
hasError = false;
DoctorProfileModel doctorProfile = await getDoctorProfile();
diff --git a/lib/core/service/patient/referred_patient_service.dart b/lib/core/service/patient/referred_patient_service.dart
deleted file mode 100644
index 0af9b077..00000000
--- a/lib/core/service/patient/referred_patient_service.dart
+++ /dev/null
@@ -1,36 +0,0 @@
-import 'package:doctor_app_flutter/config/config.dart';
-import 'package:doctor_app_flutter/core/service/base/base_service.dart';
-import 'package:doctor_app_flutter/models/doctor/verify_referral_doctor_remarks.dart';
-import 'package:doctor_app_flutter/models/patient/my_referral/my_referred_patient_model.dart';
-import 'package:doctor_app_flutter/models/patient/request_my_referral_patient_model.dart';
-
-class ReferredPatientService extends BaseService {
- List _listMyReferredPatientModel = [];
-
- List get listMyReferredPatientModel =>
- _listMyReferredPatientModel;
-
- RequestMyReferralPatientModel _requestMyReferralPatient =
- RequestMyReferralPatientModel();
- VerifyReferralDoctorRemarks _verifyreferraldoctorremarks =
- VerifyReferralDoctorRemarks();
-
- Future getMyReferredPatient() async {
- await baseAppClient.post(
- GET_MY_REFERRED_PATIENT,
- onSuccess: (dynamic response, int statusCode) {
- _listMyReferredPatientModel.clear();
- response['List_MyReferredPatient'].forEach((v) {
- listMyReferredPatientModel.add(MyReferredPatientModel.fromJson(v));
- });
- // print(response['List_MyReferredPatient']);
- },
- onFailure: (String error, int statusCode) {
- hasError = true;
- super.error = error;
- },
- body: _requestMyReferralPatient.toJson(),
- );
- }
-
-}
diff --git a/lib/core/viewModel/LiveCarePatientViewModel.dart b/lib/core/viewModel/LiveCarePatientViewModel.dart
index 8dc83c06..378013bd 100644
--- a/lib/core/viewModel/LiveCarePatientViewModel.dart
+++ b/lib/core/viewModel/LiveCarePatientViewModel.dart
@@ -101,13 +101,13 @@ class LiveCarePatientViewModel extends BaseViewModel {
Future endCallWithCharge(int vcID, bool isConfirmed) async {
setState(ViewState.BusyLocal);
- String selectedServicesString = "";
+ List selectedServices = [];
if (isConfirmed) {
- selectedServicesString = getSelectedAlternativeServices();
+ selectedServices = getSelectedAlternativeServices();
}
await _liveCarePatientServices.endCallWithCharge(
- vcID, selectedServicesString);
+ vcID, selectedServices);
if (_liveCarePatientServices.hasError) {
error = _liveCarePatientServices.error;
setState(ViewState.ErrorLocal);
@@ -117,14 +117,14 @@ class LiveCarePatientViewModel extends BaseViewModel {
}
}
- String getSelectedAlternativeServices() {
+ List getSelectedAlternativeServices() {
List selectedServices = List();
for (AlternativeService service in alternativeServicesList) {
if (service.isSelected) {
selectedServices.add(service.serviceID);
}
}
- return selectedServices.toString();
+ return selectedServices;
}
Future getAlternativeServices(int vcID) async {
diff --git a/lib/core/viewModel/PatientMedicalReportViewModel.dart b/lib/core/viewModel/PatientMedicalReportViewModel.dart
index 999a0530..293cf587 100644
--- a/lib/core/viewModel/PatientMedicalReportViewModel.dart
+++ b/lib/core/viewModel/PatientMedicalReportViewModel.dart
@@ -25,12 +25,24 @@ class PatientMedicalReportViewModel extends BaseViewModel {
setState(ViewState.Idle);
}
+ bool hasOnHold(){
+ bool hasHold = false;
+ medicalReportList.forEach((element) {
+ if(element.status == 1){
+ hasHold = true;
+ }
+ });
+
+ return hasHold;
+
+ }
+
Future getMedicalReportTemplate() async {
- setState(ViewState.Busy);
+ setState(ViewState.BusyLocal);
await _service.getMedicalReportTemplate();
if (_service.hasError) {
error = _service.error;
- setState(ViewState.Error);
+ setState(ViewState.ErrorLocal);
} else
setState(ViewState.Idle);
}
diff --git a/lib/core/viewModel/patient-referral-viewmodel.dart b/lib/core/viewModel/patient-referral-viewmodel.dart
index a414c200..01d40e62 100644
--- a/lib/core/viewModel/patient-referral-viewmodel.dart
+++ b/lib/core/viewModel/patient-referral-viewmodel.dart
@@ -28,6 +28,7 @@ class PatientReferralViewModel extends BaseViewModel {
DischargedPatientService _dischargedPatientService =
locator();
+
List get myDischargeReferralPatient =>
_dischargedPatientService.myDischargeReferralPatients;
@@ -133,8 +134,11 @@ class PatientReferralViewModel extends BaseViewModel {
return null;
}
- Future getMyReferredPatient() async {
- setState(ViewState.Busy);
+ Future getMyReferredPatient({bool isFirstTime = true}) async {
+ if (isFirstTime)
+ setState(ViewState.Busy);
+ else
+ setState(ViewState.BusyLocal);
await _referralPatientService.getMyReferredPatient();
if (_referralPatientService.hasError) {
error = _referralPatientService.error;
@@ -143,6 +147,19 @@ class PatientReferralViewModel extends BaseViewModel {
setState(ViewState.Idle);
}
+ Future getMyReferredOutPatient({bool isFirstTime = true}) async {
+ if (isFirstTime)
+ setState(ViewState.Busy);
+ else
+ setState(ViewState.BusyLocal);
+ await _referralPatientService.getMyReferredOutPatient();
+ if (_referralPatientService.hasError) {
+ error = _referralPatientService.error;
+ setState(ViewState.Error);
+ } else
+ setState(ViewState.Idle);
+ }
+
MyReferredPatientModel getReferredPatientItem(int index) {
return listMyReferredPatientModel[index];
}
@@ -157,12 +174,22 @@ class PatientReferralViewModel extends BaseViewModel {
setState(ViewState.Idle);
}
- Future getMyReferralPatientService() async {
- setState(ViewState.Busy);
+ Future getMyReferralPatientService({bool localBusy = false}) async {
+ if(localBusy) setState(ViewState.BusyLocal); else setState(ViewState.Busy);
await _myReferralService.getMyReferralPatientService();
if (_myReferralService.hasError) {
error = _myReferralService.error;
- setState(ViewState.Error);
+ if(localBusy) setState(ViewState.ErrorLocal); else setState(ViewState.Error);
+ } else
+ setState(ViewState.Idle);
+ }
+
+ Future getMyReferralOutPatientService({bool localBusy = false}) async {
+ if(localBusy) setState(ViewState.BusyLocal); else setState(ViewState.Busy);
+ await _myReferralService.getMyReferralOutPatientService();
+ if (_myReferralService.hasError) {
+ error = _myReferralService.error;
+ if(localBusy) setState(ViewState.ErrorLocal); else setState(ViewState.Error);
} else
setState(ViewState.Idle);
}
diff --git a/lib/core/viewModel/referred_view_model.dart b/lib/core/viewModel/referred_view_model.dart
deleted file mode 100644
index 173aa60a..00000000
--- a/lib/core/viewModel/referred_view_model.dart
+++ /dev/null
@@ -1,24 +0,0 @@
-import 'package:doctor_app_flutter/core/enum/viewstate.dart';
-import 'package:doctor_app_flutter/core/service/patient/referred_patient_service.dart';
-import 'package:doctor_app_flutter/models/patient/my_referral/my_referred_patient_model.dart';
-
-import '../../locator.dart';
-import 'base_view_model.dart';
-
-class ReferredPatientViewModel extends BaseViewModel {
- ReferredPatientService _referralPatientService =
- locator();
-
- List get listMyReferredPatientModel =>
- _referralPatientService.listMyReferredPatientModel;
-
- Future getMyReferredPatient() async {
- setState(ViewState.Busy);
- await _referralPatientService.getMyReferredPatient();
- if (_referralPatientService.hasError) {
- error = _referralPatientService.error;
- setState(ViewState.Error);
- } else
- setState(ViewState.Idle);
- }
-}
diff --git a/lib/locator.dart b/lib/locator.dart
index 66ec9161..1c491b54 100644
--- a/lib/locator.dart
+++ b/lib/locator.dart
@@ -8,35 +8,35 @@ import 'package:doctor_app_flutter/core/viewModel/procedure_View_model.dart';
import 'package:doctor_app_flutter/core/viewModel/sick_leave_view_model.dart';
import 'package:get_it/get_it.dart';
+import 'core/service/NavigationService.dart';
import 'core/service/home/dasboard_service.dart';
+import 'core/service/home/doctor_reply_service.dart';
+import 'core/service/home/schedule_service.dart';
+import 'core/service/hospitals/hospitals_service.dart';
import 'core/service/patient/DischargedPatientService.dart';
import 'core/service/patient/LiveCarePatientServices.dart';
-import 'core/service/patient/patient_service.dart';
-import 'core/service/patient_medical_file/insurance/InsuranceCardService.dart';
import 'core/service/patient/MyReferralPatientService.dart';
import 'core/service/patient/PatientMuseService.dart';
import 'core/service/patient/ReferralService.dart';
+import 'core/service/patient/out_patient_service.dart';
+import 'core/service/patient/patient-doctor-referral-service.dart';
+import 'core/service/patient/patientInPatientService.dart';
+import 'core/service/patient/patient_service.dart';
+import 'core/service/patient/referral_patient_service.dart';
+import 'core/service/patient_medical_file/admission_request/patient-admission-request-service.dart';
+import 'core/service/patient_medical_file/insurance/InsuranceCardService.dart';
+import 'core/service/patient_medical_file/lab_order/labs_service.dart';
import 'core/service/patient_medical_file/medical_report/PatientMedicalReportService.dart';
import 'core/service/patient_medical_file/medical_report/medical_file_service.dart';
+import 'core/service/patient_medical_file/prescription/medicine_service.dart';
import 'core/service/patient_medical_file/prescription/prescription_service.dart';
+import 'core/service/patient_medical_file/prescription/prescriptions_service.dart';
import 'core/service/patient_medical_file/procedure/procedure_service.dart';
+import 'core/service/patient_medical_file/radiology/radiology_service.dart';
import 'core/service/patient_medical_file/sick_leave/sickleave_service.dart';
import 'core/service/patient_medical_file/soap/SOAP_service.dart';
-import 'core/service/home/doctor_reply_service.dart';
-import 'core/service/hospitals/hospitals_service.dart';
-import 'core/service/patient_medical_file/lab_order/labs_service.dart';
-import 'core/service/patient_medical_file/prescription/medicine_service.dart';
-import 'core/service/patient_medical_file/admission_request/patient-admission-request-service.dart';
-import 'core/service/patient/patient-doctor-referral-service.dart';
import 'core/service/patient_medical_file/ucaf/patient-ucaf-service.dart';
import 'core/service/patient_medical_file/vital_sign/patient-vital-signs-service.dart';
-import 'core/service/patient/out_patient_service.dart';
-import 'core/service/patient/patientInPatientService.dart';
-import 'core/service/patient_medical_file/prescription/prescriptions_service.dart';
-import 'core/service/patient_medical_file/radiology/radiology_service.dart';
-import 'core/service/patient/referral_patient_service.dart';
-import 'core/service/patient/referred_patient_service.dart';
-import 'core/service/home/schedule_service.dart';
import 'core/viewModel/DischargedPatientViewModel.dart';
import 'core/viewModel/InsuranceViewModel.dart';
import 'core/viewModel/LiveCarePatientViewModel.dart';
@@ -54,7 +54,6 @@ import 'core/viewModel/patient-vital-sign-viewmodel.dart';
import 'core/viewModel/prescriptions_view_model.dart';
import 'core/viewModel/radiology_view_model.dart';
import 'core/viewModel/referral_view_model.dart';
-import 'core/viewModel/referred_view_model.dart';
import 'core/viewModel/schedule_view_model.dart';
GetIt locator = GetIt.instance;
@@ -65,7 +64,6 @@ void setupLocator() {
locator.registerLazySingleton(() => DoctorReplyService());
locator.registerLazySingleton(() => ScheduleService());
locator.registerLazySingleton(() => ReferralPatientService());
- locator.registerLazySingleton(() => ReferredPatientService());
locator.registerLazySingleton(() => MedicineService());
locator.registerLazySingleton(() => PatientService());
locator.registerLazySingleton(() => DashboardService());
@@ -92,12 +90,12 @@ void setupLocator() {
locator.registerLazySingleton(() => HospitalsService());
locator.registerLazySingleton(() => PatientMedicalReportService());
locator.registerLazySingleton(() => LiveCarePatientServices());
+ locator.registerLazySingleton(() => NavigationService());
/// View Model
locator.registerFactory(() => DoctorReplayViewModel());
locator.registerFactory(() => ScheduleViewModel());
locator.registerFactory(() => ReferralPatientViewModel());
- locator.registerFactory(() => ReferredPatientViewModel());
locator.registerFactory(() => MedicineViewModel());
locator.registerFactory(() => PatientViewModel());
locator.registerFactory(() => DashboardViewModel());
diff --git a/lib/main.dart b/lib/main.dart
index a95378e5..c29429b0 100644
--- a/lib/main.dart
+++ b/lib/main.dart
@@ -11,6 +11,7 @@ import 'package:provider/provider.dart';
import './config/size_config.dart';
import './routes.dart';
import 'config/config.dart';
+import 'core/service/NavigationService.dart';
import 'core/viewModel/authentication_view_model.dart';
import 'locator.dart';
@@ -66,6 +67,7 @@ class MyApp extends StatelessWidget {
dividerColor: Colors.grey[350],
backgroundColor: Color.fromRGBO(255, 255, 255, 1),
),
+ navigatorKey: locator().navigatorKey,
initialRoute: INIT_ROUTE,
routes: routes,
debugShowCheckedModeBanner: false,
diff --git a/lib/models/livecare/start_call_req.dart b/lib/models/livecare/start_call_req.dart
index 1ad04480..b3ceabb5 100644
--- a/lib/models/livecare/start_call_req.dart
+++ b/lib/models/livecare/start_call_req.dart
@@ -1,56 +1,56 @@
class StartCallReq {
- int vCID;
- bool isrecall;
- String tokenID;
- String generalid;
+ String clincName;
+ int clinicId;
+ String docSpec;
+ String docotrName;
int doctorId;
+ String generalid;
bool isOutKsa;
+ bool isrecall;
String projectName;
- String docotrName;
- String clincName;
- String docSpec;
- int clinicId;
+ String tokenID;
+ int vCID;
StartCallReq(
- {this.vCID,
- this.isrecall,
- this.tokenID,
- this.generalid,
- this.doctorId,
- this.isOutKsa,
- this.projectName,
- this.docotrName,
- this.clincName,
- this.docSpec,
- this.clinicId});
+ {this.clincName,
+ this.clinicId,
+ this.docSpec,
+ this.docotrName,
+ this.doctorId,
+ this.generalid,
+ this.isOutKsa,
+ this.isrecall,
+ this.projectName,
+ this.tokenID,
+ this.vCID});
StartCallReq.fromJson(Map json) {
- vCID = json['VC_ID'];
- isrecall = json['isrecall'];
- tokenID = json['TokenID'];
- generalid = json['generalid'];
+ clincName = json['clincName'];
+ clinicId = json['ClinicId'];
+ docSpec = json['Doc_Spec'];
+ docotrName = json['DocotrName'];
doctorId = json['DoctorId'];
+ generalid = json['generalid'];
isOutKsa = json['IsOutKsa'];
+ isrecall = json['isrecall'];
projectName = json['projectName'];
- docotrName = json['DocotrName'];
- clincName = json['clincName'];
- docSpec = json['Doc_Spec'];
- clinicId = json['ClinicId'];
+ tokenID = json['TokenID'];
+ vCID = json['VC_ID'];
}
Map toJson() {
final Map data = new Map();
- data['VC_ID'] = this.vCID;
- data['isrecall'] = this.isrecall;
- data['TokenID'] = this.tokenID;
- data['generalid'] = this.generalid;
+ data['clincName'] = this.clincName;
+ data['ClinicId'] = this.clinicId;
+ data['Doc_Spec'] = this.docSpec;
+ data['DocotrName'] = this.docotrName;
data['DoctorId'] = this.doctorId;
+ data['generalid'] = this.generalid;
data['IsOutKsa'] = this.isOutKsa;
+ data['isrecall'] = this.isrecall;
data['projectName'] = this.projectName;
- data['DocotrName'] = this.docotrName;
- data['clincName'] = this.clincName;
- data['Doc_Spec'] = this.docSpec;
- data['ClinicId'] = this.clinicId;
+ data['TokenID'] = this.tokenID;
+ data['VC_ID'] = this.vCID;
return data;
}
-}
+}
\ No newline at end of file
diff --git a/lib/models/patient/my_referral/my_referred_patient_model.dart b/lib/models/patient/my_referral/my_referred_patient_model.dart
index 44a427f7..b353e587 100644
--- a/lib/models/patient/my_referral/my_referred_patient_model.dart
+++ b/lib/models/patient/my_referral/my_referred_patient_model.dart
@@ -166,8 +166,9 @@ class MyReferredPatientModel {
referringDoctor = json['ReferringDoctor'];
referralClinic = json['ReferralClinic'];
referringClinic = json['ReferringClinic'];
- referralStatus = json['ReferralStatus'];
- referralDate = json['ReferralDate'];
+ createdOn = json['CreatedOn'];
+ referralStatus = json["ReferralStatus"] is String?json['ReferralStatus']== "Accepted"?46:json['ReferralStatus']=="Pending"?1:0 : json['ReferralStatus'];
+ referralDate = json['ReferralDate'] ?? createdOn;
referringDoctorRemarks = json['ReferringDoctorRemarks'];
referredDoctorRemarks = json['ReferredDoctorRemarks'];
referralResponseOn = json['ReferralResponseOn'];
@@ -179,7 +180,6 @@ class MyReferredPatientModel {
appointmentDate = json['AppointmentDate'];
appointmentType = json['AppointmentType'];
patientMRN = json['PatientMRN'];
- createdOn = json['CreatedOn'];
clinicID = json['ClinicID'];
nationalityID = json['NationalityID'];
age = json['Age'];
diff --git a/lib/screens/home/home_patient_card.dart b/lib/screens/home/home_patient_card.dart
index 6f6712ec..b388a7e2 100644
--- a/lib/screens/home/home_patient_card.dart
+++ b/lib/screens/home/home_patient_card.dart
@@ -36,11 +36,10 @@ class HomePatientCard extends StatelessWidget {
Expanded(
child: Stack(
children: [
- Positioned(
- bottom: 0.1,
- right: 0.5,
- width: 23.0,
- height: 25.0,
+ Container(
+ margin: EdgeInsets.only(top: 18, left: 10),
+ color:Colors.transparent,
+
child: Icon(
cardIcon,
size: iconSize * 2,
diff --git a/lib/screens/home/home_screen.dart b/lib/screens/home/home_screen.dart
index ab0fe73f..82add64c 100644
--- a/lib/screens/home/home_screen.dart
+++ b/lib/screens/home/home_screen.dart
@@ -329,7 +329,7 @@ class _HomeScreenState extends State {
backgroundIconColor: backgroundIconColors[colorIndex],
cardIcon: DoctorApp.livecare,
textColor: textColors[colorIndex],
- iconSize: 24,
+ iconSize: 21,
text:
"${TranslationBase.of(context).liveCare}\n${TranslationBase.of(context).patients}",
onTap: () {
diff --git a/lib/screens/live_care/end_call_screen.dart b/lib/screens/live_care/end_call_screen.dart
index 1b652e36..b7383703 100644
--- a/lib/screens/live_care/end_call_screen.dart
+++ b/lib/screens/live_care/end_call_screen.dart
@@ -65,6 +65,7 @@ class _EndCallScreenState extends State {
kSessionId: liveCareModel.startCallRes.openSessionID,
kApiKey: '46209962',
vcId: widget.patient.vcId,
+ patientName: widget.patient.fullName ?? (widget.patient.firstName != null ? "${widget.patient.firstName} ${widget.patient.lastName}" : "-"),
tokenID: await liveCareModel.getToken(),
generalId: GENERAL_ID,
doctorId: liveCareModel.doctorProfile.doctorID,
@@ -142,25 +143,22 @@ class _EndCallScreenState extends State {
'patient/health_summary.png',
onTap: () {
Helpers.showConfirmationDialog(context,
- "${TranslationBase.of(context).areYouSureYouWantTo} ${TranslationBase.of(context).sendLC}${TranslationBase.of(context).instruction} ?",
+ "${TranslationBase.of(context).areYouSureYouWantTo} ${TranslationBase.of(context).sendLC} ${TranslationBase.of(context).instruction} ?",
() async {
Navigator.of(context).pop();
GifLoaderDialogUtils.showMyDialog(context);
- liveCareModel.sendSMSInstruction(widget.patient.vcId);
+ await liveCareModel.sendSMSInstruction(widget.patient.vcId);
GifLoaderDialogUtils.hideDialog(context);
if (liveCareModel.state == ViewState.ErrorLocal) {
DrAppToastMsg.showErrorToast(liveCareModel.error);
} else {
DrAppToastMsg.showSuccesToast("You successfully sent SMS instructions");
- Navigator.of(context).pop();
- Navigator.of(context).pop();
- Navigator.of(context).pop();
}
});
},
isInPatient: isInpatient,
isDartIcon: true,
- isDisable: true,
+ // isDisable: true,
dartIcon: DoctorApp.send_instruction),
PatientProfileCardModel(
TranslationBase.of(context).transferTo,
diff --git a/lib/screens/live_care/live-care_transfer_to_admin.dart b/lib/screens/live_care/live-care_transfer_to_admin.dart
index 2d0fb7d7..233f59d8 100644
--- a/lib/screens/live_care/live-care_transfer_to_admin.dart
+++ b/lib/screens/live_care/live-care_transfer_to_admin.dart
@@ -120,7 +120,7 @@ class _LivaCareTransferToAdminState extends State {
() async {
Navigator.of(context).pop();
GifLoaderDialogUtils.showMyDialog(context);
- model.transferToAdmin(widget.patient.vcId, noteController.text);
+ await model.transferToAdmin(widget.patient.vcId, noteController.text);
GifLoaderDialogUtils.hideDialog(context);
if (model.state == ViewState.ErrorLocal) {
DrAppToastMsg.showErrorToast(model.error);
diff --git a/lib/screens/live_care/video_call.dart b/lib/screens/live_care/video_call.dart
index c6f9a885..07de1943 100644
--- a/lib/screens/live_care/video_call.dart
+++ b/lib/screens/live_care/video_call.dart
@@ -66,6 +66,7 @@ class _VideoCallPageState extends State {
//'1_MX40NjgwMzIyNH5-MTU5MzY4MzYzODYwM35ucExWYVRVSm5Hcy9uWGZmM1lOa3czZHV-fg',
kApiKey: '46209962',
vcId: widget.patientData.vcId,
+ patientName: widget.patientData.fullName ?? widget.patientData.firstName != null ? "${widget.patientData.firstName} ${widget.patientData.lastName}" : "-",
tokenID: token, //"hfkjshdf347r8743",
generalId: "Cs2020@2016\$2958",
doctorId: doctorprofile['DoctorID'],
diff --git a/lib/screens/patients/profile/lab_result/laboratory_result_page.dart b/lib/screens/patients/profile/lab_result/laboratory_result_page.dart
index 5f79038f..c7a98924 100644
--- a/lib/screens/patients/profile/lab_result/laboratory_result_page.dart
+++ b/lib/screens/patients/profile/lab_result/laboratory_result_page.dart
@@ -2,7 +2,7 @@ import 'package:doctor_app_flutter/core/model/labs/patient_lab_orders.dart';
import 'package:doctor_app_flutter/core/viewModel/labs_view_model.dart';
import 'package:doctor_app_flutter/models/patient/patiant_info_model.dart';
import 'package:doctor_app_flutter/screens/base/base_view.dart';
-import 'package:doctor_app_flutter/widgets/patients/profile/patient_profile_header_with_appointment_card_app_bar.dart';
+import 'package:doctor_app_flutter/widgets/patients/profile/GeneralLabResultHeader.dart';
import 'package:doctor_app_flutter/widgets/shared/app_scaffold_widget.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
@@ -32,37 +32,32 @@ class _LaboratoryResultPageState extends State {
@override
Widget build(BuildContext context) {
return BaseView(
- // onModelReady: (model) => model.getLaboratoryResult(
- // invoiceNo: widget.patientLabOrders.invoiceNo,
- // clinicID: widget.patientLabOrders.clinicID,
- // projectID: widget.patientLabOrders.projectID,
- // orderNo: widget.patientLabOrders.orderNo,
- // patient: widget.patient,
- // isInpatient: widget.patientType == "1"),
onModelReady: (model) => model.getPatientLabResult(
patientLabOrder: widget.patientLabOrders,
patient: widget.patient,
isInpatient: true),
builder: (_, model, w) => AppScaffold(
isShowAppBar: true,
- appBar: PatientProfileHeaderWhitAppointmentAppBar(
- patient: widget.patient,
- patientType: widget.patientType ?? "0",
- arrivalType: widget.arrivalType ?? "0",
- orderNo: widget.patientLabOrders.orderNo,
- appointmentDate: widget.patientLabOrders.orderDate,
- doctorName: widget.patientLabOrders.doctorName,
- branch: widget.patientLabOrders.projectName,
- clinic: widget.patientLabOrders.clinicDescription,
- profileUrl: widget.patientLabOrders.doctorImageURL,
- invoiceNO: widget.patientLabOrders.invoiceNo,
+ appBar: GeneralLabResultHeader(
+ patient: widget.patient,
+ patientType: widget.patientType ?? "0",
+ arrivalType: widget.arrivalType ?? "0",
+ orderNo: widget.patientLabOrders.orderNo,
+ appointmentDate: widget.patientLabOrders.orderDate,
+ doctorName: widget.patientLabOrders.doctorName,
+ branch: widget.patientLabOrders.projectName,
+ clinic: widget.patientLabOrders.clinicDescription,
+ profileUrl: widget.patientLabOrders.doctorImageURL,
+ invoiceNO: widget.patientLabOrders.invoiceNo,
),
+
baseViewModel: model,
body: AppScaffold(
isShowAppBar: false,
body: SingleChildScrollView(
child: Column(
children: [
+
LaboratoryResultWidget(
onTap: () async {},
billNo: widget.patientLabOrders.invoiceNo,
diff --git a/lib/screens/patients/profile/medical_report/AddVerifyMedicalReport.dart b/lib/screens/patients/profile/medical_report/AddVerifyMedicalReport.dart
index a3fa91e9..a73eb90f 100644
--- a/lib/screens/patients/profile/medical_report/AddVerifyMedicalReport.dart
+++ b/lib/screens/patients/profile/medical_report/AddVerifyMedicalReport.dart
@@ -6,6 +6,7 @@ import 'package:doctor_app_flutter/models/patient/patiant_info_model.dart';
import 'package:doctor_app_flutter/screens/base/base_view.dart';
import 'package:doctor_app_flutter/util/dr_app_toast_msg.dart';
import 'package:doctor_app_flutter/util/translations_delegate_base.dart';
+import 'package:doctor_app_flutter/widgets/shared/app_loader_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/loader/gif_loader_dialog_utils.dart';
@@ -40,27 +41,35 @@ class _AddVerifyMedicalReportState extends State {
? TranslationBase.of(context).medicalReportAdd
: TranslationBase.of(context).medicalReportVerify,
backgroundColor: Theme.of(context).scaffoldBackgroundColor,
- body: Column(
- children: [
- Expanded(
- child: Container(
- margin: EdgeInsets.all(16),
- child: Column(
- children: [
- Expanded(
- child: SingleChildScrollView(
- child: Container(
- child: Column(
- crossAxisAlignment: CrossAxisAlignment.start,
+ body: model.state == ViewState.BusyLocal
+ ? AppLoaderWidget()
+ : Column(
+ children: [
+ Expanded(
+ child: Container(
+ margin: EdgeInsets.all(16),
+ child: Column(
+ children: [
+ Expanded(
+ child: SingleChildScrollView(
+ child: Container(
+ child: Column(
+ crossAxisAlignment: CrossAxisAlignment.start,
children: [
- if (model.medicalReportTemplate.length > 0)
+ // if (model.medicalReportTemplate.length > 0)
HtmlRichEditor(
- initialText: model
- .medicalReportTemplate[0]
- .templateTextHtml,
+ initialText: (medicalReport != null
+ ? medicalReport.reportDataHtml
+ : model.medicalReportTemplate
+ .length > 0 ? model
+ .medicalReportTemplate[0] : ""),
+ hint: "Write the medical report ",
height:
- MediaQuery.of(context).size.height *
- 0.75,
+ MediaQuery
+ .of(context)
+ .size
+ .height *
+ 0.75,
),
],
),
diff --git a/lib/screens/patients/profile/medical_report/MedicalReportPage.dart b/lib/screens/patients/profile/medical_report/MedicalReportPage.dart
index e2da651b..7baa109d 100644
--- a/lib/screens/patients/profile/medical_report/MedicalReportPage.dart
+++ b/lib/screens/patients/profile/medical_report/MedicalReportPage.dart
@@ -7,6 +7,7 @@ import 'package:doctor_app_flutter/models/patient/patiant_info_model.dart';
import 'package:doctor_app_flutter/screens/base/base_view.dart';
import 'package:doctor_app_flutter/util/date-utils.dart';
import 'package:doctor_app_flutter/util/dr_app_toast_msg.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/patients/profile/add-order/addNewOrder.dart';
import 'package:doctor_app_flutter/widgets/patients/profile/large_avatar.dart';
@@ -17,7 +18,6 @@ import 'package:doctor_app_flutter/widgets/shared/card_with_bg_widget.dart';
import 'package:eva_icons_flutter/eva_icons_flutter.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
-import 'package:flutter_html/flutter_html.dart';
import 'package:provider/provider.dart';
import '../../../../routes.dart';
@@ -75,13 +75,18 @@ class MedicalReportPage extends StatelessWidget {
),
AddNewOrder(
onTap: () {
- Navigator.of(context)
- .pushNamed(PATIENT_MEDICAL_REPORT_INSERT, arguments: {
- 'patient': patient,
- 'patientType': patientType,
- 'arrivalType': arrivalType,
- 'type': MedicalReportStatus.ADD
- });
+ if (model.hasOnHold()) {
+ Helpers.showErrorToast(
+ "Please Verified the on hold report to be able to add new one");
+ } else {
+ Navigator.of(context)
+ .pushNamed(PATIENT_MEDICAL_REPORT_INSERT, arguments: {
+ 'patient': patient,
+ 'patientType': patientType,
+ 'arrivalType': arrivalType,
+ 'type': MedicalReportStatus.ADD
+ });
+ }
},
label: TranslationBase.of(context).createNewMedicalReport,
),
@@ -92,7 +97,7 @@ class MedicalReportPage extends StatelessWidget {
onTap: () {
if (model.medicalReportList[index].status == 1) {
Navigator.of(context).pushNamed(
- PATIENT_MEDICAL_REPORT_DETAIL,
+ PATIENT_MEDICAL_REPORT_INSERT,
arguments: {
'patient': patient,
'patientType': patientType,
@@ -101,7 +106,7 @@ class MedicalReportPage extends StatelessWidget {
});
} else {
Navigator.of(context).pushNamed(
- PATIENT_MEDICAL_REPORT_INSERT,
+ PATIENT_MEDICAL_REPORT_DETAIL,
arguments: {
'patient': patient,
'patientType': patientType,
@@ -116,7 +121,7 @@ class MedicalReportPage extends StatelessWidget {
child: CardWithBgWidget(
hasBorder: false,
bgColor: model.medicalReportList[index].status == 1
- ? Colors.red[700]
+ ? Color(0xFFCC9B14)
: Colors.green[700],
widget: Column(
children: [
@@ -132,9 +137,9 @@ class MedicalReportPage extends StatelessWidget {
: TranslationBase.of(context)
.verified,
color: model.medicalReportList[index]
- .status ==
- 1
- ? Colors.red[700]
+ .status ==
+ 1
+ ? Color(0xFFCC9B14)
: Colors.green[700],
fontSize: 1.4 * SizeConfig.textMultiplier,
bold: true,
@@ -226,8 +231,8 @@ class MedicalReportPage extends StatelessWidget {
Icon(
model.medicalReportList[index].status ==
1
- ? EvaIcons.eye
- : DoctorApp.edit_1,
+ ? DoctorApp.edit_1
+ :EvaIcons.eye ,
),
],
),
diff --git a/lib/screens/patients/profile/profile_screen/patient_profile_screen.dart b/lib/screens/patients/profile/profile_screen/patient_profile_screen.dart
index 55b2d6f9..298e7d18 100644
--- a/lib/screens/patients/profile/profile_screen/patient_profile_screen.dart
+++ b/lib/screens/patients/profile/profile_screen/patient_profile_screen.dart
@@ -156,51 +156,57 @@ class _PatientProfileScreenState extends State
SizedBox(
height: MediaQuery.of(context).size.height * 0.05,
)
- ],
- ),
- ),
-
],
),
- if (patient.patientStatusType != null &&
- patient.patientStatusType == 43)
- BaseView(
- onModelReady: (model) async {},
- builder: (_, model, w) => Positioned(
- top: 180,
- left: 20,
- right: 20,
- child: Row(
- children: [
- Expanded(child: Container()),
- if (patient.episodeNo == 0)
- AppButton(
- title:
- "${TranslationBase.of(context).createNew}\n${TranslationBase.of(context).episode}",
- color: patient.patientStatusType == 43
- ? Colors.red.shade700
- : Colors.grey.shade700,
- fontColor: Colors.white,
- vPadding: 8,
- radius: 30,
- hPadding: 20,
- fontWeight: FontWeight.normal,
- fontSize: 1.6,
- icon: Image.asset(
- "assets/images/create-episod.png",
- color: Colors.white,
+ ),
+ ],
+ ),
+ if (isFromLiveCare
+ ? patient.episodeNo != null
+ : patient.patientStatusType != null &&
+ patient.patientStatusType == 43)
+ BaseView(
+ onModelReady: (model) async {},
+ builder: (_, model, w) => Positioned(
+ top: 180,
+ left: 20,
+ right: 20,
+ child: Row(
+ children: [
+ Expanded(child: Container()),
+ if (patient.episodeNo == 0)
+ AppButton(
+ title:
+ "${TranslationBase.of(context).createNew}\n${TranslationBase.of(context).episode}",
+ color: isFromLiveCare
+ ? Colors.red.shade700
+ : patient.patientStatusType == 43
+ ? Colors.red.shade700
+ : Colors.grey.shade700,
+ fontColor: Colors.white,
+ vPadding: 8,
+ radius: 30,
+ hPadding: 20,
+ fontWeight: FontWeight.normal,
+ fontSize: 1.6,
+ icon: Image.asset(
+ "assets/images/create-episod.png",
+ color: Colors.white,
height: 30,
),
onPressed: () async {
- if (patient.patientStatusType ==
- 43) {
+ if ((isFromLiveCare &&
+ patient.appointmentNo != null &&
+ patient.appointmentNo != 0) ||
+ patient.patientStatusType ==
+ 43) {
PostEpisodeReqModel
- postEpisodeReqModel =
- PostEpisodeReqModel(
- appointmentNo:
- patient.appointmentNo,
- patientMRN:
- patient.patientMRN);
+ postEpisodeReqModel =
+ PostEpisodeReqModel(
+ appointmentNo:
+ patient.appointmentNo,
+ patientMRN:
+ patient.patientMRN);
GifLoaderDialogUtils.showMyDialog(
context);
await model.postEpisode(
@@ -220,11 +226,18 @@ class _PatientProfileScreenState extends State
if (patient.episodeNo != 0)
AppButton(
title:
- "${TranslationBase.of(context).update}\n${TranslationBase.of(context).episode}",
+ "${TranslationBase
+ .of(context)
+ .update}\n${TranslationBase
+ .of(context)
+ .episode}",
color:
- patient.patientStatusType == 43
- ? Colors.red.shade700
- : Colors.grey.shade700,
+ isFromLiveCare
+ ? Colors.red.shade700
+ : patient.patientStatusType ==
+ 43
+ ? Colors.red.shade700
+ : Colors.grey.shade700,
fontColor: Colors.white,
vPadding: 8,
radius: 30,
@@ -237,8 +250,12 @@ class _PatientProfileScreenState extends State
height: 30,
),
onPressed: () {
- if (patient.patientStatusType ==
- 43) {
+ if ((isFromLiveCare &&
+ patient.appointmentNo !=
+ null &&
+ patient.appointmentNo != 0) ||
+ patient.patientStatusType ==
+ 43) {
Navigator.of(context).pushNamed(
UPDATE_EPISODE,
arguments: {
@@ -283,6 +300,11 @@ class _PatientProfileScreenState extends State
TranslationBase.of(context).initiateCall,
disabled: model.state == ViewState.BusyLocal,
onPressed: () async {
+ // Navigator.push(context, MaterialPageRoute(
+ // builder: (BuildContext context) =>
+ // EndCallScreen(patient:patient)));
+
+
if(isCallFinished) {
Navigator.push(context, MaterialPageRoute(
builder: (BuildContext context) =>
@@ -305,6 +327,7 @@ class _PatientProfileScreenState extends State
kSessionId: model.startCallRes.openSessionID,
kApiKey: '46209962',
vcId: patient.vcId,
+ patientName: patient.fullName ?? (patient.firstName != null ? "${patient.firstName} ${patient.lastName}" : "-"),
tokenID: await model.getToken(),
generalId: GENERAL_ID,
doctorId: model.doctorProfile.doctorID,
diff --git a/lib/screens/patients/profile/referral/AddReplayOnReferralPatient.dart b/lib/screens/patients/profile/referral/AddReplayOnReferralPatient.dart
index f54a18ac..c246a3ad 100644
--- a/lib/screens/patients/profile/referral/AddReplayOnReferralPatient.dart
+++ b/lib/screens/patients/profile/referral/AddReplayOnReferralPatient.dart
@@ -14,17 +14,24 @@ import 'package:doctor_app_flutter/widgets/shared/buttons/app_buttons_widget.dar
import 'package:doctor_app_flutter/widgets/shared/loader/gif_loader_dialog_utils.dart';
import 'package:doctor_app_flutter/widgets/shared/speech-text-popup.dart';
import 'package:doctor_app_flutter/widgets/shared/text_fields/app-textfield-custom.dart';
+import 'package:doctor_app_flutter/widgets/transitions/fade_page.dart';
import 'package:flutter/material.dart';
import 'package:permission_handler/permission_handler.dart';
import 'package:speech_to_text/speech_recognition_error.dart';
import 'package:speech_to_text/speech_to_text.dart' as stt;
+import 'ReplySummeryOnReferralPatient.dart';
+
class AddReplayOnReferralPatient extends StatefulWidget {
final PatientReferralViewModel patientReferralViewModel;
final MyReferralPatientModel myReferralInPatientModel;
+ final bool isEdited;
const AddReplayOnReferralPatient(
- {Key key, this.patientReferralViewModel, this.myReferralInPatientModel})
+ {Key key,
+ this.patientReferralViewModel,
+ this.myReferralInPatientModel,
+ this.isEdited})
: super(key: key);
@override
@@ -39,10 +46,13 @@ class _AddReplayOnReferralPatientState
var reconizedWord;
var event = RobotProvider();
TextEditingController replayOnReferralController = TextEditingController();
+
@override
void initState() {
requestPermissions();
super.initState();
+ replayOnReferralController.text =
+ widget.myReferralInPatientModel.referredDoctorRemarks ?? "";
}
@override
@@ -50,116 +60,189 @@ class _AddReplayOnReferralPatientState
return AppScaffold(
isShowAppBar: false,
backgroundColor: Theme.of(context).scaffoldBackgroundColor,
- body: SingleChildScrollView(
- child: Container(
- height: MediaQuery.of(context).size.height * 1.0,
- child: Padding(
- padding: EdgeInsets.all(0.0),
- child: Column(
- crossAxisAlignment: CrossAxisAlignment.start,
- children: [
- BottomSheetTitle(title: 'Replay'),
- SizedBox(
- height: 10.0,
- ),
- Center(
- child: FractionallySizedBox(
- widthFactor: 0.9,
- child: Column(
- children: [
- Stack(
- children: [
- AppTextFieldCustom(
- hintText: 'Replay your responses here',
- controller: replayOnReferralController,
- maxLines: 35,
- minLines: 25,
- hasBorder: true,
- validationError:
- replayOnReferralController.text.isEmpty &&
- isSubmitted
- ? TranslationBase.of(context).emptyMessage
- : null,
- ),
- Positioned(
- top: 0, //MediaQuery.of(context).size.height * 0,
- right: 15,
- child: IconButton(
- icon: Icon(
- DoctorApp.speechtotext,
- color: Colors.black,
- size: 35,
- ),
- onPressed: () {
- onVoiceText();
- },
+ body: Column(
+ children: [
+ Expanded(
+ child: SingleChildScrollView(
+ child: Column(
+ crossAxisAlignment: CrossAxisAlignment.start,
+ children: [
+ BottomSheetTitle(title: 'Reply'),
+ SizedBox(
+ height: 10.0,
+ ),
+ Center(
+ child: FractionallySizedBox(
+ widthFactor: 0.9,
+ child: Column(
+ children: [
+ Stack(
+ children: [
+ AppTextFieldCustom(
+ hintText: 'Reply your responses here',
+ controller: replayOnReferralController,
+ maxLines: 35,
+ minLines: 25,
+ hasBorder: true,
+ validationError: replayOnReferralController
+ .text.isEmpty &&
+ isSubmitted
+ ? TranslationBase.of(context).emptyMessage
+ : null,
),
- )
- ],
- ),
- ],
+ Positioned(
+ top: 0,
+ //MediaQuery.of(context).size.height * 0,
+ right: 15,
+ child: IconButton(
+ icon: Icon(
+ DoctorApp.speechtotext,
+ color: Colors.black,
+ size: 35,
+ ),
+ onPressed: () {
+ onVoiceText();
+ },
+ ),
+ )
+ ],
+ ),
+ ],
+ ),
),
),
- ),
- ],
+ ],
+ ),
),
),
- ),
- ),
- bottomSheet: Container(
- height: replayOnReferralController.text.isNotEmpty ? 130 : 70,
- margin: EdgeInsets.all(SizeConfig.widthMultiplier * 5),
- child: Column(
- children: [
- replayOnReferralController.text.isEmpty
- ? SizedBox()
- : Container(
- margin: EdgeInsets.all(5),
- child: Expanded(
+ Container(
+ // height: replayOnReferralController.text.isNotEmpty ? 130 : 70,
+ // margin: EdgeInsets.all(SizeConfig.widthMultiplier * 5),
+ child: Column(
+ children: [
+ replayOnReferralController.text.isEmpty
+ ? SizedBox()
+ : Container(
+ margin: EdgeInsets.all(16),
+ child: AppButton(
+ title: TranslationBase.of(context).clearText,
+ onPressed: () {
+ setState(() {
+ replayOnReferralController.text = '';
+ });
+ },
+ ),
+ ),
+ Container(
+ margin: EdgeInsets.fromLTRB(16, 0, 16, 16),
+ child: Row(
+ children: [
+ Expanded(
child: AppButton(
- title: TranslationBase.of(context).clearText,
- onPressed: () {
- setState(() {
- replayOnReferralController.text = '';
- });
- },
- )),
+ onPressed: () {
+ Navigator.of(context).pop();
+ },
+ title: TranslationBase.of(context).reject,
+ fontColor: Colors.white,
+ color: Colors.red[600],
+ ),
+ ),
+ SizedBox(
+ width: 4,
+ ),
+ Expanded(
+ child: AppButton(
+ onPressed: () async {
+ setState(() {
+ isSubmitted = true;
+ });
+ if (replayOnReferralController.text.isNotEmpty) {
+ GifLoaderDialogUtils.showMyDialog(context);
+ await widget.patientReferralViewModel.replay(
+ replayOnReferralController.text.trim(),
+ widget.myReferralInPatientModel);
+ if (widget.patientReferralViewModel.state ==
+ ViewState.ErrorLocal) {
+ Helpers.showErrorToast(
+ widget.patientReferralViewModel.error);
+ } else {
+ GifLoaderDialogUtils.hideDialog(context);
+ DrAppToastMsg.showSuccesToast(
+ "Your Reply Added Successfully");
+ Navigator.of(context).pop();
+ Navigator.of(context).pop();
+
+ Navigator.push(
+ context,
+ FadePage(
+ page: ReplySummeryOnReferralPatient(
+ widget.myReferralInPatientModel,
+ replayOnReferralController.text.trim()),
+ ),
+ );
+ }
+ } else {
+ Helpers.showErrorToast(
+ "You can't add empty reply");
+ setState(() {
+ isSubmitted = false;
+ });
+ }
+ },
+ title: TranslationBase.of(context).noteConfirm,
+ fontColor: Colors.white,
+ color: Colors.green[600],
+ ),
+ ),
+ ],
),
- Container(
- margin: EdgeInsets.all(5),
- child: AppButton(
- title: 'Submit Replay',
- color: Color(0xff359846),
- fontWeight: FontWeight.w700,
- onPressed: () async {
- setState(() {
- isSubmitted = true;
- });
- if (replayOnReferralController.text.isNotEmpty) {
- GifLoaderDialogUtils.showMyDialog(context);
- await widget.patientReferralViewModel.replay(
- replayOnReferralController.text.trim(),
- widget.myReferralInPatientModel);
- if (widget.patientReferralViewModel.state ==
- ViewState.ErrorLocal) {
- Helpers.showErrorToast(
- widget.patientReferralViewModel.error);
- } else {
- GifLoaderDialogUtils.hideDialog(context);
- DrAppToastMsg.showSuccesToast(
- "Your Replay Added Successfully");
- Navigator.of(context).pop();
- Navigator.of(context).pop();
- }
- } else {
- Helpers.showErrorToast("You can't add empty replay");
- setState(() {
- isSubmitted = false;
- });
- }
- })),
- ],
- ),
+ ),
+ // Container(
+ // margin: EdgeInsets.all(5),
+ // child: AppButton(
+ // title: 'Submit Reply',
+ // color: Color(0xff359846),
+ // fontWeight: FontWeight.w700,
+ // onPressed: () async {
+ // setState(() {
+ // isSubmitted = true;
+ // });
+ // if (replayOnReferralController.text.isNotEmpty) {
+ // GifLoaderDialogUtils.showMyDialog(context);
+ // await widget.patientReferralViewModel.replay(
+ // replayOnReferralController.text.trim(),
+ // widget.myReferralInPatientModel);
+ // if (widget.patientReferralViewModel.state ==
+ // ViewState.ErrorLocal) {
+ // Helpers.showErrorToast(
+ // widget.patientReferralViewModel.error);
+ // } else {
+ // GifLoaderDialogUtils.hideDialog(context);
+ // DrAppToastMsg.showSuccesToast(
+ // "Your Reply Added Successfully");
+ // Navigator.of(context).pop();
+ // Navigator.of(context).pop();
+ //
+ // Navigator.push(
+ // context,
+ // FadePage(
+ // page: ReplySummeryOnReferralPatient(
+ // widget.myReferralInPatientModel,
+ // replayOnReferralController.text.trim()),
+ // ),
+ // );
+ // }
+ // } else {
+ // Helpers.showErrorToast("You can't add empty reply");
+ // setState(() {
+ // isSubmitted = false;
+ // });
+ // }
+ // })),
+ ],
+ ),
+ ),
+ ],
),
);
}
diff --git a/lib/screens/patients/profile/referral/ReplySummeryOnReferralPatient.dart b/lib/screens/patients/profile/referral/ReplySummeryOnReferralPatient.dart
new file mode 100644
index 00000000..2a48e079
--- /dev/null
+++ b/lib/screens/patients/profile/referral/ReplySummeryOnReferralPatient.dart
@@ -0,0 +1,119 @@
+import 'package:doctor_app_flutter/config/size_config.dart';
+import 'package:doctor_app_flutter/core/model/referral/MyReferralPatientModel.dart';
+import 'package:doctor_app_flutter/core/viewModel/patient-referral-viewmodel.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/screens/base/base_view.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_scaffold_widget.dart';
+import 'package:doctor_app_flutter/widgets/shared/app_texts_widget.dart';
+import 'package:doctor_app_flutter/widgets/shared/buttons/app_buttons_widget.dart';
+import 'package:flutter/material.dart';
+
+import '../../../../routes.dart';
+
+class ReplySummeryOnReferralPatient extends StatefulWidget {
+ final MyReferralPatientModel referredPatient;
+ final String doctorReply;
+
+ ReplySummeryOnReferralPatient(this.referredPatient, this.doctorReply);
+
+ @override
+ _ReplySummeryOnReferralPatientState createState() =>
+ _ReplySummeryOnReferralPatientState(this.referredPatient);
+}
+
+class _ReplySummeryOnReferralPatientState
+ extends State {
+ final MyReferralPatientModel referredPatient;
+
+ _ReplySummeryOnReferralPatientState(this.referredPatient);
+
+ @override
+ Widget build(BuildContext context) {
+ return BaseView(
+ builder: (_, model, w) => AppScaffold(
+ baseViewModel: model,
+ isShowAppBar: true,
+ appBarTitle: TranslationBase.of(context).summeryReply,
+ body: Container(
+ child: Column(
+ children: [
+
+ Expanded(
+ child: SingleChildScrollView(
+ child: Container(
+ width: double.infinity,
+ margin:
+ EdgeInsets.symmetric(horizontal: 16, vertical: 16),
+ padding: EdgeInsets.symmetric(
+ horizontal: 16, vertical: 16),
+ decoration: BoxDecoration(
+ color: Colors.white,
+ shape: BoxShape.rectangle,
+ borderRadius: BorderRadius.all(Radius.circular(8)),
+ border: Border.fromBorderSide(BorderSide(
+ color: Colors.white,
+ width: 1.0,
+ )),
+ ),
+ child: Column(
+ crossAxisAlignment: CrossAxisAlignment.start,
+ children: [
+ AppText(
+ TranslationBase.of(context).reply,
+ fontFamily: 'Poppins',
+ fontWeight: FontWeight.w700,
+ fontSize: 2.4 * SizeConfig.textMultiplier,
+ color: Color(0XFF2E303A),
+ ),
+ AppText(
+ widget.doctorReply ?? '',
+ fontFamily: 'Poppins',
+ fontWeight: FontWeight.w600,
+ fontSize: 1.8 * SizeConfig.textMultiplier,
+ color: Color(0XFF2E303A),
+ ),
+ SizedBox(
+ height: 8,
+ ),
+ ],
+ ),
+ ),
+ ),
+ ),
+ Container(
+ margin:
+ EdgeInsets.symmetric(horizontal: 16, vertical: 16),
+ child: Row(
+ children: [
+ Expanded(
+ child: AppButton(
+ onPressed: () {
+ Navigator.of(context).pop();
+ },
+ title: TranslationBase.of(context).cancel,
+ fontColor: Colors.white,
+ color: Colors.red[600],
+ ),
+ ),
+ SizedBox(width: 4,),
+ Expanded(
+ child: AppButton(
+ onPressed: () {},
+ title: TranslationBase.of(context).noteConfirm,
+ fontColor: Colors.white,
+ color: Colors.green[600],
+ ),
+ ),
+ ],
+ ),
+ ),
+ ],
+ ),
+ ),
+ ));
+ }
+}
diff --git a/lib/screens/patients/profile/referral/my-referral-inpatient-screen.dart b/lib/screens/patients/profile/referral/my-referral-inpatient-screen.dart
index fcbd11b7..f4a002d6 100644
--- a/lib/screens/patients/profile/referral/my-referral-inpatient-screen.dart
+++ b/lib/screens/patients/profile/referral/my-referral-inpatient-screen.dart
@@ -1,16 +1,21 @@
+import 'package:doctor_app_flutter/core/enum/PatientType.dart';
import 'package:doctor_app_flutter/core/viewModel/patient-referral-viewmodel.dart';
import 'package:doctor_app_flutter/screens/base/base_view.dart';
import 'package:doctor_app_flutter/screens/patients/profile/referral/referral_patient_detail_in-paint.dart';
+import 'package:doctor_app_flutter/screens/patients/profile/referral/referred-patient-screen.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/patient-referral-item-widget.dart';
import 'package:doctor_app_flutter/widgets/shared/app_scaffold_widget.dart';
import 'package:doctor_app_flutter/widgets/shared/app_texts_widget.dart';
+import 'package:doctor_app_flutter/widgets/shared/loader/gif_loader_dialog_utils.dart';
import 'package:doctor_app_flutter/widgets/transitions/fade_page.dart';
import 'package:flutter/material.dart';
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
class MyReferralInPatientScreen extends StatelessWidget {
+ PatientType patientType = PatientType.IN_PATIENT;
+
@override
Widget build(BuildContext context) {
@@ -20,72 +25,89 @@ class MyReferralInPatientScreen extends StatelessWidget {
baseViewModel: model,
isShowAppBar: false,
appBarTitle: TranslationBase.of(context).referPatient,
- body: model.myReferralPatients.isEmpty
- ? Center(
- child: Column(
- crossAxisAlignment: CrossAxisAlignment.center,
- children: [
- SizedBox(
- height: 100,
+ body: Column(
+ children: [
+ Container(
+ margin: EdgeInsets.only(top: 70),
+ child: PatientTypeRadioWidget(
+ (patientType) async {
+ this.patientType = patientType;
+ GifLoaderDialogUtils.showMyDialog(context);
+ if (patientType == PatientType.IN_PATIENT) {
+ await model.getMyReferralPatientService(localBusy: true);
+ } else {
+ await model.getMyReferralOutPatientService(localBusy: true);
+ }
+ GifLoaderDialogUtils.hideDialog(context);
+ },
+ ),
+ ),
+ model.myReferralPatients.isEmpty
+ ? Center(
+ child: Column(
+ crossAxisAlignment: CrossAxisAlignment.center,
+ children: [
+ SizedBox(
+ height: 100,
+ ),
+ Image.asset('assets/images/no-data.png'),
+ Padding(
+ padding: const EdgeInsets.all(8.0),
+ child: AppText(
+ TranslationBase.of(context).referralEmptyMsg,
+ color: Theme.of(context).errorColor,
+ ),
+ )
+ ],
),
- Image.asset('assets/images/no-data.png'),
- Padding(
- padding: const EdgeInsets.all(8.0),
- child: AppText(
- TranslationBase.of(context).referralEmptyMsg,
- color: Theme.of(context).errorColor,
- ),
- )
- ],
- ),
- )
- : SingleChildScrollView(
- child: Container(
- margin: EdgeInsets.only(top: 70),
- // color: Colors.white,
- // height: MediaQuery.of(context).size.height,
- child: Column(
- crossAxisAlignment: CrossAxisAlignment.start,
- children: [
- // SizedBox(height: 50),
- ...List.generate(
- model.myReferralPatients.length,
- (index) => InkWell(
- onTap: () {
- Navigator.push(
- context,
- FadePage(
- page: ReferralPatientDetailScreen(model.myReferralPatients[index],model),
+ )
+ : Expanded(
+ child: SingleChildScrollView(
+ child: Container(
+ child: Column(
+ crossAxisAlignment: CrossAxisAlignment.start,
+ children: [
+ ...List.generate(
+ model.myReferralPatients.length,
+ (index) => InkWell(
+ onTap: () {
+ Navigator.push(
+ context,
+ FadePage(
+ page: ReferralPatientDetailScreen(model.myReferralPatients[index],model),
+ ),
+ );
+ },
+ child: PatientReferralItemWidget(
+ referralStatus: model.getReferralStatusNameByCode(model.myReferralPatients[index].referralStatus,context),
+ referralStatusCode: model.myReferralPatients[index].referralStatus,
+ patientName: model.myReferralPatients[index].patientName,
+ patientGender: model.myReferralPatients[index].gender,
+ referredDate: AppDateUtils.getDayMonthYearDateFormatted(model.myReferralPatients[index].referralDate),
+ referredTime: AppDateUtils.getTimeHHMMA(model.myReferralPatients[index].referralDate),
+ patientID: "${model.myReferralPatients[index].patientID}",
+ isSameBranch: false,
+ isReferral: true,
+ isReferralClinic: true,
+ referralClinic:"${model.myReferralPatients[index].referringClinicDescription}",
+ remark: model.myReferralPatients[index].referringDoctorRemarks,
+ nationality: model.myReferralPatients[index].nationalityName,
+ nationalityFlag: model.myReferralPatients[index].nationalityFlagURL,
+ doctorAvatar: model.myReferralPatients[index].doctorImageURL,
+ referralDoctorName: model.myReferralPatients[index].referringDoctorName,
+ clinicDescription: model.myReferralPatients[index].referringClinicDescription,
+ infoIcon: Icon(FontAwesomeIcons.arrowRight,
+ size: 25, color: Colors.black),
+ ),
),
- );
- },
- child: PatientReferralItemWidget(
- referralStatus: model.getReferralStatusNameByCode(model.myReferralPatients[index].referralStatus,context),
- referralStatusCode: model.myReferralPatients[index].referralStatus,
- patientName: model.myReferralPatients[index].patientName,
- patientGender: model.myReferralPatients[index].gender,
- referredDate: AppDateUtils.getDayMonthYearDateFormatted(model.myReferralPatients[index].referralDate),
- referredTime: AppDateUtils.getTimeHHMMA(model.myReferralPatients[index].referralDate),
- patientID: "${model.myReferralPatients[index].patientID}",
- isSameBranch: false,
- isReferral: true,
- isReferralClinic: true,
- referralClinic:"${model.myReferralPatients[index].referringClinicDescription}",
- remark: model.myReferralPatients[index].referringDoctorRemarks,
- nationality: model.myReferralPatients[index].nationalityName,
- nationalityFlag: model.myReferralPatients[index].nationalityFlagURL,
- doctorAvatar: model.myReferralPatients[index].doctorImageURL,
- referralDoctorName: model.myReferralPatients[index].referringDoctorName,
- clinicDescription: model.myReferralPatients[index].referringClinicDescription,
- infoIcon: Icon(FontAwesomeIcons.arrowRight,
- size: 25, color: Colors.black),
- ),
+ ),
+ ],
),
),
- ],
- ),
+ ),
),
- ),
+ ],
+ ),
),
);
}
diff --git a/lib/screens/patients/profile/referral/referral_patient_detail_in-paint.dart b/lib/screens/patients/profile/referral/referral_patient_detail_in-paint.dart
index a949036b..7f0cd146 100644
--- a/lib/screens/patients/profile/referral/referral_patient_detail_in-paint.dart
+++ b/lib/screens/patients/profile/referral/referral_patient_detail_in-paint.dart
@@ -19,6 +19,7 @@ import 'AddReplayOnReferralPatient.dart';
class ReferralPatientDetailScreen extends StatelessWidget {
final MyReferralPatientModel referredPatient;
final PatientReferralViewModel patientReferralViewModel;
+
ReferralPatientDetailScreen(
this.referredPatient, this.patientReferralViewModel);
@@ -153,7 +154,7 @@ class ReferralPatientDetailScreen extends StatelessWidget {
fontWeight: FontWeight.w700,
color: referredPatient.referralStatus == 1
? Color(0xffc4aa54)
- : referredPatient.referralStatus == 46
+ : referredPatient.referralStatus == 46 || referredPatient.referralStatus == 2
? Colors.green[700]
: Colors.red[700],
),
@@ -214,29 +215,6 @@ class ReferralPatientDetailScreen extends StatelessWidget {
Expanded(
child: Column(
children: [
- Row(
- mainAxisAlignment:
- MainAxisAlignment.start,
- children: [
- AppText(
- "${TranslationBase.of(context).refClinic}: ",
- fontFamily: 'Poppins',
- fontWeight: FontWeight.w600,
- fontSize: 1.7 *
- SizeConfig.textMultiplier,
- color: Color(0XFF575757),
- ),
- AppText(
- referredPatient
- .referringClinicDescription,
- fontFamily: 'Poppins',
- fontWeight: FontWeight.w700,
- fontSize: 1.8 *
- SizeConfig.textMultiplier,
- color: Color(0XFF2E303A),
- ),
- ],
- ),
Row(
mainAxisAlignment:
MainAxisAlignment.start,
@@ -244,9 +222,7 @@ class ReferralPatientDetailScreen extends StatelessWidget {
CrossAxisAlignment.start,
children: [
AppText(
- TranslationBase.of(context)
- .frequency +
- ": ",
+ "${TranslationBase.of(context).refClinic}: ",
fontFamily: 'Poppins',
fontWeight: FontWeight.w600,
fontSize: 1.7 *
@@ -256,7 +232,7 @@ class ReferralPatientDetailScreen extends StatelessWidget {
Expanded(
child: AppText(
referredPatient
- .frequencyDescription,
+ .referringClinicDescription,
fontFamily: 'Poppins',
fontWeight: FontWeight.w700,
fontSize: 1.8 *
@@ -266,6 +242,38 @@ class ReferralPatientDetailScreen extends StatelessWidget {
),
],
),
+ if (referredPatient.frequency != null)
+ Row(
+ mainAxisAlignment:
+ MainAxisAlignment.start,
+ crossAxisAlignment:
+ CrossAxisAlignment.start,
+ children: [
+ AppText(
+ TranslationBase.of(context)
+ .frequency +
+ ": ",
+ fontFamily: 'Poppins',
+ fontWeight: FontWeight.w600,
+ fontSize: 1.7 *
+ SizeConfig.textMultiplier,
+ color: Color(0XFF575757),
+ ),
+ Expanded(
+ child: AppText(
+ referredPatient
+ .frequencyDescription ??
+ '',
+ fontFamily: 'Poppins',
+ fontWeight: FontWeight.w700,
+ fontSize: 1.8 *
+ SizeConfig
+ .textMultiplier,
+ color: Color(0XFF2E303A),
+ ),
+ ),
+ ],
+ ),
],
),
),
@@ -303,57 +311,69 @@ class ReferralPatientDetailScreen extends StatelessWidget {
)
],
),
- Row(
- mainAxisAlignment: MainAxisAlignment.start,
- crossAxisAlignment: CrossAxisAlignment.start,
- children: [
- AppText(
- TranslationBase.of(context).priority +
- ": ",
- fontFamily: 'Poppins',
- fontWeight: FontWeight.w600,
- fontSize: 1.7 * SizeConfig.textMultiplier,
- color: Color(0XFF575757),
- ),
- Expanded(
- child: AppText(
- referredPatient.priorityDescription,
+ if (referredPatient.priorityDescription != null)
+ Row(
+ mainAxisAlignment: MainAxisAlignment.start,
+ crossAxisAlignment:
+ CrossAxisAlignment.start,
+ children: [
+ AppText(
+ TranslationBase.of(context).priority +
+ ": ",
fontFamily: 'Poppins',
- fontWeight: FontWeight.w700,
+ fontWeight: FontWeight.w600,
fontSize:
- 1.8 * SizeConfig.textMultiplier,
- color: Color(0XFF2E303A),
+ 1.7 * SizeConfig.textMultiplier,
+ color: Color(0XFF575757),
),
- ),
- ],
- ),
- Row(
- mainAxisAlignment: MainAxisAlignment.start,
- crossAxisAlignment: CrossAxisAlignment.start,
- children: [
- AppText(
- TranslationBase.of(context)
- .maxResponseTime +
- ": ",
- fontFamily: 'Poppins',
- fontWeight: FontWeight.w600,
- fontSize: 1.7 * SizeConfig.textMultiplier,
- color: Color(0XFF575757),
- ),
- Expanded(
- child: AppText(
- AppDateUtils.convertDateFromServerFormat(
- referredPatient.mAXResponseTime,
- "dd MMM,yyyy"),
+ Expanded(
+ child: AppText(
+ referredPatient.priorityDescription ??
+ '',
+ fontFamily: 'Poppins',
+ fontWeight: FontWeight.w700,
+ fontSize:
+ 1.8 * SizeConfig.textMultiplier,
+ color: Color(0XFF2E303A),
+ ),
+ ),
+ ],
+ ),
+ if (referredPatient.mAXResponseTime != null)
+ Row(
+ mainAxisAlignment: MainAxisAlignment.start,
+ crossAxisAlignment:
+ CrossAxisAlignment.start,
+ children: [
+ AppText(
+ TranslationBase.of(context)
+ .maxResponseTime +
+ ": ",
fontFamily: 'Poppins',
- fontWeight: FontWeight.w700,
+ fontWeight: FontWeight.w600,
fontSize:
- 1.8 * SizeConfig.textMultiplier,
- color: Color(0XFF2E303A),
+ 1.7 * SizeConfig.textMultiplier,
+ color: Color(0XFF575757),
),
- ),
- ],
- ),
+ Expanded(
+ child: AppText(
+ referredPatient.mAXResponseTime !=
+ null
+ ? AppDateUtils
+ .convertDateFromServerFormat(
+ referredPatient
+ .mAXResponseTime,
+ "dd MMM,yyyy")
+ : '',
+ fontFamily: 'Poppins',
+ fontWeight: FontWeight.w700,
+ fontSize:
+ 1.8 * SizeConfig.textMultiplier,
+ color: Color(0XFF2E303A),
+ ),
+ ),
+ ],
+ ),
Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
@@ -445,67 +465,115 @@ class ReferralPatientDetailScreen extends StatelessWidget {
),
Expanded(
child: SingleChildScrollView(
- child: Container(
- width: double.infinity,
- margin: EdgeInsets.symmetric(horizontal: 16, vertical: 16),
- padding: EdgeInsets.symmetric(horizontal: 16, vertical: 16),
- decoration: BoxDecoration(
- color: Colors.white,
- shape: BoxShape.rectangle,
- borderRadius: BorderRadius.all(Radius.circular(8)),
- border: Border.fromBorderSide(BorderSide(
- color: Colors.white,
- width: 1.0,
- )),
- ),
- child: Column(
- crossAxisAlignment: CrossAxisAlignment.start,
- children: [
- AppText(
- TranslationBase.of(context).remarks,
- fontFamily: 'Poppins',
- fontWeight: FontWeight.w700,
- fontSize: 2.4 * SizeConfig.textMultiplier,
- color: Color(0XFF2E303A),
+ child: Column(
+ children: [
+ Container(
+ width: double.infinity,
+ margin:
+ EdgeInsets.symmetric(horizontal: 16, vertical: 16),
+ padding:
+ EdgeInsets.symmetric(horizontal: 16, vertical: 16),
+ decoration: BoxDecoration(
+ color: Colors.white,
+ shape: BoxShape.rectangle,
+ borderRadius: BorderRadius.all(Radius.circular(8)),
+ border: Border.fromBorderSide(BorderSide(
+ color: Colors.white,
+ width: 1.0,
+ )),
),
- AppText(
- referredPatient.referringDoctorRemarks,
- fontFamily: 'Poppins',
- fontWeight: FontWeight.w600,
- fontSize: 1.8 * SizeConfig.textMultiplier,
- color: Color(0XFF2E303A),
+ child: Column(
+ crossAxisAlignment: CrossAxisAlignment.start,
+ children: [
+ AppText(
+ TranslationBase.of(context).remarks,
+ fontFamily: 'Poppins',
+ fontWeight: FontWeight.w700,
+ fontSize: 2.4 * SizeConfig.textMultiplier,
+ color: Color(0XFF2E303A),
+ ),
+ AppText(
+ referredPatient.referringDoctorRemarks ?? '',
+ fontFamily: 'Poppins',
+ fontWeight: FontWeight.w600,
+ fontSize: 1.8 * SizeConfig.textMultiplier,
+ color: Color(0XFF2E303A),
+ ),
+ SizedBox(
+ height: 8,
+ ),
+ ],
),
- SizedBox(
- height: 8,
+ ),
+ if (referredPatient.referredDoctorRemarks.isNotEmpty)
+ Container(
+ width: double.infinity,
+ margin:
+ EdgeInsets.symmetric(horizontal: 16, vertical: 0),
+ padding: EdgeInsets.symmetric(
+ horizontal: 16, vertical: 16),
+ decoration: BoxDecoration(
+ color: Colors.white,
+ shape: BoxShape.rectangle,
+ borderRadius: BorderRadius.all(Radius.circular(8)),
+ border: Border.fromBorderSide(BorderSide(
+ color: Colors.white,
+ width: 1.0,
+ )),
+ ),
+ child: Column(
+ crossAxisAlignment: CrossAxisAlignment.start,
+ children: [
+ AppText(
+ TranslationBase.of(context).reply,
+ fontFamily: 'Poppins',
+ fontWeight: FontWeight.w700,
+ fontSize: 2.4 * SizeConfig.textMultiplier,
+ color: Color(0XFF2E303A),
+ ),
+ AppText(
+ referredPatient.referredDoctorRemarks ?? '',
+ fontFamily: 'Poppins',
+ fontWeight: FontWeight.w600,
+ fontSize: 1.8 * SizeConfig.textMultiplier,
+ color: Color(0XFF2E303A),
+ ),
+ SizedBox(
+ height: 8,
+ ),
+ ],
+ ),
),
- ],
- ),
+ ],
),
),
),
- Container(
- margin: EdgeInsets.symmetric(horizontal: 16, vertical: 16),
- child: AppButton(
- title: TranslationBase.of(context).replay,
- color: Colors.red[700],
- fontColor: Colors.white,
- fontWeight: FontWeight.w700,
- fontSize: 1.8,
- hPadding: 8,
- vPadding: 12,
- onPressed: () async {
- Navigator.push(
- context,
- SlideUpPageRoute(
- widget: AddReplayOnReferralPatient(
- patientReferralViewModel: patientReferralViewModel,
- myReferralInPatientModel: referredPatient,
+ if (referredPatient.referralStatus == 1)
+ Container(
+ margin: EdgeInsets.symmetric(horizontal: 16, vertical: 16),
+ child: AppButton(
+ title: TranslationBase.of(context).replay,
+ color: Colors.red[700],
+ fontColor: Colors.white,
+ fontWeight: FontWeight.w700,
+ fontSize: 1.8,
+ hPadding: 8,
+ vPadding: 12,
+ onPressed: () async {
+ Navigator.push(
+ context,
+ SlideUpPageRoute(
+ widget: AddReplayOnReferralPatient(
+ patientReferralViewModel: patientReferralViewModel,
+ myReferralInPatientModel: referredPatient,
+ isEdited: referredPatient
+ .referredDoctorRemarks.isNotEmpty,
+ ),
),
- ),
- );
- },
+ );
+ },
+ ),
),
- ),
],
),
),
diff --git a/lib/screens/patients/profile/referral/referred-patient-screen.dart b/lib/screens/patients/profile/referral/referred-patient-screen.dart
index dc2bf798..c95a28d8 100644
--- a/lib/screens/patients/profile/referral/referred-patient-screen.dart
+++ b/lib/screens/patients/profile/referral/referred-patient-screen.dart
@@ -1,3 +1,4 @@
+import 'package:doctor_app_flutter/core/enum/PatientType.dart';
import 'package:doctor_app_flutter/core/viewModel/patient-referral-viewmodel.dart';
import 'package:doctor_app_flutter/screens/base/base_view.dart';
import 'package:doctor_app_flutter/screens/patients/profile/referral/referred_patient_detail_in-paint.dart';
@@ -6,12 +7,15 @@ import 'package:doctor_app_flutter/util/translations_delegate_base.dart';
import 'package:doctor_app_flutter/widgets/patients/patient-referral-item-widget.dart';
import 'package:doctor_app_flutter/widgets/shared/app_scaffold_widget.dart';
import 'package:doctor_app_flutter/widgets/shared/app_texts_widget.dart';
+import 'package:doctor_app_flutter/widgets/shared/loader/gif_loader_dialog_utils.dart';
import 'package:doctor_app_flutter/widgets/transitions/fade_page.dart';
import 'package:flutter/material.dart';
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
class ReferredPatientScreen extends StatelessWidget {
- // previous design page is: MyReferredPatient
+
+ PatientType patientType = PatientType.IN_PATIENT;
+
@override
Widget build(BuildContext context) {
return BaseView(
@@ -20,103 +24,172 @@ class ReferredPatientScreen extends StatelessWidget {
baseViewModel: model,
isShowAppBar: false,
appBarTitle: TranslationBase.of(context).referredPatient,
- body: model.listMyReferredPatientModel == null ||
- model.listMyReferredPatientModel.length == 0
- ? Center(
- child: Column(
- crossAxisAlignment: CrossAxisAlignment.center,
- children: [
- Container(
- height: 100,
+ body: Column(
+ children: [
+ Container(
+ margin: EdgeInsets.only(top: 70),
+ child: PatientTypeRadioWidget(
+ (patientType) async {
+ this.patientType = patientType;
+ GifLoaderDialogUtils.showMyDialog(context);
+ if (patientType == PatientType.IN_PATIENT) {
+ await model.getMyReferredPatient(isFirstTime: false);
+ } else {
+ await model.getMyReferredOutPatient(isFirstTime: false);
+ }
+ GifLoaderDialogUtils.hideDialog(context);
+ },
+ ),
+ ),
+ model.listMyReferredPatientModel == null ||
+ model.listMyReferredPatientModel.length == 0
+ ? Center(
+ child: Column(
+ crossAxisAlignment: CrossAxisAlignment.center,
+ children: [
+ Container(
+ height: 100,
+ ),
+ Image.asset('assets/images/no-data.png'),
+ Padding(
+ padding: const EdgeInsets.all(8.0),
+ child: AppText(
+ TranslationBase.of(context).referralEmptyMsg,
+ color: Theme.of(context).errorColor,
+ ),
+ )
+ ],
),
- Image.asset('assets/images/no-data.png'),
- Padding(
- padding: const EdgeInsets.all(8.0),
- child: AppText(
- TranslationBase.of(context).referralEmptyMsg,
- color: Theme.of(context).errorColor,
- ),
- )
- ],
- ),
- )
- : SingleChildScrollView(
- // DoctorApplication.svc/REST/GtMyReferredPatient
- child: Container(
- margin: EdgeInsets.only(top: 70),
- child: Column(
- children: [
- // const Divider(
- // color: Color(0xffCCCCCC),
- // height: 1,
- // thickness: 2,
- // indent: 0,
- // endIndent: 0,
- // ),
- ...List.generate(
- model.listMyReferredPatientModel.length,
- (index) => InkWell(
- onTap: () {
- Navigator.push(
- context,
- FadePage(
- page: ReferredPatientDetailScreen(
- model.getReferredPatientItem(index)),
+ )
+ : Expanded(
+ child: SingleChildScrollView(
+ // DoctorApplication.svc/REST/GtMyReferredPatient
+ child: Container(
+ child: Column(
+ children: [
+ ...List.generate(
+ model.listMyReferredPatientModel.length,
+ (index) => InkWell(
+ onTap: () {
+ Navigator.push(
+ context,
+ FadePage(
+ page: ReferredPatientDetailScreen(
+ model.getReferredPatientItem(index)),
+ ),
+ );
+ },
+ child: PatientReferralItemWidget(
+ referralStatus: model
+ .getReferredPatientItem(index)
+ .referralStatusDesc,
+ referralStatusCode: model
+ .getReferredPatientItem(index)
+ .referralStatus,
+ patientName:
+ "${model.getReferredPatientItem(index).firstName} ${model.getReferredPatientItem(index).middleName} ${model.getReferredPatientItem(index).lastName}",
+ patientGender:
+ model.getReferredPatientItem(index).gender,
+ referredDate:
+ AppDateUtils.convertDateFromServerFormat(
+ model
+ .getReferredPatientItem(index)
+ .referralDate,
+ "dd/MM/yyyy"),
+ referredTime:
+ AppDateUtils.convertDateFromServerFormat(
+ model
+ .getReferredPatientItem(index)
+ .referralDate,
+ "hh:mm a"),
+ patientID:
+ "${model.getReferredPatientItem(index).patientID}",
+ isSameBranch: model
+ .getReferredPatientItem(index)
+ .isReferralDoctorSameBranch,
+ isReferral: false,
+ remark: model
+ .getReferredPatientItem(index)
+ .referringDoctorRemarks,
+ nationality: model
+ .getReferredPatientItem(index)
+ .nationalityName,
+ nationalityFlag: model
+ .getReferredPatientItem(index)
+ .nationalityFlagURL,
+ doctorAvatar: model
+ .getReferredPatientItem(index)
+ .doctorImageURL,
+ referralDoctorName:
+ "${TranslationBase.of(context).dr} ${model.getReferredPatientItem(index).referralDoctorName}",
+ clinicDescription: model
+ .getReferredPatientItem(index)
+ .referralClinicDescription,
+ infoIcon: Icon(FontAwesomeIcons.arrowRight,
+ size: 25, color: Colors.black),
+ ),
),
- );
- },
- child: PatientReferralItemWidget(
- referralStatus:model.getReferredPatientItem(index).referralStatusDesc,
- referralStatusCode: model
- .getReferredPatientItem(index)
- .referralStatus,
- patientName:
- "${model.getReferredPatientItem(index).firstName} ${model.getReferredPatientItem(index).middleName} ${model.getReferredPatientItem(index).lastName}",
- patientGender:
- model.getReferredPatientItem(index).gender,
- referredDate: AppDateUtils.convertDateFromServerFormat(
- model
- .getReferredPatientItem(index)
- .referralDate,
- "dd/MM/yyyy"),
- referredTime: AppDateUtils.convertDateFromServerFormat(
- model
- .getReferredPatientItem(index)
- .referralDate,
- "hh:mm a"),
- patientID:
- "${model.getReferredPatientItem(index).patientID}",
- isSameBranch: model
- .getReferredPatientItem(index)
- .isReferralDoctorSameBranch,
- isReferral: false,
- remark: model
- .getReferredPatientItem(index)
- .referringDoctorRemarks,
- nationality: model
- .getReferredPatientItem(index)
- .nationalityName,
- nationalityFlag: model
- .getReferredPatientItem(index)
- .nationalityFlagURL,
- doctorAvatar: model
- .getReferredPatientItem(index)
- .doctorImageURL,
- referralDoctorName:
- "${TranslationBase.of(context).dr} ${model.getReferredPatientItem(index).referralDoctorName}",
- clinicDescription: model
- .getReferredPatientItem(index)
- .referralClinicDescription,
- infoIcon: Icon(FontAwesomeIcons.arrowRight,
- size: 25, color: Colors.black),
- ),
+ ),
+ ],
),
),
- ],
- ),
+ ),
),
- ),
+ ],
+ ),
),
);
}
}
+
+class PatientTypeRadioWidget extends StatefulWidget {
+ final Function(PatientType) radioOnChange;
+
+ PatientTypeRadioWidget(this.radioOnChange);
+
+ @override
+ _PatientTypeRadioWidgetState createState() =>
+ _PatientTypeRadioWidgetState(this.radioOnChange);
+}
+
+class _PatientTypeRadioWidgetState extends State {
+ final Function(PatientType) radioOnChange;
+
+ _PatientTypeRadioWidgetState(this.radioOnChange);
+
+ PatientType patientType = PatientType.IN_PATIENT;
+
+ @override
+ Widget build(BuildContext context) {
+ return Row(
+ children: [
+ Expanded(
+ child: RadioListTile(
+ title: AppText(TranslationBase.of(context).inPatient),
+ value: PatientType.IN_PATIENT,
+ groupValue: patientType,
+ onChanged: (PatientType value) {
+ setState(() {
+ patientType = value;
+ radioOnChange(value);
+ });
+ },
+ ),
+ ),
+ Expanded(
+ child: RadioListTile(
+ title: AppText(TranslationBase.of(context).outpatient),
+ value: PatientType.OUT_PATIENT,
+ groupValue: patientType,
+ onChanged: (PatientType value) {
+ setState(() {
+ patientType = value;
+ radioOnChange(value);
+ });
+ },
+ ),
+ ),
+ ],
+ );
+ }
+}
diff --git a/lib/screens/patients/profile/referral/referred_patient_detail_in-paint.dart b/lib/screens/patients/profile/referral/referred_patient_detail_in-paint.dart
index b4e1ddc5..b3f11c51 100644
--- a/lib/screens/patients/profile/referral/referred_patient_detail_in-paint.dart
+++ b/lib/screens/patients/profile/referral/referred_patient_detail_in-paint.dart
@@ -236,6 +236,8 @@ class ReferredPatientDetailScreen extends StatelessWidget {
),
],
),
+ if(referredPatient
+ .frequencyDescription != null)
Row(
mainAxisAlignment:
MainAxisAlignment.start,
@@ -301,6 +303,7 @@ class ReferredPatientDetailScreen extends StatelessWidget {
)
],
),
+ if(referredPatient.priorityDescription != null)
Row(
mainAxisAlignment: MainAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.start,
@@ -322,6 +325,7 @@ class ReferredPatientDetailScreen extends StatelessWidget {
),
],
),
+ if(referredPatient.mAXResponseTime != null)
Row(
mainAxisAlignment: MainAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.start,
@@ -337,9 +341,9 @@ class ReferredPatientDetailScreen extends StatelessWidget {
),
Expanded(
child: AppText(
- AppDateUtils.convertDateFromServerFormat(
+ referredPatient.mAXResponseTime != null?AppDateUtils.convertDateFromServerFormat(
referredPatient.mAXResponseTime,
- "dd MMM,yyyy"),
+ "dd MMM,yyyy"):'',
fontFamily: 'Poppins',
fontWeight: FontWeight.w700,
fontSize:
@@ -515,6 +519,7 @@ class ReferredPatientDetailScreen extends StatelessWidget {
),
AppText(
referredPatient
+ .referredDoctorRemarks == null ?'':referredPatient
.referredDoctorRemarks.isNotEmpty
? referredPatient.referredDoctorRemarks
: TranslationBase.of(context).notRepliedYet,
@@ -543,7 +548,7 @@ class ReferredPatientDetailScreen extends StatelessWidget {
fontSize: 1.8,
hPadding: 8,
vPadding: 12,
- disabled: referredPatient.referredDoctorRemarks.isNotEmpty
+ disabled: referredPatient.referredDoctorRemarks == null? true: referredPatient.referredDoctorRemarks.isNotEmpty
? false
: true,
onPressed: () async {
diff --git a/lib/util/VideoChannel.dart b/lib/util/VideoChannel.dart
index a0962010..0104f55b 100644
--- a/lib/util/VideoChannel.dart
+++ b/lib/util/VideoChannel.dart
@@ -10,7 +10,7 @@ class VideoChannel{
/// channel name
static const _channel = const MethodChannel("Dr.cloudSolution/videoCall");
static openVideoCallScreen(
- {kApiKey, kSessionId, kToken, callDuration, warningDuration,int vcId,String tokenID,String generalId,int doctorId, Function() onCallEnd , Function(SessionStatusModel sessionStatusModel) onCallNotRespond ,Function(String error) onFailure}) async {
+ {kApiKey, kSessionId, kToken, callDuration, warningDuration,int vcId,String tokenID,String generalId,int doctorId, String patientName, Function() onCallEnd , Function(SessionStatusModel sessionStatusModel) onCallNotRespond ,Function(String error) onFailure}) async {
var result;
try {
result = await _channel.invokeMethod(
@@ -25,6 +25,7 @@ class VideoChannel{
"TokenID": tokenID,
"generalId": generalId,
"DoctorId": doctorId ,
+ "patientName": patientName,
},
);
if(result['callResponse'] == 'CallEnd') {
diff --git a/lib/util/date-utils.dart b/lib/util/date-utils.dart
index a7d03076..2839c86f 100644
--- a/lib/util/date-utils.dart
+++ b/lib/util/date-utils.dart
@@ -371,4 +371,22 @@ class AppDateUtils {
else
return "";
}
+
+
+ // handel date like "09/05/2021 17:00"
+ static DateTime getDateTimeFromString(String str) {
+ List array = str.split('/');
+ int day = int.parse(array[0]);
+ int month = int.parse(array[1]);
+
+ List array2 = array[2].split(' ');
+ int year = int.parse(array2[0]);
+ String hour = array2[1];
+ List hourList = hour.split(":");
+
+ DateTime date = DateTime(year, month, day, int.parse(hourList[0]), int.parse(hourList[1]));
+
+
+ return date;
+ }
}
diff --git a/lib/util/translations_delegate_base.dart b/lib/util/translations_delegate_base.dart
index 16ae07bd..165a9bb5 100644
--- a/lib/util/translations_delegate_base.dart
+++ b/lib/util/translations_delegate_base.dart
@@ -1363,6 +1363,8 @@ class TranslationBase {
String get allLab => localizedValues['allLab'][locale.languageCode];
String get allPrescription => localizedValues['allPrescription'][locale.languageCode];
String get addPrescription => localizedValues['addPrescription'][locale.languageCode];
+ String get edit => localizedValues['edit'][locale.languageCode];
+ String get summeryReply => localizedValues['summeryReply'][locale.languageCode];
}
class TranslationBaseDelegate extends LocalizationsDelegate {
diff --git a/lib/widgets/patients/patient-referral-item-widget.dart b/lib/widgets/patients/patient-referral-item-widget.dart
index a08282c0..a898e39c 100644
--- a/lib/widgets/patients/patient-referral-item-widget.dart
+++ b/lib/widgets/patients/patient-referral-item-widget.dart
@@ -58,7 +58,7 @@ class PatientReferralItemWidget extends StatelessWidget {
child: CardWithBgWidget(
bgColor: referralStatusCode == 1
? Color(0xffc4aa54)
- : referralStatusCode == 46
+ : referralStatusCode == 46 || referralStatusCode == 2
? Colors.green[700]
: Colors.red[700],
hasBorder: false,
@@ -78,7 +78,7 @@ class PatientReferralItemWidget extends StatelessWidget {
fontWeight: FontWeight.w700,
color: referralStatusCode == 1
? Color(0xffc4aa54)
- : referralStatusCode == 46
+ : referralStatusCode == 46 || referralStatusCode == 2
? Colors.green[700]
: Colors.red[700],
),
@@ -155,6 +155,7 @@ class PatientReferralItemWidget extends StatelessWidget {
),
Row(
mainAxisAlignment: MainAxisAlignment.start,
+ crossAxisAlignment: CrossAxisAlignment.start,
children: [
AppText(
isSameBranch ? TranslationBase.of(context).referredFrom :TranslationBase.of(context).refClinic,
@@ -163,13 +164,14 @@ class PatientReferralItemWidget extends StatelessWidget {
fontSize: 1.7 * SizeConfig.textMultiplier,
color: Color(0XFF575757),
),
-
- AppText(
- !isReferralClinic? isSameBranch ? TranslationBase.of(context).sameBranch : TranslationBase.of(context).otherBranch: " "+referralClinic,
- fontFamily: 'Poppins',
- fontWeight: FontWeight.w700,
- fontSize: 1.8 * SizeConfig.textMultiplier,
- color: Color(0XFF2E303A),
+ Expanded(
+ child: AppText(
+ !isReferralClinic? isSameBranch ? TranslationBase.of(context).sameBranch : TranslationBase.of(context).otherBranch: " "+referralClinic,
+ fontFamily: 'Poppins',
+ fontWeight: FontWeight.w700,
+ fontSize: 1.8 * SizeConfig.textMultiplier,
+ color: Color(0XFF2E303A),
+ ),
),
],
),
@@ -215,7 +217,7 @@ class PatientReferralItemWidget extends StatelessWidget {
),
Expanded(
child: AppText(
- remark,
+ remark??"",
fontFamily: 'Poppins',
fontWeight: FontWeight.w700,
fontSize: 1.8 * SizeConfig.textMultiplier,
diff --git a/lib/widgets/patients/profile/GeneralLabResultHeader.dart b/lib/widgets/patients/profile/GeneralLabResultHeader.dart
new file mode 100644
index 00000000..153a4ccf
--- /dev/null
+++ b/lib/widgets/patients/profile/GeneralLabResultHeader.dart
@@ -0,0 +1,349 @@
+import 'package:doctor_app_flutter/config/config.dart';
+import 'package:doctor_app_flutter/config/size_config.dart';
+import 'package:doctor_app_flutter/core/viewModel/project_view_model.dart';
+import 'package:doctor_app_flutter/icons_app/doctor_app_icons.dart';
+import 'package:doctor_app_flutter/models/patient/patiant_info_model.dart';
+import 'package:doctor_app_flutter/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:provider/provider.dart';
+import 'package:url_launcher/url_launcher.dart';
+
+class GeneralLabResultHeader extends StatelessWidget
+ with PreferredSizeWidget {
+ final PatiantInformtion patient;
+ final String patientType;
+ final String arrivalType;
+ final String doctorName;
+ final String branch;
+ final DateTime appointmentDate;
+ final String profileUrl;
+ final String invoiceNO;
+ final String orderNo;
+ final bool isPrescriptions;
+ final bool isMedicalFile;
+ final String episode;
+ final String vistDate;
+
+ final String clinic;
+ GeneralLabResultHeader(
+ {this.patient,
+ this.patientType,
+ this.arrivalType,
+ this.doctorName,
+ this.branch,
+ this.appointmentDate,
+ this.profileUrl,
+ this.invoiceNO,
+ this.orderNo,
+ this.isPrescriptions = false,
+ this.clinic,
+ this.isMedicalFile = false,
+ this.episode,
+ this.vistDate});
+
+ @override
+ Widget build(BuildContext context) {
+ ProjectViewModel projectViewModel = Provider.of(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, top: 5),
+ decoration: BoxDecoration(
+ color: Colors.white,
+ ),
+ height: MediaQuery.of(context).size.height * 0.23,
+ child: Container(
+ padding: EdgeInsets.only(left: 10, right: 10, bottom: 10),
+ margin: EdgeInsets.only(top: 50),
+ child: Column(
+ crossAxisAlignment: CrossAxisAlignment.start,
+ 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.fullName??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: () {
+ launch("tel://" + 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: [
+ SERVICES_PATIANT2[int.parse(patientType)] ==
+ "patientArrivalList"
+ ? Container(
+ child: Row(
+ mainAxisAlignment: MainAxisAlignment.spaceBetween,
+ children: [
+ patient.patientStatusType == 43
+ ? AppText(
+ TranslationBase.of(context).arrivedP,
+ color: Colors.green,
+ fontWeight: FontWeight.bold,
+ fontFamily: 'Poppins',
+ fontSize: 12,
+ )
+ : AppText(
+ TranslationBase.of(context).notArrived,
+ color: Colors.red[800],
+ fontWeight: FontWeight.bold,
+ fontFamily: 'Poppins',
+ fontSize: 12,
+ ),
+ arrivalType == '1' || patient.arrivedOn == null
+ ? AppText(
+ patient.startTime != null
+ ? patient.startTime
+ : '',
+ fontFamily: 'Poppins',
+ fontWeight: FontWeight.w600,
+ )
+ : AppText(
+ AppDateUtils.convertStringToDateFormat(
+ patient.arrivedOn,
+ 'MM-dd-yyyy HH:mm'),
+ fontFamily: 'Poppins',
+ fontWeight: FontWeight.w600,
+ )
+ ],
+ ))
+ : SizedBox(),
+ if (SERVICES_PATIANT2[int.parse(patientType)] ==
+ "List_MyOutPatient")
+ Container(
+ child: Row(
+ mainAxisAlignment: MainAxisAlignment.start,
+ children: [
+ AppText(
+ TranslationBase.of(context).appointmentDate +
+ " : ",
+ fontSize: 14,
+ ),
+ patient.startTime != null
+ ? Container(
+ height: 15,
+ width: 60,
+ decoration: BoxDecoration(
+ borderRadius: BorderRadius.circular(25),
+ color: HexColor("#20A169"),
+ ),
+ child: AppText(
+ patient.startTime ?? "",
+ color: Colors.white,
+ fontSize: 1.5 * SizeConfig.textMultiplier,
+ textAlign: TextAlign.center,
+ fontWeight: FontWeight.bold,
+ ),
+ )
+ : SizedBox(),
+ SizedBox(
+ width: 3.5,
+ ),
+ Container(
+ child: AppText(
+ convertDateFormat2(
+ patient.appointmentDate.toString() ?? ''),
+ fontSize: 1.5 * SizeConfig.textMultiplier,
+ fontWeight: FontWeight.bold,
+ ),
+ ),
+ SizedBox(
+ height: 0.5,
+ )
+ ],
+ ),
+ margin: EdgeInsets.only(
+ top: 8,
+ ),
+ ),
+ Row(
+ mainAxisAlignment: MainAxisAlignment.spaceBetween,
+ children: [
+ RichText(
+ text: TextSpan(
+ style: TextStyle(
+ fontSize: 1.6 * SizeConfig.textMultiplier,
+ color: Colors.black,
+ fontFamily: 'Poppins',
+ ),
+ children: [
+ new TextSpan(
+ text: TranslationBase.of(context).fileNumber,
+ style: TextStyle(
+ fontSize: 14, fontFamily: 'Poppins')),
+ new TextSpan(
+ text: patient?.patientId?.toString() ?? "",
+ style: TextStyle(
+ fontWeight: FontWeight.w700,
+ fontFamily: 'Poppins',
+ fontSize: 14)),
+ ],
+ ),
+ ),
+ Row(
+ children: [
+ AppText(
+ patient.nationalityName ??
+ patient.nationality ??
+ "",
+ fontWeight: FontWeight.bold,
+ fontSize: 12,
+ ),
+ patient.nationality != 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()
+ ],
+ )
+ ],
+ ),
+ Container(
+ child: RichText(
+ text: new TextSpan(
+ style: new TextStyle(
+ fontSize: 1.6 * SizeConfig.textMultiplier,
+ color: Colors.black,
+ fontFamily: 'Poppins',
+ ),
+ children: [
+ new TextSpan(
+ text: TranslationBase.of(context).age + " : ",
+ style: TextStyle(fontSize: 14)),
+ new TextSpan(
+ text:
+ "${AppDateUtils.getAgeByBirthday(patient.patientDetails != null ? patient.patientDetails.dateofBirth : patient.dateofBirth, context)}",
+ style: TextStyle(
+ fontWeight: FontWeight.w700, fontSize: 14)),
+ ],
+ ),
+ ),
+ ),
+ Container(
+ child: RichText(
+ text: new TextSpan(
+ style: new TextStyle(
+ fontSize: 1.6 * SizeConfig.textMultiplier,
+ color: Colors.black,
+ fontFamily: 'Poppins',
+ ),
+ children: [
+ new TextSpan(
+ text: "Result Date: ",
+ style: TextStyle(fontSize: 14)),
+ new TextSpan(
+ text:
+ '${AppDateUtils.getDayMonthYearDateFormatted(appointmentDate, isArabic: projectViewModel.isArabic)}',
+ style: TextStyle(
+ fontWeight: FontWeight.w700, fontSize: 14)),
+ ],
+ ),
+ ),
+ ),
+ ],
+ ),
+ ),
+ ]),
+ ],
+ ),
+ ),
+ );
+ }
+
+ convertDateFormat2(String str) {
+ String newDate = "";
+ const start = "/Date(";
+ const end = "+0300)";
+
+ if (str.isNotEmpty) {
+ 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();
+ }
+
+
+
+ @override
+ Size get preferredSize => Size(double.maxFinite, 310);
+}