diff --git a/android/app/build.gradle b/android/app/build.gradle
index da345fc2..af0821ee 100644
--- a/android/app/build.gradle
+++ b/android/app/build.gradle
@@ -26,7 +26,7 @@ apply plugin: 'kotlin-android'
apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
android {
- compileSdkVersion 29
+ compileSdkVersion 30
sourceSets {
main.java.srcDirs += 'src/main/kotlin'
@@ -40,7 +40,7 @@ android {
// TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
applicationId "com.example.doctor_app_flutter"
minSdkVersion 18
- targetSdkVersion 29
+ targetSdkVersion 30
versionCode flutterVersionCode.toInteger()
versionName flutterVersionName
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
@@ -73,10 +73,10 @@ dependencies {
implementation 'com.opentok.android:opentok-android-sdk:2.16.5'
//permissions
implementation 'pub.devrel:easypermissions:0.4.0'
-implementation 'com.google.firebase:firebase-core:9.6.1'
//retrofit
implementation 'com.squareup.retrofit2:retrofit:2.6.2'
implementation 'com.squareup.retrofit2:converter-gson:2.6.2'
implementation 'com.squareup.okhttp3:logging-interceptor:3.14.1'
- apply plugin: 'com.google.gms.google-services'
+
}
+apply plugin: 'com.google.gms.google-services'
\ No newline at end of file
diff --git a/android/app/google-services.json b/android/app/google-services.json
index 3c00f05c..27e5dfb1 100644
--- a/android/app/google-services.json
+++ b/android/app/google-services.json
@@ -1,34 +1,41 @@
{
"project_info": {
- "project_number": "1008895414777",
- "project_id": "doctorapp-9f172",
- "storage_bucket": "doctorapp-9f172.appspot.com"
+ "project_number": "1097451043303",
+ "project_id": "doctor-app-35ddc",
+ "storage_bucket": "doctor-app-35ddc.appspot.com"
},
"client": [
{
"client_info": {
- "mobilesdk_app_id": "1:1008895414777:android:d00fe21d6955c21b1f6d28",
+ "mobilesdk_app_id": "1:1097451043303:android:f82ecce9562ecaad866542",
"android_client_info": {
"package_name": "com.example.doctor_app_flutter"
}
},
"oauth_client": [
{
- "client_id": "1008895414777-3mg88j5ocs5r1au7rf4sh3f4pgsri2f2.apps.googleusercontent.com",
+ "client_id": "1097451043303-u7bl21167fq5b7u06cqpq621psv9s3qh.apps.googleusercontent.com",
"client_type": 3
}
],
"api_key": [
{
- "current_key": "AIzaSyCNncEIj8ehVUSxV89rx0x1NaWp8t1YVkw"
+ "current_key": "AIzaSyChu44P8Dp8jtRqnoDR2mdjqKgSKQq-FPY"
}
],
"services": {
"appinvite_service": {
"other_platform_oauth_client": [
{
- "client_id": "1008895414777-3mg88j5ocs5r1au7rf4sh3f4pgsri2f2.apps.googleusercontent.com",
+ "client_id": "1097451043303-u7bl21167fq5b7u06cqpq621psv9s3qh.apps.googleusercontent.com",
"client_type": 3
+ },
+ {
+ "client_id": "1097451043303-ifgtu6ub88dlk5dmv5tm531a5s47gbre.apps.googleusercontent.com",
+ "client_type": 2,
+ "ios_info": {
+ "bundle_id": "com.hmg.doctorApp"
+ }
}
]
}
diff --git a/ios/GoogleService-Info .plist b/ios/GoogleService-Info .plist
new file mode 100644
index 00000000..81c3af44
--- /dev/null
+++ b/ios/GoogleService-Info .plist
@@ -0,0 +1,34 @@
+
+
+
+
+ CLIENT_ID
+ 1097451043303-ifgtu6ub88dlk5dmv5tm531a5s47gbre.apps.googleusercontent.com
+ REVERSED_CLIENT_ID
+ com.googleusercontent.apps.1097451043303-ifgtu6ub88dlk5dmv5tm531a5s47gbre
+ API_KEY
+ AIzaSyAKPayaNaI-2RN6S4PH5W9wYExmEgoBUvo
+ GCM_SENDER_ID
+ 1097451043303
+ PLIST_VERSION
+ 1
+ BUNDLE_ID
+ com.hmg.doctorApp
+ PROJECT_ID
+ doctor-app-35ddc
+ STORAGE_BUCKET
+ doctor-app-35ddc.appspot.com
+ IS_ADS_ENABLED
+
+ IS_ANALYTICS_ENABLED
+
+ IS_APPINVITE_ENABLED
+
+ IS_GCM_ENABLED
+
+ IS_SIGNIN_ENABLED
+
+ GOOGLE_APP_ID
+ 1:1097451043303:ios:0e9b87e77dcf397d866542
+
+
\ No newline at end of file
diff --git a/ios/Podfile.lock b/ios/Podfile.lock
index 40d9a06a..fb65ae25 100644
--- a/ios/Podfile.lock
+++ b/ios/Podfile.lock
@@ -18,7 +18,7 @@ PODS:
- Firebase/Messaging (6.33.0):
- Firebase/CoreOnly
- FirebaseMessaging (~> 4.7.0)
- - firebase_core (0.5.3):
+ - firebase_core (0.5.2):
- Firebase/CoreOnly (~> 6.33.0)
- Flutter
- firebase_core_web (0.1.0):
@@ -100,7 +100,7 @@ PODS:
- Flutter
- "permission_handler (5.0.1+1)":
- Flutter
- - PromisesObjC (1.2.10)
+ - PromisesObjC (1.2.11)
- Protobuf (3.13.0)
- Reachability (3.2)
- shared_preferences (0.0.1):
@@ -250,7 +250,7 @@ SPEC CHECKSUMS:
connectivity_macos: e2e9731b6b22dda39eb1b128f6969d574460e191
device_info: d7d233b645a32c40dfdc212de5cf646ca482f175
Firebase: 8db6f2d1b2c5e2984efba4949a145875a8f65fe5
- firebase_core: 5d6a02f3d85acd5f8321c2d6d62877626a670659
+ firebase_core: 350ba329d1641211bc6183a3236893cafdacfea7
firebase_core_web: d501d8b946b60c8af265428ce483b0fff5ad52d1
firebase_messaging: 0aea2cd5885b65e19ede58ee3507f485c992cc75
FirebaseCore: d889d9e12535b7f36ac8bfbf1713a0836a3012cd
@@ -273,7 +273,7 @@ SPEC CHECKSUMS:
path_provider_linux: 4d630dc393e1f20364f3e3b4a2ff41d9674a84e4
path_provider_windows: a2b81600c677ac1959367280991971cb9a1edb3b
permission_handler: eac8e15b4a1a3fba55b761d19f3f4e6b005d15b6
- PromisesObjC: b14b1c6b68e306650688599de8a45e49fae81151
+ PromisesObjC: 8c196f5a328c2cba3e74624585467a557dcb482f
Protobuf: 3dac39b34a08151c6d949560efe3f86134a3f748
Reachability: 33e18b67625424e47b6cde6d202dce689ad7af96
shared_preferences: af6bfa751691cdc24be3045c43ec037377ada40d
diff --git a/ios/Runner.xcodeproj/project.pbxproj b/ios/Runner.xcodeproj/project.pbxproj
index dcd750d8..f35ae084 100644
--- a/ios/Runner.xcodeproj/project.pbxproj
+++ b/ios/Runner.xcodeproj/project.pbxproj
@@ -8,6 +8,7 @@
/* Begin PBXBuildFile section */
1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; };
+ 29211E4225C172B700DD740D /* GoogleService-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 29211E4125C172B700DD740D /* GoogleService-Info.plist */; };
3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; };
74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; };
97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; };
@@ -34,6 +35,8 @@
/* Begin PBXFileReference section */
1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = ""; };
1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = ""; };
+ 29211CD725C165D600DD740D /* RunnerRelease.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = RunnerRelease.entitlements; sourceTree = ""; };
+ 29211E4125C172B700DD740D /* GoogleService-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "GoogleService-Info.plist"; sourceTree = ""; };
3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; };
74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = ""; };
74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; };
@@ -108,6 +111,8 @@
97C146F01CF9000F007C117D /* Runner */ = {
isa = PBXGroup;
children = (
+ 29211E4125C172B700DD740D /* GoogleService-Info.plist */,
+ 29211CD725C165D600DD740D /* RunnerRelease.entitlements */,
97C146FA1CF9000F007C117D /* Main.storyboard */,
97C146FD1CF9000F007C117D /* Assets.xcassets */,
97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */,
@@ -204,6 +209,7 @@
files = (
97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */,
3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */,
+ 29211E4225C172B700DD740D /* GoogleService-Info.plist in Resources */,
97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */,
97C146FC1CF9000F007C117D /* Main.storyboard in Resources */,
);
@@ -354,7 +360,7 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
- IPHONEOS_DEPLOYMENT_TARGET = 8.0;
+ IPHONEOS_DEPLOYMENT_TARGET = 9.0;
MTL_ENABLE_DEBUG_INFO = NO;
SDKROOT = iphoneos;
SUPPORTED_PLATFORMS = iphoneos;
@@ -437,7 +443,7 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
- IPHONEOS_DEPLOYMENT_TARGET = 8.0;
+ IPHONEOS_DEPLOYMENT_TARGET = 9.0;
MTL_ENABLE_DEBUG_INFO = YES;
ONLY_ACTIVE_ARCH = YES;
SDKROOT = iphoneos;
@@ -486,7 +492,7 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
- IPHONEOS_DEPLOYMENT_TARGET = 8.0;
+ IPHONEOS_DEPLOYMENT_TARGET = 9.0;
MTL_ENABLE_DEBUG_INFO = NO;
SDKROOT = iphoneos;
SUPPORTED_PLATFORMS = iphoneos;
@@ -530,6 +536,7 @@
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_ENABLE_MODULES = YES;
+ CODE_SIGN_ENTITLEMENTS = Runner/RunnerRelease.entitlements;
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
DEVELOPMENT_TEAM = 3A359E86ZF;
ENABLE_BITCODE = NO;
diff --git a/ios/Runner/AppDelegate.swift b/ios/Runner/AppDelegate.swift
index 4512a3b1..b97c7000 100644
--- a/ios/Runner/AppDelegate.swift
+++ b/ios/Runner/AppDelegate.swift
@@ -1,7 +1,6 @@
import UIKit
import Flutter
import OpenTok
-
// Created by Mohammad Aljammal & Elham Rababah on 24/06/20.
// Copyright © 2020 Cloud. All rights reserved.
@@ -23,7 +22,6 @@ import OpenTok
_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
) -> Bool {
-
let controller : FlutterViewController = window?.rootViewController as! FlutterViewController
let videoCallChannel = FlutterMethodChannel(name: "Dr.cloudSolution/videoCall",
binaryMessenger: controller.binaryMessenger)
diff --git a/ios/Runner/GoogleService-Info.plist b/ios/Runner/GoogleService-Info.plist
new file mode 100644
index 00000000..81c3af44
--- /dev/null
+++ b/ios/Runner/GoogleService-Info.plist
@@ -0,0 +1,34 @@
+
+
+
+
+ CLIENT_ID
+ 1097451043303-ifgtu6ub88dlk5dmv5tm531a5s47gbre.apps.googleusercontent.com
+ REVERSED_CLIENT_ID
+ com.googleusercontent.apps.1097451043303-ifgtu6ub88dlk5dmv5tm531a5s47gbre
+ API_KEY
+ AIzaSyAKPayaNaI-2RN6S4PH5W9wYExmEgoBUvo
+ GCM_SENDER_ID
+ 1097451043303
+ PLIST_VERSION
+ 1
+ BUNDLE_ID
+ com.hmg.doctorApp
+ PROJECT_ID
+ doctor-app-35ddc
+ STORAGE_BUCKET
+ doctor-app-35ddc.appspot.com
+ IS_ADS_ENABLED
+
+ IS_ANALYTICS_ENABLED
+
+ IS_APPINVITE_ENABLED
+
+ IS_GCM_ENABLED
+
+ IS_SIGNIN_ENABLED
+
+ GOOGLE_APP_ID
+ 1:1097451043303:ios:0e9b87e77dcf397d866542
+
+
\ No newline at end of file
diff --git a/ios/Runner/Info.plist b/ios/Runner/Info.plist
index d0d77b5e..01dc72ef 100644
--- a/ios/Runner/Info.plist
+++ b/ios/Runner/Info.plist
@@ -47,10 +47,13 @@
NSCameraUsageDescription
- ${PRODUCT_NAME} always camera use
-
+ App requires access to camera incase you are interested to attach images to your Qr Code.
+ NSPhotoLibraryUsageDescription
+ Need to upload image
+
NSMicrophoneUsageDescription
${PRODUCT_NAME} always Microphone use
-
+ FirebaseAppDelegateProxyEnabled
+
diff --git a/ios/Runner/RunnerRelease.entitlements b/ios/Runner/RunnerRelease.entitlements
new file mode 100644
index 00000000..903def2a
--- /dev/null
+++ b/ios/Runner/RunnerRelease.entitlements
@@ -0,0 +1,8 @@
+
+
+
+
+ aps-environment
+ development
+
+
diff --git a/lib/client/base_app_client.dart b/lib/client/base_app_client.dart
index e38db07c..604e6f30 100644
--- a/lib/client/base_app_client.dart
+++ b/lib/client/base_app_client.dart
@@ -70,7 +70,7 @@ class BaseAppClient {
body['Channel'] = CHANNEL;
body['SessionID'] = SESSION_ID;
body['IsLoginForDoctorApp'] = IS_LOGIN_FOR_DOCTOR_APP;
- body['PatientOutSA'] = 0; // PATIENT_OUT_SA;
+ body['PatientOutSA'] = body['PatientOutSA']??0; // PATIENT_OUT_SA;
if (body['VidaAuthTokenID'] == null) {
body['VidaAuthTokenID'] =
await sharedPref.getString(VIDA_AUTH_TOKEN_ID);
@@ -96,9 +96,9 @@ class BaseAppClient {
} else {
var parsed = json.decode(response.body.toString());
if (!parsed['IsAuthenticated']) {
- onFailure(getError(parsed), statusCode);
- //await helpers.logout();
- //helpers.showErrorToast('Your session expired Please login agian');
+ // onFailure(getError(parsed), statusCode);
+ await helpers.logout();
+ helpers.showErrorToast('Your session expired Please login agian');
} else if (parsed['MessageStatus'] == 1) {
if (!parsed['IsAuthenticated'])
onFailure(getError(parsed), statusCode);
diff --git a/lib/config/config.dart b/lib/config/config.dart
index 1205d14c..abd07c03 100644
--- a/lib/config/config.dart
+++ b/lib/config/config.dart
@@ -191,6 +191,8 @@ const SEARCH_DRUG = 'Services/DoctorApplication.svc/REST/GetMedicationList';
const DRUG_TO_DRUG =
'Services/DoctorApplication.svc/REST/DrugToDrugInteraction';
const GET_MEDICAL_FILE = 'Services/DoctorApplication.svc/REST/GetMedicalFile';
+const GET_WARDS = 'Services/DoctorApplication.svc/REST/GetWards';
+const GET_DIAGNOSIS_TYPES = 'Services/DoctorApplication.svc/REST/DiagnosisTypes';
var selectedPatientType = 1;
diff --git a/lib/config/localized_values.dart b/lib/config/localized_values.dart
index 7e425874..2ded6152 100644
--- a/lib/config/localized_values.dart
+++ b/lib/config/localized_values.dart
@@ -52,6 +52,8 @@ const Map> localizedValues = {
'referPatient': {'en': 'Referral Patient', 'ar': 'إحالة مريض'},
'myReferral': {'en': 'My Referral', 'ar': 'إحالة'},
'myReferredPatient': {'en': 'My Referred Patient', 'ar': 'مرضاي المحالين'},
+ 'referredPatient': {'en': 'Referred Patient', 'ar': 'المرضى المحالين'},
+ 'referredOn': {'en': 'referred On : ', 'ar': ' : تمت الإحالة في'},
'firstName': {'en': 'First Name', 'ar': 'الاسم الاول'},
'middleName': {'en': 'Middle Name', 'ar': 'اسم الاب'},
'lastName': {'en': 'Last Name', 'ar': 'اسم العائلة'},
@@ -670,4 +672,21 @@ const Map> localizedValues = {
'referralRemark': {'en': "Referral Remark : ", 'ar': "ملاحظة الإحالة :"},
'ICDName': {'en': "ICDName", 'ar': "اسم ال ICD"},
'offTime': {'en': "OffTime", 'ar': "خارج الوقت"},
+ 'patient-name': {'en': "Patient Name", 'ar': "اسم المريص"},
+ 'icd': {'en': "ICD", 'ar': "التصنيف الدولي للأمراض"},
+ 'days': {'en': "Days", 'ar': "أيام"},
+ 'months': {'en': "Months", 'ar': "أشهر"},
+ 'years': {'en': "Years", 'ar': "سنين"},
+ 'hr': {'en': "HR", 'ar': "س"},
+ 'min': {'en': "Min", 'ar': "د"},
+ 'appointmentNumber': {'en': "Appointment Number", 'ar': "رقم الموعد"},
+ 'referralStatusHold': {'en': "Hold", 'ar': "معلق"},
+ 'referralStatusActive': {'en': "Active", 'ar': "نشط"},
+ 'referralStatusCancelled': {'en': "Cancelled", 'ar': "ملغاة"},
+ 'referralStatusCompleted': {'en': "Completed", 'ar': "مكتمل"},
+ 'referralStatusNotSeen': {'en': "NotSeen", 'ar': "لم يرى"},
+
+ 'clinicSearch': {'en': "Search Clinic", 'ar': "بحث عن عيادة"},
+ 'doctorSearch': {'en': "Search Doctor", 'ar': "بحث عن طبيب"},
+ // 'icd': {'en': "ICD", 'ar': " "},
};
diff --git a/lib/core/enum/master_lookup_key.dart b/lib/core/enum/master_lookup_key.dart
index f1ba1d46..889be9a7 100644
--- a/lib/core/enum/master_lookup_key.dart
+++ b/lib/core/enum/master_lookup_key.dart
@@ -12,7 +12,15 @@ enum MasterKeysService {
DiagnosisType,
ICD10,
TemperatureMethods,
- Speciality
+ Speciality,
+ MedicationStrength,
+ MedicationDuration,
+ MedicationRoute,
+ MedicationFrequency,
+ MedicationDoseTime,
+ MedicationIndications,
+
+ AdmissionRequestType,
}
extension SelectedMasterKeysService on MasterKeysService {
@@ -45,7 +53,8 @@ extension SelectedMasterKeysService on MasterKeysService {
break;
case MasterKeysService.physiotherapyGoals:
return 117;
- break;case MasterKeysService.DiagnosisCondition:
+ break;
+ case MasterKeysService.DiagnosisCondition:
return 34;
break;
case MasterKeysService.DiagnosisType:
@@ -57,6 +66,25 @@ extension SelectedMasterKeysService on MasterKeysService {
return 2005;
case MasterKeysService.Speciality:
return 10;
+ case MasterKeysService.MedicationStrength:
+ return 2100;
+ break;
+ case MasterKeysService.MedicationDuration:
+ return 118;
+ break;
+ case MasterKeysService.MedicationRoute:
+ return 32;
+ break;
+ case MasterKeysService.MedicationFrequency:
+ return 31;
+ break;
+ case MasterKeysService.MedicationDoseTime:
+ return 30;
+ break;
+ case MasterKeysService.MedicationIndications:
+ return 450;
+ case MasterKeysService.AdmissionRequestType:
+ return 2019;
break;
}
}
diff --git a/lib/core/model/admissionRequest/ward-model.dart b/lib/core/model/admissionRequest/ward-model.dart
new file mode 100644
index 00000000..606758d3
--- /dev/null
+++ b/lib/core/model/admissionRequest/ward-model.dart
@@ -0,0 +1,26 @@
+class WardModel{
+
+ String description;
+ String descriptionN;
+ int floorID;
+ bool isActive;
+
+ WardModel(
+ {this.description, this.descriptionN, this.floorID, this.isActive});
+
+ WardModel.fromJson(Map json) {
+ description = json['description'];
+ descriptionN = json['descriptionN'];
+ floorID = json['floorID'];
+ isActive = json['isActive'];
+ }
+
+ Map toJson() {
+ final Map data = new Map();
+ data['description'] = this.description;
+ data['descriptionN'] = this.descriptionN;
+ data['floorID'] = this.floorID;
+ data['isActive'] = this.isActive;
+ return data;
+ }
+}
\ No newline at end of file
diff --git a/lib/core/model/medical_file_model.dart b/lib/core/model/medical_file_model.dart
index 4e9d8f3e..f2b4ce3c 100644
--- a/lib/core/model/medical_file_model.dart
+++ b/lib/core/model/medical_file_model.dart
@@ -169,6 +169,7 @@ class Consulations {
List lstPhysicalExam;
List lstProcedure;
List lstMedicalHistory;
+ List lstCheifComplaint;
Consulations(
{this.admissionNo,
@@ -194,7 +195,8 @@ class Consulations {
this.lstAssessments,
this.lstPhysicalExam,
this.lstProcedure,
- this.lstMedicalHistory});
+ this.lstMedicalHistory,
+ this.lstCheifComplaint});
Consulations.fromJson(Map json) {
admissionNo = json['AdmissionNo'];
@@ -223,6 +225,12 @@ class Consulations {
lstAssessments.add(new LstAssessments.fromJson(v));
});
}
+ if (json['lstCheifComplaint'] != null) {
+ lstCheifComplaint = new List();
+ json['lstCheifComplaint'].forEach((v) {
+ lstCheifComplaint.add(new LstCheifComplaint.fromJson(v));
+ });
+ }
if (json['lstPhysicalExam'] != null) {
lstPhysicalExam = new List();
json['lstPhysicalExam'].forEach((v) {
@@ -269,6 +277,10 @@ class Consulations {
data['lstAssessments'] =
this.lstAssessments.map((v) => v.toJson()).toList();
}
+ if (this.lstCheifComplaint != null) {
+ data['lstCheifComplaint'] =
+ this.lstCheifComplaint.map((v) => v.toJson()).toList();
+ }
if (this.lstPhysicalExam != null) {
data['lstPhysicalExam'] =
this.lstPhysicalExam.map((v) => v.toJson()).toList();
@@ -284,6 +296,67 @@ class Consulations {
}
}
+class LstCheifComplaint {
+ int appointmentNo;
+ String cCDate;
+ String chiefComplaint;
+ String currentMedication;
+ int episodeID;
+ String hOPI;
+ int patientID;
+ String patientType;
+ int projectID;
+ String projectName;
+ String setupID;
+ String dispalyName;
+
+ LstCheifComplaint(
+ {this.appointmentNo,
+ this.cCDate,
+ this.chiefComplaint,
+ this.currentMedication,
+ this.episodeID,
+ this.hOPI,
+ this.patientID,
+ this.patientType,
+ this.projectID,
+ this.projectName,
+ this.setupID,
+ this.dispalyName});
+
+ LstCheifComplaint.fromJson(Map json) {
+ appointmentNo = json['AppointmentNo'];
+ cCDate = json['CCDate'];
+ chiefComplaint = json['ChiefComplaint'];
+ currentMedication = json['CurrentMedication'];
+ episodeID = json['EpisodeID'];
+ hOPI = json['HOPI'];
+ patientID = json['PatientID'];
+ patientType = json['PatientType'];
+ projectID = json['ProjectID'];
+ projectName = json['ProjectName'];
+ setupID = json['SetupID'];
+ dispalyName = json['dispalyName'];
+ }
+
+ Map toJson() {
+ final Map data = new Map();
+ data['AppointmentNo'] = this.appointmentNo;
+ data['CCDate'] = this.cCDate;
+ data['ChiefComplaint'] = this.chiefComplaint;
+ data['CurrentMedication'] = this.currentMedication;
+ data['EpisodeID'] = this.episodeID;
+ data['HOPI'] = this.hOPI;
+ data['PatientID'] = this.patientID;
+ data['PatientType'] = this.patientType;
+ data['ProjectID'] = this.projectID;
+ data['ProjectName'] = this.projectName;
+ data['SetupID'] = this.setupID;
+ data['dispalyName'] = this.dispalyName;
+ return data;
+ }
+}
+
class LstAssessments {
int appointmentNo;
String condition;
diff --git a/lib/core/service/base/lookup-service.dart b/lib/core/service/base/lookup-service.dart
index 3bc6e61e..0c361003 100644
--- a/lib/core/service/base/lookup-service.dart
+++ b/lib/core/service/base/lookup-service.dart
@@ -11,6 +11,13 @@ class LookupService extends BaseService {
List get allergySeverityList => _allergySeverityList;
List _allergySeverityList = [];
+ List medicationStrengthList = [];
+ List medicationDurationList = [];
+ List medicationRouteList = [];
+ List medicationFrequencyList = [];
+ List medicationDoseTimeList = [];
+ List medicationIndicationsList = [];
+
List get historyFamilyList => _historyFamilyList;
List _historyFamilyList = [];
@@ -32,11 +39,12 @@ class LookupService extends BaseService {
List _physicalExaminationList = [];
// List listOfPhysiotherapyGoals = [];
- List listOfDiagnosisType = [];
- List listOfDiagnosisCondition = [];
- List listOfICD10 = [];
- List listOfTemperatureMethods = [];
- List listOfSpeciality = [];
+ List listOfDiagnosisType = [];
+ List listOfDiagnosisCondition = [];
+ List listOfICD10 = [];
+ List listOfTemperatureMethods = [];
+ List listOfSpeciality = [];
+ List listOfAdmissionType = [];
Future getMasterLookup(MasterKeysService masterKeys) async {
hasError = false;
@@ -110,42 +118,79 @@ class LookupService extends BaseService {
});
break;
- case MasterKeysService.DiagnosisType:
- listOfDiagnosisType.clear();
+ case MasterKeysService.DiagnosisType:
+ listOfDiagnosisType.clear();
entryList.forEach((v) {
- listOfDiagnosisType
- .add(MasterKeyModel.fromJson(v));
+ listOfDiagnosisType.add(MasterKeyModel.fromJson(v));
});
break;
- case MasterKeysService.DiagnosisCondition:
- listOfDiagnosisCondition.clear();
+ case MasterKeysService.DiagnosisCondition:
+ listOfDiagnosisCondition.clear();
entryList.forEach((v) {
- listOfDiagnosisCondition
- .add(MasterKeyModel.fromJson(v));
+ listOfDiagnosisCondition.add(MasterKeyModel.fromJson(v));
});
break;
case MasterKeysService.ICD10:
listOfICD10.clear();
entryList.forEach((v) {
- listOfICD10
- .add(MasterKeyModel.fromJson(v));
+ listOfICD10.add(MasterKeyModel.fromJson(v));
});
break;
case MasterKeysService.TemperatureMethods:
listOfTemperatureMethods.clear();
entryList.forEach((v) {
- listOfTemperatureMethods
- .add(MasterKeyModel.fromJson(v));
+ listOfTemperatureMethods.add(MasterKeyModel.fromJson(v));
});
break;
case MasterKeysService.Speciality:
listOfSpeciality.clear();
entryList.forEach((v) {
- listOfSpeciality
- .add(MasterKeyModel.fromJson(v));
+ listOfSpeciality.add(MasterKeyModel.fromJson(v));
+ });
+ break;
+ case MasterKeysService.MedicationStrength:
+ medicationStrengthList.clear();
+ entryList.forEach((v) {
+ medicationStrengthList.add(v);
+ });
+ break;
+ case MasterKeysService.MedicationDuration:
+ medicationDurationList.clear();
+ entryList.forEach((v) {
+ medicationDurationList.add(v);
+ });
+ break;
+ case MasterKeysService.MedicationRoute:
+ medicationRouteList.clear();
+ entryList.forEach((v) {
+ medicationRouteList.add(v);
+ });
+ break;
+ case MasterKeysService.MedicationFrequency:
+ medicationFrequencyList.clear();
+ entryList.forEach((v) {
+ medicationFrequencyList.add(v);
+ });
+ break;
+ case MasterKeysService.MedicationDoseTime:
+ medicationDoseTimeList.clear();
+ entryList.forEach((v) {
+ medicationDoseTimeList.add(v);
+ });
+ break;
+ case MasterKeysService.MedicationIndications:
+ medicationIndicationsList.clear();
+ entryList.forEach((v) {
+ medicationIndicationsList.add(v);
+ });
+ break;
+ case MasterKeysService.AdmissionRequestType:
+ listOfAdmissionType.clear();
+ entryList.forEach((v) {
+ // listOfAdmissionType.add(MasterKeyModel.fromJson(v));
+ listOfAdmissionType.add(v);
});
break;
}
}
-
}
diff --git a/lib/core/service/patient-admission-request-service.dart b/lib/core/service/patient-admission-request-service.dart
index 62932908..dca7b60d 100644
--- a/lib/core/service/patient-admission-request-service.dart
+++ b/lib/core/service/patient-admission-request-service.dart
@@ -1,9 +1,14 @@
import 'package:doctor_app_flutter/config/config.dart';
+import 'package:doctor_app_flutter/core/model/admissionRequest/ward-model.dart';
import 'package:doctor_app_flutter/core/service/base/lookup-service.dart';
+import 'package:doctor_app_flutter/models/SOAP/master_key_model.dart';
class AdmissionRequestService extends LookupService {
List doctorsList = [];
List specialityList = [];
+ List wardList = [];
+ List diagnosisTypesList = [];
+ List allergiesLookupList = [];
setSpecialityList() {
specialityList.clear();
@@ -12,6 +17,13 @@ class AdmissionRequestService extends LookupService {
});
}
+ setAllergies() {
+ allergiesLookupList.clear();
+ allergiesList.forEach((element) {
+ allergiesLookupList.add(element.toJson());
+ });
+ }
+
Future getDoctorsList() async {
hasError = false;
@@ -28,4 +40,50 @@ class AdmissionRequestService extends LookupService {
body: Map(),
);
}
+
+ Future getWardList() async {
+ hasError = false;
+
+ await baseAppClient.post(
+ GET_WARDS,
+ onSuccess: (dynamic response, int statusCode) {
+ wardList.clear();
+ if (response['AdmissionMasterList'] != null &&
+ response['AdmissionMasterList']['entityList'] != null) {
+ response['AdmissionMasterList']['entityList'].forEach((v) {
+ // wardList.add(WardModel.fromJson(v));
+ wardList.add(v);
+ });
+ }
+ },
+ onFailure: (String error, int statusCode) {
+ hasError = true;
+ super.error = error;
+ },
+ body: Map(),
+ );
+ }
+
+ Future getDiagnosisTypesList() async {
+ hasError = false;
+
+ await baseAppClient.post(
+ GET_DIAGNOSIS_TYPES,
+ onSuccess: (dynamic response, int statusCode) {
+ diagnosisTypesList.clear();
+ if (response['AdmissionDiagnosisList'] != null &&
+ response['AdmissionDiagnosisList']['entityList'] != null) {
+ response['AdmissionDiagnosisList']['entityList'].forEach((v) {
+ // diagnosisTypesList.add(MasterKeyModel.fromJson(v));
+ diagnosisTypesList.add(v);
+ });
+ }
+ },
+ onFailure: (String error, int statusCode) {
+ hasError = true;
+ super.error = error;
+ },
+ body: Map(),
+ );
+ }
}
diff --git a/lib/core/service/patient-doctor-referral-service.dart b/lib/core/service/patient-doctor-referral-service.dart
index 2f18540a..f452cfb6 100644
--- a/lib/core/service/patient-doctor-referral-service.dart
+++ b/lib/core/service/patient-doctor-referral-service.dart
@@ -32,13 +32,14 @@ class PatientReferralService extends LookupService {
"Channel": 9,
"TokenID": "",
"SessionID": "i1UJwCTSqt",
- "IsLoginForDoctorApp": true
+ "IsLoginForDoctorApp": true,
+ // "MemberID": memberID
};
dynamic localRes;
await baseAppClient.post(url, onSuccess: (response, statusCode) async {
if (response['MessageStatus'] == 1) {
- projectsList = response['ListProject'];
+ projectsList = response['ProjectInfo'];
} else {
// handel error
projectsList = ListProject;
diff --git a/lib/core/service/patient-ucaf-service.dart b/lib/core/service/patient-ucaf-service.dart
index 38f2407b..e7ecc9f2 100644
--- a/lib/core/service/patient-ucaf-service.dart
+++ b/lib/core/service/patient-ucaf-service.dart
@@ -41,7 +41,7 @@ class UcafService extends LookupService {
hasError = false;
Map body = Map();
body['PatientMRN'] = patient.patientMRN;
- // body['AppointmentNo'] = patient.appointmentNo;
+ body['AppointmentNo'] = patient.appointmentNo;
// body['EpisodeID'] = patient.episodeNo;
await baseAppClient.post(
diff --git a/lib/core/service/patient-vital-signs-service.dart b/lib/core/service/patient-vital-signs-service.dart
index ed6869f8..8d404e27 100644
--- a/lib/core/service/patient-vital-signs-service.dart
+++ b/lib/core/service/patient-vital-signs-service.dart
@@ -43,7 +43,7 @@ class VitalSignsService extends BaseService {
Map body = Map();
body['PatientMRN'] = patient.patientMRN;
body['AppointmentNo'] = patient.appointmentNo;
- body['EpisodeID'] = patient.episodeNo;
+ // body['EpisodeID'] = patient.episodeNo;
body['PatientTypeID'] = 1;
body['PatientType'] = 1;
body['DeviceTypeID'] = 1;
diff --git a/lib/core/service/prescription_service.dart b/lib/core/service/prescription_service.dart
index 9fcf4c2d..b7f9e80e 100644
--- a/lib/core/service/prescription_service.dart
+++ b/lib/core/service/prescription_service.dart
@@ -6,12 +6,13 @@ import 'package:doctor_app_flutter/core/model/post_prescrition_req_model.dart';
import 'package:doctor_app_flutter/core/model/search_drug_model.dart';
import 'package:doctor_app_flutter/core/model/search_drug_request_model.dart';
import 'package:doctor_app_flutter/core/service/base/base_service.dart';
+import 'package:doctor_app_flutter/core/service/base/lookup-service.dart';
import 'package:doctor_app_flutter/models/SOAP/GetAllergiesResModel.dart';
import 'package:doctor_app_flutter/models/SOAP/master_key_model.dart';
import 'package:doctor_app_flutter/models/patient/patiant_info_model.dart';
import 'package:doctor_app_flutter/models/patient/vital_sign/patient-vital-sign-data.dart';
-class PrescriptionService extends BaseService {
+class PrescriptionService extends LookupService {
List _prescriptionList = List();
List get prescriptionList => _prescriptionList;
List _drugsList = List();
diff --git a/lib/core/viewModel/medicine_view_model.dart b/lib/core/viewModel/medicine_view_model.dart
index 23dd0306..5b7c2f6a 100644
--- a/lib/core/viewModel/medicine_view_model.dart
+++ b/lib/core/viewModel/medicine_view_model.dart
@@ -1,5 +1,7 @@
+import 'package:doctor_app_flutter/core/enum/master_lookup_key.dart';
import 'package:doctor_app_flutter/core/enum/viewstate.dart';
import 'package:doctor_app_flutter/core/model/get_medication_response_model.dart';
+import 'package:doctor_app_flutter/core/service/SOAP_service.dart';
import 'package:doctor_app_flutter/core/service/medicine_service.dart';
import 'package:doctor_app_flutter/core/service/prescription_service.dart';
@@ -8,10 +10,25 @@ import 'base_view_model.dart';
class MedicineViewModel extends BaseViewModel {
MedicineService _medicineService = locator();
+ PrescriptionService _prescriptionService = locator();
+
get pharmacyItemsList => _medicineService.pharmacyItemsList;
+
get pharmaciesList => _medicineService.pharmaciesList;
- PrescriptionService _prescriptionService = locator();
+ get medicationStrengthList => _prescriptionService.medicationStrengthList;
+
+ get medicationDurationList => _prescriptionService.medicationDurationList;
+
+ get medicationRouteList => _prescriptionService.medicationRouteList;
+
+ get medicationFrequencyList => _prescriptionService.medicationFrequencyList;
+
+ get medicationIndicationsList =>
+ _prescriptionService.medicationIndicationsList;
+
+ get medicationDoseTimeList => _prescriptionService.medicationDoseTimeList;
+
List get allMedicationList =>
_prescriptionService.allMedicationList;
@@ -35,6 +52,72 @@ class MedicineViewModel extends BaseViewModel {
setState(ViewState.Idle);
}
+ Future getMedicationStrength() async {
+ setState(ViewState.Busy);
+ await _prescriptionService
+ .getMasterLookup(MasterKeysService.MedicationStrength);
+ if (_prescriptionService.hasError) {
+ error = _prescriptionService.error;
+ setState(ViewState.Error);
+ } else
+ setState(ViewState.Idle);
+ }
+
+ Future getMedicationRoute() async {
+ setState(ViewState.Busy);
+ await _prescriptionService
+ .getMasterLookup(MasterKeysService.MedicationRoute);
+ if (_prescriptionService.hasError) {
+ error = _prescriptionService.error;
+ setState(ViewState.Error);
+ } else
+ setState(ViewState.Idle);
+ }
+
+ Future getMedicationIndications() async {
+ setState(ViewState.Busy);
+ await _prescriptionService
+ .getMasterLookup(MasterKeysService.MedicationIndications);
+ if (_prescriptionService.hasError) {
+ error = _prescriptionService.error;
+ setState(ViewState.Error);
+ } else
+ setState(ViewState.Idle);
+ }
+
+ Future getMedicationDoseTime() async {
+ setState(ViewState.Busy);
+ await _prescriptionService
+ .getMasterLookup(MasterKeysService.MedicationDoseTime);
+ if (_prescriptionService.hasError) {
+ error = _prescriptionService.error;
+ setState(ViewState.Error);
+ } else
+ setState(ViewState.Idle);
+ }
+
+ Future getMedicationFrequency() async {
+ setState(ViewState.Busy);
+ await _prescriptionService
+ .getMasterLookup(MasterKeysService.MedicationFrequency);
+ if (_prescriptionService.hasError) {
+ error = _prescriptionService.error;
+ setState(ViewState.Error);
+ } else
+ setState(ViewState.Idle);
+ }
+
+ Future getMedicationDuration() async {
+ setState(ViewState.Busy);
+ await _prescriptionService
+ .getMasterLookup(MasterKeysService.MedicationDuration);
+ if (_prescriptionService.hasError) {
+ error = _prescriptionService.error;
+ setState(ViewState.Error);
+ } else
+ setState(ViewState.Idle);
+ }
+
Future getPharmaciesList(int itemId) async {
setState(ViewState.Busy);
await _medicineService.getPharmaciesList(itemId);
@@ -44,4 +127,13 @@ class MedicineViewModel extends BaseViewModel {
} else
setState(ViewState.Idle);
}
+
+ dynamic getLookupById(List list, String id) {
+ for (int i = 0; i < list.length; i++) {
+ if (list[i]['id'].toString() == id) {
+ return list[i];
+ }
+ }
+ return null;
+ }
}
diff --git a/lib/core/viewModel/patient-admission-request-viewmodel.dart b/lib/core/viewModel/patient-admission-request-viewmodel.dart
index 15f54e5d..d427eb67 100644
--- a/lib/core/viewModel/patient-admission-request-viewmodel.dart
+++ b/lib/core/viewModel/patient-admission-request-viewmodel.dart
@@ -1,6 +1,7 @@
import 'package:doctor_app_flutter/config/shared_pref_kay.dart';
import 'package:doctor_app_flutter/core/enum/master_lookup_key.dart';
import 'package:doctor_app_flutter/core/enum/viewstate.dart';
+import 'package:doctor_app_flutter/core/model/admissionRequest/ward-model.dart';
import 'package:doctor_app_flutter/core/service/patient-admission-request-service.dart';
import 'package:doctor_app_flutter/core/viewModel/base_view_model.dart';
import 'package:doctor_app_flutter/models/SOAP/master_key_model.dart';
@@ -15,20 +16,24 @@ class AdmissionRequestViewModel extends BaseViewModel{
List get speciality => _admissionRequestService.specialityList;
+ List get wardList => _admissionRequestService.wardList;
+
+ List get admissionTypeList => _admissionRequestService.listOfAdmissionType;
+
+ List get diagnosisTypesList => _admissionRequestService.diagnosisTypesList;
+
+ List get allergiesList => _admissionRequestService.allergiesLookupList;
+
String selectedLanguage;
Future getLanguage() async {
selectedLanguage = await sharedPref.getString(APP_Language);
}
- Future getMasterLookup() async {
- setState(ViewState.Busy);
+ Future getSpecialityList() async {
await getLanguage();
- await _admissionRequestService.getMasterLookup(MasterKeysService.Speciality);
- if (_admissionRequestService.hasError) {
- error = _admissionRequestService.error;
- setState(ViewState.Error);
- } else {
+ await getMasterLookup(MasterKeysService.Speciality);
+ if (!_admissionRequestService.hasError) {
_admissionRequestService.setSpecialityList();
await getClinicDoctors();
}
@@ -43,4 +48,42 @@ class AdmissionRequestViewModel extends BaseViewModel{
} else
setState(ViewState.Idle);
}
+
+ Future getWards() async {
+ setState(ViewState.Busy);
+ await _admissionRequestService.getWardList();
+ if (_admissionRequestService.hasError) {
+ error = _admissionRequestService.error;
+ setState(ViewState.ErrorLocal);
+ } else
+ setState(ViewState.Idle);
+ }
+
+ Future getDiagnosis() async {
+ setState(ViewState.Busy);
+ await _admissionRequestService.getDiagnosisTypesList();
+ if (_admissionRequestService.hasError) {
+ error = _admissionRequestService.error;
+ setState(ViewState.ErrorLocal);
+ } else
+ setState(ViewState.Idle);
+ }
+
+ Future getAllergies() async {
+ await getMasterLookup(MasterKeysService.Allergies);
+ if (!_admissionRequestService.hasError) {
+ _admissionRequestService.setAllergies();
+ }
+ }
+
+ Future getMasterLookup(MasterKeysService keysService) async {
+ setState(ViewState.Busy);
+ await _admissionRequestService.getMasterLookup(keysService);
+ if (_admissionRequestService.hasError) {
+ error = _admissionRequestService.error;
+ setState(ViewState.ErrorLocal);
+ } else {
+ setState(ViewState.Idle);
+ }
+ }
}
\ No newline at end of file
diff --git a/lib/core/viewModel/patient-referral-viewmodel.dart b/lib/core/viewModel/patient-referral-viewmodel.dart
index abe39224..5771d1db 100644
--- a/lib/core/viewModel/patient-referral-viewmodel.dart
+++ b/lib/core/viewModel/patient-referral-viewmodel.dart
@@ -8,6 +8,8 @@ import 'package:doctor_app_flutter/models/patient/PatientArrivalEntity.dart';
import 'package:doctor_app_flutter/models/patient/my_referral/PendingReferral.dart';
import 'package:doctor_app_flutter/models/patient/my_referral/my_referred_patient_model.dart';
import 'package:doctor_app_flutter/models/patient/patiant_info_model.dart';
+import 'package:doctor_app_flutter/util/translations_delegate_base.dart';
+import 'package:flutter/cupertino.dart';
import '../../locator.dart';
@@ -40,8 +42,8 @@ class PatientReferralViewModel extends BaseViewModel {
error = _referralPatientService.error;
setState(ViewState.Error);
} else {
- if(patientReferral.length == 0){
- await getMasterLookup(MasterKeysService.physiotherapyGoals);
+ if (patientReferral.length == 0) {
+ await getMasterLookup(MasterKeysService.physiotherapyGoals);
} else {
setState(ViewState.Idle);
}
@@ -94,8 +96,8 @@ class PatientReferralViewModel extends BaseViewModel {
DoctorProfileModel doctorProfile = await getDoctorProfile();
if (doctorProfile != null) {
dynamic _selectedBranch = {
- "ID": doctorProfile.projectID,
- "Desciption": doctorProfile.projectName
+ "facilityId": doctorProfile.projectID,
+ "facilityName": doctorProfile.projectName
};
return _selectedBranch;
}
@@ -126,7 +128,8 @@ class PatientReferralViewModel extends BaseViewModel {
setState(ViewState.Idle);
}
- Future responseReferral(PendingReferral pendingReferral, bool isAccepted) async {
+ Future responseReferral(
+ PendingReferral pendingReferral, bool isAccepted) async {
setState(ViewState.Busy);
await _referralPatientService.responseReferral(pendingReferral, isAccepted);
if (_referralPatientService.hasError) {
@@ -136,14 +139,11 @@ class PatientReferralViewModel extends BaseViewModel {
setState(ViewState.Idle);
}
- Future makeReferral(PatiantInformtion patient,
- String isoStringDate,
- int projectID,
- int clinicID,
- int doctorID,
- String remarks) async {
+ Future makeReferral(PatiantInformtion patient, String isoStringDate,
+ int projectID, int clinicID, int doctorID, String remarks) async {
setState(ViewState.Busy);
- await _referralPatientService.makeReferral(patient, isoStringDate, projectID, clinicID, doctorID, remarks);
+ await _referralPatientService.makeReferral(
+ patient, isoStringDate, projectID, clinicID, doctorID, remarks);
if (_referralPatientService.hasError) {
error = _referralPatientService.error;
setState(ViewState.Error);
@@ -152,18 +152,40 @@ class PatientReferralViewModel extends BaseViewModel {
}
}
- Future getPatientDetails(String fromDate, String toDate, int patientMrn, int appointmentNo) async {
+ Future getPatientDetails(
+ String fromDate, String toDate, int patientMrn, int appointmentNo) async {
setState(ViewState.Busy);
- await _referralPatientService.getPatientArrivalList(toDate, fromDate: fromDate, patientMrn: patientMrn, appointmentNo: appointmentNo);
+ await _referralPatientService.getPatientArrivalList(toDate,
+ fromDate: fromDate,
+ patientMrn: patientMrn,
+ appointmentNo: appointmentNo);
if (_referralPatientService.hasError) {
- error = _referralPatientService.error;
- setState(ViewState.Error);
+ error = _referralPatientService.error;
+ setState(ViewState.Error);
} else {
setState(ViewState.Idle);
}
}
+
/*
* model
.getPatientArrivalList()*/
+
+ String getReferralStatusNameByCode(int statusCode, BuildContext context) {
+ switch (statusCode) {
+ case 1:
+ return TranslationBase.of(context).referralStatusHold;
+ case 2:
+ return TranslationBase.of(context).referralStatusActive;
+ case 4:
+ return TranslationBase.of(context).referralStatusCancelled;
+ case 46:
+ return TranslationBase.of(context).referralStatusCompleted;
+ case 63:
+ return TranslationBase.of(context).referralStatusNotSeen;
+ default:
+ return "-";
+ }
+ }
}
diff --git a/lib/main.dart b/lib/main.dart
index 1283da1e..79994205 100644
--- a/lib/main.dart
+++ b/lib/main.dart
@@ -1,6 +1,7 @@
import 'package:doctor_app_flutter/core/viewModel/livecare_view_model.dart';
import 'package:doctor_app_flutter/core/viewModel/project_view_model.dart';
import 'package:doctor_app_flutter/util/translations_delegate_base.dart';
+import 'package:firebase_core/firebase_core.dart';
import 'package:flutter/material.dart';
import 'package:flutter_localizations/flutter_localizations.dart';
import 'package:hexcolor/hexcolor.dart';
@@ -13,7 +14,9 @@ import './routes.dart';
import 'config/config.dart';
import 'locator.dart';
-void main() {
+void main()async {
+ WidgetsFlutterBinding.ensureInitialized();
+ await Firebase.initializeApp();
setupLocator();
runApp(MyApp());
}
diff --git a/lib/models/patient/vital_sign/patient-vital-sign-data.dart b/lib/models/patient/vital_sign/patient-vital-sign-data.dart
index b7fe77cb..57133a08 100644
--- a/lib/models/patient/vital_sign/patient-vital-sign-data.dart
+++ b/lib/models/patient/vital_sign/patient-vital-sign-data.dart
@@ -8,7 +8,7 @@ class VitalSignData {
var bodyMassIndex;
int fio2;
int headCircumCm;
- int heightCm;
+ var heightCm;
int idealBodyWeightLbs;
bool isPainManagementDone;
bool isVitalsRequired;
@@ -26,10 +26,10 @@ class VitalSignData {
int respirationPattern;
int sao2;
int status;
- int temperatureCelcius;
+ var temperatureCelcius;
int temperatureCelciusMethod;
- int waistSizeInch;
- int weightKg;
+ var waistSizeInch;
+ var weightKg;
VitalSignData(
{this.appointmentNo,
diff --git a/lib/screens/dashboard_screen.dart b/lib/screens/dashboard_screen.dart
index fc9a8bf8..717dbaa6 100644
--- a/lib/screens/dashboard_screen.dart
+++ b/lib/screens/dashboard_screen.dart
@@ -64,7 +64,15 @@ class _DashboardScreenState extends State {
projectsProvider = Provider.of(context);
projectsProvider.getDoctorClinicsList();
- _firebaseMessaging.setAutoInitEnabled(true);
+ // _firebaseMessaging.setAutoInitEnabled(true);
+ _firebaseMessaging.requestNotificationPermissions(
+ const IosNotificationSettings(
+ sound: true, badge: true, alert: true, provisional: true));
+ _firebaseMessaging.onIosSettingsRegistered
+ .listen((IosNotificationSettings settings) {
+ print("Settings registered: $settings");
+ });
+
_firebaseMessaging.getToken().then((String token) async {
if (token != '') {
DEVICE_TOKEN = token;
diff --git a/lib/screens/medical-file/medical_file_details.dart b/lib/screens/medical-file/medical_file_details.dart
index f7525391..a148610b 100644
--- a/lib/screens/medical-file/medical_file_details.dart
+++ b/lib/screens/medical-file/medical_file_details.dart
@@ -188,16 +188,18 @@ class _MedicalFileDetailsState extends State {
.consulations
.length !=
0)
- AppText(
- model
- .medicalFileList[0]
- .entityList[0]
- .timelines[encounterNumber]
- .timeLineEvents[0]
- .consulations[0]
- .doctorName
- .toUpperCase(),
- fontWeight: FontWeight.w700,
+ Expanded(
+ child: AppText(
+ model
+ .medicalFileList[0]
+ .entityList[0]
+ .timelines[encounterNumber]
+ .timeLineEvents[0]
+ .consulations[0]
+ .doctorName
+ .toUpperCase(),
+ fontWeight: FontWeight.w700,
+ ),
),
],
),
@@ -315,7 +317,7 @@ class _MedicalFileDetailsState extends State {
.timelines[encounterNumber]
.timeLineEvents[0]
.consulations[0]
- .lstMedicalHistory
+ .lstCheifComplaint
.length,
itemBuilder:
(BuildContext ctxt, int index) {
@@ -338,9 +340,9 @@ class _MedicalFileDetailsState extends State {
encounterNumber]
.timeLineEvents[0]
.consulations[0]
- .lstMedicalHistory[
+ .lstCheifComplaint[
index]
- .history
+ .hOPI
.trim(),
),
),
@@ -795,7 +797,7 @@ class _MedicalFileDetailsState extends State {
.consulations[0]
.lstPhysicalExam[
index]
- .examType),
+ .examDesc),
],
),
Row(
diff --git a/lib/screens/medical-file/medical_file_page.dart b/lib/screens/medical-file/medical_file_page.dart
index a5fab36e..c4553c07 100644
--- a/lib/screens/medical-file/medical_file_page.dart
+++ b/lib/screens/medical-file/medical_file_page.dart
@@ -34,6 +34,10 @@ class _MedicalFilePageState extends State {
child: SingleChildScrollView(
child: Container(
child: Column(
+ // mainAxisAlignment: model.medicalFileList.length != 0 &&
+ // model.medicalFileList != null
+ // ? MainAxisAlignment.start
+ // : MainAxisAlignment.center,
children: [
PatientPageHeaderWidget(patient),
Divider(
diff --git a/lib/screens/patients/patient_search_screen.dart b/lib/screens/patients/patient_search_screen.dart
index 39f7fe65..1e68d196 100644
--- a/lib/screens/patients/patient_search_screen.dart
+++ b/lib/screens/patients/patient_search_screen.dart
@@ -472,10 +472,21 @@ class _PatientSearchScreenState extends State {
);
}).toList();
},
- onChanged: (String newValue) => {
+ onChanged: (String newValue) {
setState(() {
_selectedLocation = newValue;
- })
+ });
+ if (newValue == '1')
+ {
+ _patientSearchFormValues
+ .PatientOutSA = false;
+ }
+ else
+ {
+ _patientSearchFormValues
+ .PatientOutSA = true;
+ }
+
},
items: LOCATIONS.map((item) {
!projectsProvider.isArabic
diff --git a/lib/screens/patients/patients_screen.dart b/lib/screens/patients/patients_screen.dart
index 1a55153e..50b89148 100644
--- a/lib/screens/patients/patients_screen.dart
+++ b/lib/screens/patients/patients_screen.dart
@@ -616,7 +616,7 @@ class _PatientsScreenState extends State {
.white,
),
AppText(
- " ${DateUtils.getAgeByBirthday(item.dateofBirth)}",
+ " ${DateUtils.getAgeByBirthday(item.dateofBirth, context)}",
fontSize: 1.8 *
SizeConfig
diff --git a/lib/screens/patients/profile/UCAF/UCAF-detail-screen.dart b/lib/screens/patients/profile/UCAF/UCAF-detail-screen.dart
index 489c462d..71955b0c 100644
--- a/lib/screens/patients/profile/UCAF/UCAF-detail-screen.dart
+++ b/lib/screens/patients/profile/UCAF/UCAF-detail-screen.dart
@@ -284,7 +284,24 @@ class DiagnosisWidget extends StatelessWidget {
fontSize: SizeConfig.textMultiplier * 2.0,
),
AppText(
- "${diagnosis.icdCode10ID} ${diagnosisCondition != null ? model.selectedLanguage == 'ar' ? diagnosisCondition.nameAr : diagnosisCondition.nameEn : "-"}",
+ "${diagnosisCondition != null ? model.selectedLanguage == 'ar' ? diagnosisCondition.nameAr : diagnosisCondition.nameEn : "-"}",
+ fontWeight: FontWeight.normal,
+ fontSize: SizeConfig.textMultiplier * 2.0,
+ ),
+ ],
+ ),
+ SizedBox(
+ height: 4,
+ ),
+ Row(
+ children: [
+ AppText(
+ "${TranslationBase.of(context).icd}: ",
+ fontWeight: FontWeight.bold,
+ fontSize: SizeConfig.textMultiplier * 2.0,
+ ),
+ AppText(
+ "${diagnosis.icdCode10ID}",
fontWeight: FontWeight.normal,
fontSize: SizeConfig.textMultiplier * 2.0,
),
diff --git a/lib/screens/patients/profile/UCAF/UCAF-input-screen.dart b/lib/screens/patients/profile/UCAF/UCAF-input-screen.dart
index 0116ce46..9b9ae5a5 100644
--- a/lib/screens/patients/profile/UCAF/UCAF-input-screen.dart
+++ b/lib/screens/patients/profile/UCAF/UCAF-input-screen.dart
@@ -144,24 +144,31 @@ class _UCAFInputScreenState extends State {
),
],
),
- Row(
- children: [
- AppText(
- "${TranslationBase.of(context).temperature}",
- fontSize: SizeConfig.textMultiplier * 1.8,
- color: Colors.black,
- fontWeight: FontWeight.w700,
- ),
- SizedBox(
- width: 8,
- ),
- AppText(
- "${model.patientVitalSigns.temperatureCelcius}(C), ${model.patientVitalSigns.temperatureCelcius * (9 / 5) + 32}(F)",
- fontSize: SizeConfig.textMultiplier * 2,
- color: Colors.grey.shade800,
- fontWeight: FontWeight.normal,
- ),
- ],
+ SizedBox(
+ width: 4,
+ ),
+ Expanded(
+ child: Row(
+ children: [
+ AppText(
+ "${TranslationBase.of(context).temperature}",
+ fontSize: SizeConfig.textMultiplier * 1.8,
+ color: Colors.black,
+ fontWeight: FontWeight.w700,
+ ),
+ SizedBox(
+ width: 8,
+ ),
+ Expanded(
+ child: AppText(
+ "${model.patientVitalSigns.temperatureCelcius}(C), ${(model.patientVitalSigns.temperatureCelcius * (9 / 5) + 32).toStringAsFixed(2)}(F)",
+ fontSize: SizeConfig.textMultiplier * 2,
+ color: Colors.grey.shade800,
+ fontWeight: FontWeight.normal,
+ ),
+ ),
+ ],
+ ),
),
],
),
@@ -215,19 +222,19 @@ class _UCAFInputScreenState extends State {
),
Container(
child: TextField(
- decoration: Helpers.textFieldSelectorDecoration(
- TranslationBase.of(context)
- .additionalTextComplaints,
- helpers.parseHtmlString(model
- .patientChiefComplaintList[0]
- .chiefComplaint),
- false),
- enabled: false,
- controller: _additionalComplaintsController,
- keyboardType: TextInputType.text,
- /*minLines: 4,
- maxLines: 6,*/
- )),
+ decoration: Helpers.textFieldSelectorDecoration(
+ TranslationBase.of(context)
+ .additionalTextComplaints,
+ helpers.parseHtmlString(model
+ .patientChiefComplaintList[0]
+ .chiefComplaint),
+ false),
+ enabled: false,
+ controller: _additionalComplaintsController,
+ keyboardType: TextInputType.multiline,
+ minLines: 1,
+ maxLines: 15,
+ )),
SizedBox(
height: 16,
),
@@ -356,7 +363,9 @@ class _UCAFInputScreenState extends State {
false),
enabled: true,
controller: _signsController,
- keyboardType: TextInputType.text,
+ keyboardType: TextInputType.multiline,
+ minLines: null,
+ maxLines: null,
)),
SizedBox(
height: 16,
diff --git a/lib/screens/patients/profile/admission-request/admission-request-detail-screen.dart b/lib/screens/patients/profile/admission-request/admission-request-detail-screen.dart
index 7ccc3ade..76ce6e2b 100644
--- a/lib/screens/patients/profile/admission-request/admission-request-detail-screen.dart
+++ b/lib/screens/patients/profile/admission-request/admission-request-detail-screen.dart
@@ -14,7 +14,6 @@ import 'package:flutter/material.dart';
import 'package:hexcolor/hexcolor.dart';
import '../../../../routes.dart';
-import 'admission-request_second-screen.dart';
class AdmissionRequestDetailScreen extends StatefulWidget {
@override
@@ -35,7 +34,7 @@ class _AdmissionRequestDetailScreenState
final screenSize = MediaQuery.of(context).size;
return BaseView(
- onModelReady: (model) => model.getMasterLookup(),
+ onModelReady: (model) => model.getSpecialityList(),
builder: (_, model, w) => AppScaffold(
baseViewModel: model,
appBarTitle: TranslationBase.of(context).admissionRequest,
@@ -178,6 +177,10 @@ class _AdmissionRequestDetailScreenState
list: model.doctorsList,
attributeName: 'DoctorName',
attributeValueId: 'DoctorID',
+ usingSearch: true,
+ hintSearchText:
+ TranslationBase.of(context)
+ .doctorSearch,
okText:
TranslationBase.of(context)
.ok,
diff --git a/lib/screens/patients/profile/admission-request/admission-request_second-screen.dart b/lib/screens/patients/profile/admission-request/admission-request_second-screen.dart
index 3c1e06dc..b65b7f43 100644
--- a/lib/screens/patients/profile/admission-request/admission-request_second-screen.dart
+++ b/lib/screens/patients/profile/admission-request/admission-request_second-screen.dart
@@ -1,18 +1,24 @@
import 'package:doctor_app_flutter/config/config.dart';
import 'package:doctor_app_flutter/config/size_config.dart';
+import 'package:doctor_app_flutter/core/enum/master_lookup_key.dart';
+import 'package:doctor_app_flutter/core/enum/viewstate.dart';
import 'package:doctor_app_flutter/core/viewModel/patient-admission-request-viewmodel.dart';
+import 'package:doctor_app_flutter/core/viewModel/project_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/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/patient-page-header-widget.dart';
import 'package:doctor_app_flutter/widgets/shared/app_buttons_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/dialogs/dailog-list-select.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:hexcolor/hexcolor.dart';
+import 'package:provider/provider.dart';
import '../../../../routes.dart';
@@ -33,15 +39,17 @@ class _AdmissionRequestSecondScreenState
bool _preAnesthesiaReferred = false;
dynamic _selectedWard;
dynamic _selectedAdmissionType;
+ dynamic _selectedDiagnosis;
+ dynamic _selectedAllergies;
@override
Widget build(BuildContext context) {
final routeArgs = ModalRoute.of(context).settings.arguments as Map;
PatiantInformtion patient = routeArgs['patient'];
final screenSize = MediaQuery.of(context).size;
+ ProjectViewModel projectViewModel = Provider.of(context);
return BaseView(
- // onModelReady: (model) => model.getMasterLookup(),
builder: (_, model, w) => AppScaffold(
baseViewModel: model,
appBarTitle: TranslationBase.of(context).admissionRequest,
@@ -179,40 +187,44 @@ class _AdmissionRequestSecondScreenState
Container(
height: screenSize.height * 0.070,
child: InkWell(
- onTap:
- /*model.doctorsList != null &&
- model.doctorsList.length > 0
+ onTap: model.wardList != null &&
+ model.wardList.length > 0
? () {
- ListSelectDialog dialog =
- ListSelectDialog(
- list: model.doctorsList,
- attributeName: 'DoctorName',
- attributeValueId: 'DoctorID',
- okText: TranslationBase.of(context).ok,
- okFunction: (selectedValue) {
- setState(() {
- _selectedDoctor = selectedValue;
- });
- },
- );
- showDialog(
- barrierDismissible: false,
- context: context,
- builder: (BuildContext context) {
- return dialog;
- },
- );
- }
- :*/
- null,
+ openListDialogField('description',
+ 'description', model.wardList,
+ (selectedValue) {
+ setState(() {
+ _selectedWard = selectedValue;
+ });
+ });
+ }
+ : () async {
+ await model.getWards();
+ if (model.state == ViewState.Idle &&
+ model.wardList.length > 0) {
+ openListDialogField('description',
+ 'description', model.wardList,
+ (selectedValue) {
+ setState(() {
+ _selectedWard = selectedValue;
+ });
+ });
+ } else if (model.state ==
+ ViewState.ErrorLocal) {
+ DrAppToastMsg.showErrorToast(
+ model.error);
+ } else {
+ DrAppToastMsg.showErrorToast(
+ "Empty List");
+ }
+ },
child: TextField(
decoration:
Helpers.textFieldSelectorDecoration(
TranslationBase.of(context).ward,
- /* _selectedWard != null
- ? _selectedWard['DoctorName']
- :*/
- null,
+ _selectedWard != null
+ ? _selectedWard['description']
+ : null,
true),
enabled: false,
),
@@ -238,41 +250,51 @@ class _AdmissionRequestSecondScreenState
Container(
height: screenSize.height * 0.070,
child: InkWell(
- onTap:
- /*model.doctorsList != null &&
- model.doctorsList.length > 0
+ onTap: model.admissionTypeList != null &&
+ model.admissionTypeList.length > 0
? () {
- ListSelectDialog dialog =
- ListSelectDialog(
- list: model.doctorsList,
- attributeName: 'DoctorName',
- attributeValueId: 'DoctorID',
- okText: TranslationBase.of(context).ok,
- okFunction: (selectedValue) {
- setState(() {
- _selectedDoctor = selectedValue;
- });
- },
- );
- showDialog(
- barrierDismissible: false,
- context: context,
- builder: (BuildContext context) {
- return dialog;
- },
- );
- }
- :*/
- null,
+ openListDialogField('nameEn', 'id',
+ model.admissionTypeList,
+ (selectedValue) {
+ setState(() {
+ _selectedAdmissionType =
+ selectedValue;
+ });
+ });
+ }
+ : () async {
+ await model.getMasterLookup(
+ MasterKeysService
+ .AdmissionRequestType);
+ if (model.state == ViewState.Idle &&
+ model.admissionTypeList.length >
+ 0) {
+ openListDialogField('nameEn',
+ 'id', model.admissionTypeList,
+ (selectedValue) {
+ setState(() {
+ _selectedAdmissionType =
+ selectedValue;
+ });
+ });
+ } else if (model.state ==
+ ViewState.ErrorLocal) {
+ DrAppToastMsg.showErrorToast(
+ model.error);
+ } else {
+ DrAppToastMsg.showErrorToast(
+ "Empty List");
+ }
+ },
child: TextField(
decoration:
Helpers.textFieldSelectorDecoration(
TranslationBase.of(context)
.admissionType,
- /* _admissionType != null
- ? _admissionType['DoctorName']
- :*/
- null,
+ _selectedAdmissionType != null
+ ? _selectedAdmissionType[
+ 'nameEn']
+ : null,
true),
enabled: false,
),
@@ -284,41 +306,51 @@ class _AdmissionRequestSecondScreenState
Container(
height: screenSize.height * 0.070,
child: InkWell(
- onTap:
- /*model.doctorsList != null &&
- model.doctorsList.length > 0
+ onTap: model.diagnosisTypesList != null &&
+ model.diagnosisTypesList.length > 0
? () {
- ListSelectDialog dialog =
- ListSelectDialog(
- list: model.doctorsList,
- attributeName: 'DoctorName',
- attributeValueId: 'DoctorID',
- okText: TranslationBase.of(context).ok,
- okFunction: (selectedValue) {
- setState(() {
- _selectedDoctor = selectedValue;
- });
- },
- );
- showDialog(
- barrierDismissible: false,
- context: context,
- builder: (BuildContext context) {
- return dialog;
- },
- );
- }
- :*/
- null,
+ openListDialogField('nameEn', 'id',
+ model.diagnosisTypesList,
+ (selectedValue) {
+ setState(() {
+ _selectedDiagnosis =
+ selectedValue;
+ });
+ });
+ }
+ : () async {
+ await model.getDiagnosis();
+ if (model.state == ViewState.Idle &&
+ model.diagnosisTypesList
+ .length >
+ 0) {
+ openListDialogField(
+ 'nameEn',
+ 'id',
+ model.diagnosisTypesList,
+ (selectedValue) {
+ setState(() {
+ _selectedDiagnosis =
+ selectedValue;
+ });
+ });
+ } else if (model.state ==
+ ViewState.ErrorLocal) {
+ DrAppToastMsg.showErrorToast(
+ model.error);
+ } else {
+ DrAppToastMsg.showErrorToast(
+ "Empty List");
+ }
+ },
child: TextField(
decoration:
Helpers.textFieldSelectorDecoration(
TranslationBase.of(context)
.diagnosis,
- /* _admissionType != null
- ? _admissionType['DoctorName']
- :*/
- null,
+ _selectedDiagnosis != null
+ ? _selectedDiagnosis['nameEn']
+ : null,
true),
enabled: false,
),
@@ -347,41 +379,48 @@ class _AdmissionRequestSecondScreenState
Container(
height: screenSize.height * 0.070,
child: InkWell(
- onTap:
- /*model.doctorsList != null &&
- model.doctorsList.length > 0
+ onTap: model.allergiesList != null &&
+ model.allergiesList.length > 0
? () {
- ListSelectDialog dialog =
- ListSelectDialog(
- list: model.doctorsList,
- attributeName: 'DoctorName',
- attributeValueId: 'DoctorID',
- okText: TranslationBase.of(context).ok,
- okFunction: (selectedValue) {
- setState(() {
- _selectedDoctor = selectedValue;
- });
- },
- );
- showDialog(
- barrierDismissible: false,
- context: context,
- builder: (BuildContext context) {
- return dialog;
- },
- );
- }
- :*/
- null,
+ openListDialogField('nameEn', 'id',
+ model.allergiesList,
+ (selectedValue) {
+ setState(() {
+ _selectedAllergies =
+ selectedValue;
+ });
+ });
+ }
+ : () async {
+ await model.getAllergies();
+ if (model.state == ViewState.Idle &&
+ model.allergiesList.length >
+ 0) {
+ openListDialogField('nameEn',
+ 'id', model.allergiesList,
+ (selectedValue) {
+ setState(() {
+ _selectedAllergies =
+ selectedValue;
+ });
+ });
+ } else if (model.state ==
+ ViewState.ErrorLocal) {
+ DrAppToastMsg.showErrorToast(
+ model.error);
+ } else {
+ DrAppToastMsg.showErrorToast(
+ "Empty List");
+ }
+ },
child: TextField(
decoration:
Helpers.textFieldSelectorDecoration(
TranslationBase.of(context)
.allergies,
- /* _admissionType != null
- ? _admissionType['DoctorName']
- :*/
- null,
+ _selectedAllergies != null
+ ? _selectedAllergies['nameEn']
+ : null,
true),
enabled: false,
),
@@ -426,4 +465,59 @@ class _AdmissionRequestSecondScreenState
updateDate(picked);
}
}
+
+ void openListDialogField(String attributeName, String attributeValueId,
+ List list, Function(dynamic selectedValue) okFunction) {
+ ListSelectDialog dialog = ListSelectDialog(
+ list: list,
+ attributeName: attributeName,
+ attributeValueId: attributeValueId,
+ usingSearch: true,
+ okText: TranslationBase.of(context).ok,
+ okFunction: (selectedValue) {
+ okFunction(selectedValue);
+ },
+ );
+ showDialog(
+ barrierDismissible: false,
+ context: context,
+ builder: (BuildContext context) {
+ return dialog;
+ },
+ );
+ }
+
+/*
+ onTap: model.wardList != null &&
+ model.wardList.length > 0
+ ? () {
+ openListDialogField('description',
+ 'description', model.wardList,
+ (selectedValue) {
+ setState(() {
+ _selectedWard = selectedValue;
+ });
+ });
+ }
+ : () async {
+ await model.getWards();
+ if (model.state == ViewState.Idle &&
+ model.wardList.length > 0) {
+ openListDialogField('description',
+ 'description', model.wardList,
+ (selectedValue) {
+ setState(() {
+ _selectedWard = selectedValue;
+ });
+ });
+ } else if (model.state ==
+ ViewState.ErrorLocal) {
+ DrAppToastMsg.showErrorToast(
+ model.error);
+ } else {
+ DrAppToastMsg.showErrorToast(
+ "Empty List");
+ }
+ },
+ */
}
diff --git a/lib/screens/patients/profile/referral/my-referral-detail-screen.dart b/lib/screens/patients/profile/referral/my-referral-detail-screen.dart
index 9d3c9f00..433fe232 100644
--- a/lib/screens/patients/profile/referral/my-referral-detail-screen.dart
+++ b/lib/screens/patients/profile/referral/my-referral-detail-screen.dart
@@ -42,7 +42,8 @@ class MyReferralDetailScreen extends StatelessWidget {
builder: (_, model, w) => AppScaffold(
baseViewModel: model,
appBarTitle: TranslationBase.of(context).referPatient,
- body: model.patientArrivalList != null
+ body: model.patientArrivalList != null &&
+ model.patientArrivalList.length > 0
? Column(
children: [
Expanded(
@@ -77,6 +78,7 @@ class MyReferralDetailScreen extends StatelessWidget {
),
),
PatientReferralItemWidget(
+ "${pendingReferral.patientID}",
patientName: pendingReferral.patientName,
referralStatus: null,
isReferredTo: false,
@@ -86,6 +88,7 @@ class MyReferralDetailScreen extends StatelessWidget {
pendingReferral.referredByDoctorInfo,
clinicDescription: null,
remark: pendingReferral.remarksFromSource,
+ referredOn: pendingReferral.referredOn,
),
SizedBox(
child: GridView.count(
@@ -147,8 +150,9 @@ class MyReferralDetailScreen extends StatelessWidget {
hPadding: 8,
vPadding: 12,
handler: () async {
- await model.responseReferral(pendingReferral, true);
- if(model.state == ViewState.ErrorLocal){
+ await model.responseReferral(
+ pendingReferral, true);
+ if (model.state == ViewState.ErrorLocal) {
DrAppToastMsg.showErrorToast(model.error);
}
},
@@ -166,8 +170,9 @@ class MyReferralDetailScreen extends StatelessWidget {
hPadding: 8,
vPadding: 12,
handler: () async {
- await model.responseReferral(pendingReferral, true);
- if(model.state == ViewState.ErrorLocal){
+ await model.responseReferral(
+ pendingReferral, true);
+ if (model.state == ViewState.ErrorLocal) {
DrAppToastMsg.showErrorToast(model.error);
}
},
diff --git a/lib/screens/patients/profile/referral/my-referral-patient-screen.dart b/lib/screens/patients/profile/referral/my-referral-patient-screen.dart
index 311e2f12..ab2beaf8 100644
--- a/lib/screens/patients/profile/referral/my-referral-patient-screen.dart
+++ b/lib/screens/patients/profile/referral/my-referral-patient-screen.dart
@@ -23,8 +23,7 @@ class MyReferralPatientScreen extends StatelessWidget {
builder: (_, model, w) => AppScaffold(
baseViewModel: model,
appBarTitle: TranslationBase.of(context).referPatient,
- body: model.pendingReferral == null ||
- model.pendingReferral.length == 0
+ body: model.pendingReferral == null || model.pendingReferral.length == 0
? Center(
child: AppText(
TranslationBase.of(context).referralEmptyMsg,
@@ -62,6 +61,7 @@ class MyReferralPatientScreen extends StatelessWidget {
...List.generate(
model.pendingReferral.length,
(index) => PatientReferralItemWidget(
+ "${model.pendingReferral[index].patientID}",
patientName: model.pendingReferral[index].patientName,
referralStatus: null,
isReferredTo: false,
@@ -72,13 +72,13 @@ class MyReferralPatientScreen extends StatelessWidget {
clinicDescription: null,
remark:
model.pendingReferral[index].remarksFromSource,
+ referredOn: model.pendingReferral[index].referredOn,
infoIcon: InkWell(
onTap: () {
- Navigator.of(context).pushNamed(
- MY_REFERRAL_DETAIL,
- arguments: {
- 'referral': model.pendingReferral[index]
- });
+ Navigator.of(context)
+ .pushNamed(MY_REFERRAL_DETAIL, arguments: {
+ 'referral': model.pendingReferral[index]
+ });
},
child: Icon(
Icons.info_outline,
diff --git a/lib/screens/patients/profile/referral/refer-patient-screen.dart b/lib/screens/patients/profile/referral/refer-patient-screen.dart
index 2c5311cc..a3d74430 100644
--- a/lib/screens/patients/profile/referral/refer-patient-screen.dart
+++ b/lib/screens/patients/profile/referral/refer-patient-screen.dart
@@ -1,26 +1,22 @@
import 'package:doctor_app_flutter/config/config.dart';
-import 'package:doctor_app_flutter/core/enum/master_lookup_key.dart';
-import 'package:doctor_app_flutter/core/enum/viewstate.dart';
import 'package:doctor_app_flutter/core/viewModel/patient-referral-viewmodel.dart';
-import 'package:doctor_app_flutter/models/patient/PatientArrivalEntity.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/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/patient-referral-item-widget.dart';
import 'package:doctor_app_flutter/widgets/patients/profile/patient-page-header-widget.dart';
import 'package:doctor_app_flutter/widgets/shared/app_buttons_widget.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/app_texts_widget.dart';
import 'package:doctor_app_flutter/widgets/shared/dialogs/dailog-list-select.dart';
+import 'package:doctor_app_flutter/widgets/shared/loader/gif_loader_dialog_utils.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:hexcolor/hexcolor.dart';
-import '../../../QR_reader_screen.dart';
-
class PatientMakeReferralScreen extends StatefulWidget {
// previous design page is: ReferPatientScreen
@override
@@ -74,14 +70,14 @@ class _PatientMakeReferralScreenState extends State {
child: Column(
mainAxisAlignment: MainAxisAlignment.spaceAround,
children: [
- if (model.state == ViewState.BusyLocal)
+ /*if (model.state == ViewState.BusyLocal)
Container(
color: Colors.white,
width: 50,
height: 50,
child: AppLoaderWidget(
containerColor: Colors.white,
- )),
+ )),*/
Column(
children: [
PatientPageHeaderWidget(patient),
@@ -95,17 +91,19 @@ class _PatientMakeReferralScreenState extends State {
model.patientReferral.length == 0
? ReferralForm(model, screenSize)
: PatientReferralItemWidget(
- patientName: model.patientReferral[0].patientName,
- referralStatus: "${model.patientReferral[0].referralStatus}",
- isReferredTo: true,
- isSameBranch: model.patientReferral[0]
- .isReferralDoctorSameBranch,
- referralDoctorName:
- model.patientReferral[0].referredByDoctorInfo,
- clinicDescription: null,
- remark:
- model.patientReferral[0].remarksFromSource
- ),
+ "${model.patientReferral[0].patientID}",
+ patientName: model.patientReferral[0].patientName,
+ referralStatus:
+ "${model.patientReferral[0].referralStatus}",
+ isReferredTo: true,
+ isSameBranch: model
+ .patientReferral[0].isReferralDoctorSameBranch,
+ referralDoctorName:
+ model.patientReferral[0].referredByDoctorInfo,
+ clinicDescription: null,
+ remark: model.patientReferral[0].remarksFromSource,
+ referredOn: model.patientReferral[0].referredOn,
+ ),
],
),
if (model.patientReferral.length == 0)
@@ -124,7 +122,7 @@ class _PatientMakeReferralScreenState extends State {
.makeReferral(
patient,
appointmentDate.toIso8601String(),
- _selectedBranch['ID'],
+ _selectedBranch['facilityId'],
_selectedClinic['ClinicID'],
_selectedDoctor['DoctorID'],
_remarksController.text)
@@ -180,7 +178,12 @@ class _PatientMakeReferralScreenState extends State {
model.getDoctorBranch().then((value) {
_selectedBranch = value;
if (_referTo['id'] == 1) {
- model.getClinics(_selectedBranch['ID']);
+ GifLoaderDialogUtils.showMyDialog(context);
+ model
+ .getClinics(_selectedBranch['facilityId'])
+ .then((_) =>
+ GifLoaderDialogUtils.hideDialog(
+ context));
}
});
});
@@ -196,7 +199,7 @@ class _PatientMakeReferralScreenState extends State {
}
: null,
child: TextField(
- decoration: textFieldSelectorDecoration(
+ decoration: Helpers.textFieldSelectorDecoration(
TranslationBase.of(context).referTo,
_referTo != null ? _referTo['name'] : null,
true),
@@ -217,15 +220,19 @@ class _PatientMakeReferralScreenState extends State {
? () {
ListSelectDialog dialog = ListSelectDialog(
list: model.branchesList,
- attributeName: 'Desciption',
- attributeValueId: 'ID',
+ attributeName: 'facilityName',
+ attributeValueId: 'facilityId',
okText: TranslationBase.of(context).ok,
okFunction: (selectedValue) {
setState(() {
_selectedBranch = selectedValue;
_selectedClinic = null;
_selectedDoctor = null;
- model.getClinics(_selectedBranch['ID']);
+ GifLoaderDialogUtils.showMyDialog(context);
+ model
+ .getClinics(_selectedBranch['facilityId'])
+ .then((_) =>
+ GifLoaderDialogUtils.hideDialog(context));
});
},
);
@@ -239,10 +246,10 @@ class _PatientMakeReferralScreenState extends State {
}
: null,
child: TextField(
- decoration: textFieldSelectorDecoration(
+ decoration: Helpers.textFieldSelectorDecoration(
TranslationBase.of(context).branch,
_selectedBranch != null
- ? _selectedBranch['Desciption']
+ ? _selectedBranch['facilityName']
: null,
true),
enabled: false,
@@ -263,13 +270,19 @@ class _PatientMakeReferralScreenState extends State {
list: model.clinicsList,
attributeName: 'ClinicDescription',
attributeValueId: 'ClinicID',
+ usingSearch: true,
+ hintSearchText: TranslationBase.of(context).clinicSearch,
okText: TranslationBase.of(context).ok,
okFunction: (selectedValue) {
setState(() {
_selectedDoctor = null;
_selectedClinic = selectedValue;
- model.getClinicDoctors(
- _selectedClinic['ClinicID'].toString());
+ GifLoaderDialogUtils.showMyDialog(context);
+ model
+ .getClinicDoctors(
+ _selectedClinic['ClinicID'].toString())
+ .then((_) =>
+ GifLoaderDialogUtils.hideDialog(context));
});
},
);
@@ -283,7 +296,7 @@ class _PatientMakeReferralScreenState extends State {
}
: null,
child: TextField(
- decoration: textFieldSelectorDecoration(
+ decoration: Helpers.textFieldSelectorDecoration(
TranslationBase.of(context).clinic,
_selectedClinic != null
? _selectedClinic['ClinicDescription']
@@ -307,6 +320,8 @@ class _PatientMakeReferralScreenState extends State {
list: model.doctorsList,
attributeName: 'DoctorName',
attributeValueId: 'DoctorID',
+ usingSearch: true,
+ hintSearchText: TranslationBase.of(context).doctorSearch,
okText: TranslationBase.of(context).ok,
okFunction: (selectedValue) {
setState(() {
@@ -324,7 +339,7 @@ class _PatientMakeReferralScreenState extends State {
}
: null,
child: TextField(
- decoration: textFieldSelectorDecoration(
+ decoration: Helpers.textFieldSelectorDecoration(
TranslationBase.of(context).doctor,
_selectedDoctor != null
? _selectedDoctor['DoctorName']
@@ -342,7 +357,7 @@ class _PatientMakeReferralScreenState extends State {
child: InkWell(
onTap: () => _selectDate(context, model),
child: TextField(
- decoration: textFieldSelectorDecoration(
+ decoration: Helpers.textFieldSelectorDecoration(
TranslationBase.of(context).chooseAppointment,
appointmentDate != null
? "${DateUtils.convertDateToFormat(appointmentDate, "yyyy-MM-dd")}"
@@ -361,7 +376,7 @@ class _PatientMakeReferralScreenState extends State {
),
Container(
child: TextField(
- decoration: textFieldSelectorDecoration(
+ decoration: Helpers.textFieldSelectorDecoration(
TranslationBase.of(context).remarks, null, false),
enabled: true,
controller: _remarksController,
@@ -440,49 +455,4 @@ class _PatientMakeReferralScreenState extends State {
});*/
}
}
-
- InputDecoration textFieldSelectorDecoration(
- String hintText, String selectedText, bool isDropDown,
- {Icon suffixIcon}) {
- return InputDecoration(
- focusedBorder: OutlineInputBorder(
- borderSide: BorderSide(color: Color(0xFFCCCCCC), width: 2.0),
- borderRadius: BorderRadius.circular(8),
- ),
- enabledBorder: OutlineInputBorder(
- borderSide: BorderSide(color: Color(0xFFCCCCCC), width: 2.0),
- borderRadius: BorderRadius.circular(8),
- ),
- disabledBorder: OutlineInputBorder(
- borderSide: BorderSide(color: Color(0xFFCCCCCC), width: 2.0),
- borderRadius: BorderRadius.circular(8),
- ),
- hintText: selectedText != null ? selectedText : hintText,
- suffixIcon: isDropDown
- ? suffixIcon != null
- ? suffixIcon
- : Icon(
- Icons.arrow_drop_down,
- color: Colors.black,
- )
- : null,
- hintStyle: TextStyle(
- fontSize: 14,
- color: Colors.grey.shade600,
- ),
- );
- }
-
- BoxDecoration containerBorderDecoration(
- Color containerColor, Color borderColor) {
- return BoxDecoration(
- color: containerColor,
- shape: BoxShape.rectangle,
- borderRadius: BorderRadius.all(Radius.circular(6)),
- border: Border.fromBorderSide(BorderSide(
- color: borderColor,
- width: 2.0,
- )),
- );
- }
}
diff --git a/lib/screens/patients/profile/referral/referred-patient-screen.dart b/lib/screens/patients/profile/referral/referred-patient-screen.dart
index c1880908..323a9a9b 100644
--- a/lib/screens/patients/profile/referral/referred-patient-screen.dart
+++ b/lib/screens/patients/profile/referral/referred-patient-screen.dart
@@ -1,5 +1,6 @@
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/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';
@@ -14,7 +15,7 @@ class ReferredPatientScreen extends StatelessWidget {
onModelReady: (model) => model.getMyReferredPatient(),
builder: (_, model, w) => AppScaffold(
baseViewModel: model,
- appBarTitle: TranslationBase.of(context).referPatient,
+ appBarTitle: TranslationBase.of(context).referredPatient,
body: model.listMyReferredPatientModel == null ||
model.listMyReferredPatientModel.length == 0
? Center(
@@ -45,10 +46,11 @@ class ReferredPatientScreen extends StatelessWidget {
...List.generate(
model.listMyReferredPatientModel.length,
(index) => PatientReferralItemWidget(
+ "${model.getReferredPatientItem(index).patientId}",
patientName:
"${model.getReferredPatientItem(index).firstName} ${model.getReferredPatientItem(index).middleName} ${model.getReferredPatientItem(index).lastName}",
referralStatus:
- "${model.getReferredPatientItem(index).referralStatus}",
+ "${model.getReferralStatusNameByCode(model.getReferredPatientItem(index).referralStatus, context)}",
isReferredTo: true,
isSameBranch: model
.getReferredPatientItem(index)
@@ -62,6 +64,12 @@ class ReferredPatientScreen extends StatelessWidget {
remark: model
.getReferredPatientItem(index)
.referringDoctorRemarks,
+ referredOn: model
+ .getReferredPatientItem(index)
+ .referralDate !=
+ null
+ ? DateUtils.convertDateFromServerFormat(model.getReferredPatientItem(index).referralDate, "dd/MM/yyyy")
+ : null,
),
),
],
diff --git a/lib/screens/patients/profile/vital_sign/vital_sign_details_screen.dart b/lib/screens/patients/profile/vital_sign/vital_sign_details_screen.dart
index ad312625..45cd8d14 100644
--- a/lib/screens/patients/profile/vital_sign/vital_sign_details_screen.dart
+++ b/lib/screens/patients/profile/vital_sign/vital_sign_details_screen.dart
@@ -1,3 +1,4 @@
+import 'package:doctor_app_flutter/config/size_config.dart';
import 'package:doctor_app_flutter/core/viewModel/patient-vital-sign-viewmodel.dart';
import 'package:doctor_app_flutter/lookups/patient_lookup.dart';
import 'package:doctor_app_flutter/models/patient/patiant_info_model.dart';
@@ -9,13 +10,15 @@ 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/transitions/fade_page.dart';
import 'package:flutter/material.dart';
+import 'package:hexcolor/hexcolor.dart';
class VitalSignDetailsScreen extends StatelessWidget {
-
int appointmentNo;
int projectID;
bool isNotOneAppointment;
- VitalSignDetailsScreen({this.appointmentNo, this.projectID,this.isNotOneAppointment=true});
+
+ VitalSignDetailsScreen(
+ {this.appointmentNo, this.projectID, this.isNotOneAppointment = true});
@override
Widget build(BuildContext context) {
@@ -23,10 +26,11 @@ class VitalSignDetailsScreen extends StatelessWidget {
PatiantInformtion patient = routeArgs['patient'];
String from = routeArgs['from'];
String to = routeArgs['to'];
- String imageBasePath = 'assets/images/';
+ String imageBasePath = 'assets/images/';
return BaseView(
- onModelReady: (model) => model.getPatientVitalSignHistory(patient, from, to),
+ onModelReady: (model) =>
+ model.getPatientVitalSignHistory(patient, from, to),
builder: (_, mode, widget) => AppScaffold(
isShowAppBar: true,
baseViewModel: mode,
@@ -38,16 +42,19 @@ class VitalSignDetailsScreen extends StatelessWidget {
Row(
children: [
InkWell(
- onTap: () =>isNotOneAppointment? Navigator.push(
- context,
- FadePage(
- page: VitalSignItemDetailsScreen(
- pageKey: vitalSignDetails.Height,
- pageTitle: TranslationBase.of(context).height,
- vitalList: mode.patientVitalSignsHistory,
- ),
- ),
- ):null,
+ onTap: () => isNotOneAppointment
+ ? Navigator.push(
+ context,
+ FadePage(
+ page: VitalSignItemDetailsScreen(
+ pageKey: vitalSignDetails.Height,
+ pageTitle:
+ TranslationBase.of(context).height,
+ vitalList: mode.patientVitalSignsHistory,
+ ),
+ ),
+ )
+ : null,
child: Container(
child: VitalSignItem(
des: TranslationBase.of(context).height,
@@ -58,16 +65,19 @@ class VitalSignDetailsScreen extends StatelessWidget {
),
),
InkWell(
- onTap: () => isNotOneAppointment ? Navigator.push(
- context,
- FadePage(
- page: VitalSignItemDetailsScreen(
- pageKey: vitalSignDetails.Weight,
- pageTitle: TranslationBase.of(context).weight,
- vitalList: mode.patientVitalSignsHistory,
- ),
- ),
- ):null,
+ onTap: () => isNotOneAppointment
+ ? Navigator.push(
+ context,
+ FadePage(
+ page: VitalSignItemDetailsScreen(
+ pageKey: vitalSignDetails.Weight,
+ pageTitle:
+ TranslationBase.of(context).weight,
+ vitalList: mode.patientVitalSignsHistory,
+ ),
+ ),
+ )
+ : null,
child: VitalSignItem(
des: TranslationBase.of(context).weight,
imagePath: "${imageBasePath}vital_weight.png",
@@ -80,17 +90,20 @@ class VitalSignDetailsScreen extends StatelessWidget {
Row(
children: [
InkWell(
- onTap: () => isNotOneAppointment ? Navigator.push(
- context,
- FadePage(
- page: VitalSignItemDetailsScreen(
- pageKey: vitalSignDetails.BodyMeasurements,
- pageTitle: TranslationBase.of(context)
- .bodyMeasurements,
- vitalList: mode.patientVitalSignsHistory,
- ),
- ),
- ): null,
+ onTap: () => isNotOneAppointment
+ ? Navigator.push(
+ context,
+ FadePage(
+ page: VitalSignItemDetailsScreen(
+ pageKey:
+ vitalSignDetails.BodyMeasurements,
+ pageTitle: TranslationBase.of(context)
+ .bodyMeasurements,
+ vitalList: mode.patientVitalSignsHistory,
+ ),
+ ),
+ )
+ : null,
child: VitalSignItem(
des: TranslationBase.of(context).body,
imagePath: "${imageBasePath}vital_body_mass.png",
@@ -99,21 +112,24 @@ class VitalSignDetailsScreen extends StatelessWidget {
),
),
InkWell(
- onTap: () => isNotOneAppointment ? Navigator.push(
- context,
- FadePage(
- page: VitalSignItemDetailsScreen(
- pageKey: vitalSignDetails.Temperature,
- pageTitle:
- TranslationBase.of(context).temperature,
- vitalList: mode.patientVitalSignsHistory,
- ),
- ),
- ):null,
+ onTap: () => isNotOneAppointment
+ ? Navigator.push(
+ context,
+ FadePage(
+ page: VitalSignItemDetailsScreen(
+ pageKey: vitalSignDetails.Temperature,
+ pageTitle: TranslationBase.of(context)
+ .temperature,
+ vitalList: mode.patientVitalSignsHistory,
+ ),
+ ),
+ )
+ : null,
child: Container(
child: VitalSignItem(
des: TranslationBase.of(context).temperature,
- imagePath: "${imageBasePath}vital_temperature.png",
+ imagePath:
+ "${imageBasePath}vital_temperature.png",
lastVal: mode.temperatureCelcius,
unit: TranslationBase.of(context).tempC,
),
@@ -124,16 +140,19 @@ class VitalSignDetailsScreen extends StatelessWidget {
Row(
children: [
InkWell(
- onTap: () => isNotOneAppointment ? Navigator.push(
- context,
- FadePage(
- page: VitalSignItemDetailsScreen(
- pageKey: vitalSignDetails.heart,
- pageTitle: TranslationBase.of(context).heart,
- vitalList: mode.patientVitalSignsHistory,
- ),
- ),
- ):null,
+ onTap: () => isNotOneAppointment
+ ? Navigator.push(
+ context,
+ FadePage(
+ page: VitalSignItemDetailsScreen(
+ pageKey: vitalSignDetails.heart,
+ pageTitle:
+ TranslationBase.of(context).heart,
+ vitalList: mode.patientVitalSignsHistory,
+ ),
+ ),
+ )
+ : null,
child: VitalSignItem(
des: TranslationBase.of(context).heart,
imagePath: "${imageBasePath}vital_heart_rate.png",
@@ -142,17 +161,19 @@ class VitalSignDetailsScreen extends StatelessWidget {
),
),
InkWell(
- onTap: () => isNotOneAppointment ? Navigator.push(
- context,
- FadePage(
- page: VitalSignItemDetailsScreen(
- pageKey: vitalSignDetails.Respiration,
- pageTitle:
- TranslationBase.of(context).respirationRate,
- vitalList: mode.patientVitalSignsHistory,
- ),
- ),
- ):null,
+ onTap: () => isNotOneAppointment
+ ? Navigator.push(
+ context,
+ FadePage(
+ page: VitalSignItemDetailsScreen(
+ pageKey: vitalSignDetails.Respiration,
+ pageTitle: TranslationBase.of(context)
+ .respirationRate,
+ vitalList: mode.patientVitalSignsHistory,
+ ),
+ ),
+ )
+ : null,
child: VitalSignItem(
des: TranslationBase.of(context).respirationRate,
imagePath: "${imageBasePath}vital_respiration.png",
@@ -166,19 +187,23 @@ class VitalSignDetailsScreen extends StatelessWidget {
mainAxisAlignment: MainAxisAlignment.center,
children: [
InkWell(
- onTap: () => isNotOneAppointment ? Navigator.push(
- context,
- FadePage(
- page: VitalSignItemDetailsScreen(
- pageKey: vitalSignDetails.BloodPressure,
- pageTitle: TranslationBase.of(context).bloodPressure,
- vitalList: mode.patientVitalSignsHistory,
- ),
- ),
- ):null,
+ onTap: () => isNotOneAppointment
+ ? Navigator.push(
+ context,
+ FadePage(
+ page: VitalSignItemDetailsScreen(
+ pageKey: vitalSignDetails.BloodPressure,
+ pageTitle: TranslationBase.of(context)
+ .bloodPressure,
+ vitalList: mode.patientVitalSignsHistory,
+ ),
+ ),
+ )
+ : null,
child: VitalSignItem(
des: TranslationBase.of(context).bloodPressure,
- imagePath: "${imageBasePath}vital_blood-pressure.png",
+ imagePath:
+ "${imageBasePath}vital_blood-pressure.png",
lastVal: mode.bloodPressure,
unit: TranslationBase.of(context).sysDias,
),
@@ -189,7 +214,12 @@ class VitalSignDetailsScreen extends StatelessWidget {
),
)
: Center(
- child: AppText('No Data'),
+ child: AppText(
+ TranslationBase.of(context).vitalSignEmptyMsg,
+ fontWeight: FontWeight.normal,
+ color: HexColor("#B8382B"),
+ fontSize: SizeConfig.textMultiplier * 2.5,
+ ),
),
),
);
diff --git a/lib/screens/prescription/add_prescription_form.dart b/lib/screens/prescription/add_prescription_form.dart
index 1d481904..a8279634 100644
--- a/lib/screens/prescription/add_prescription_form.dart
+++ b/lib/screens/prescription/add_prescription_form.dart
@@ -127,13 +127,7 @@ class _PrescriptionFormWidgetState extends State {
dynamic indication;
dynamic units;
- List strengthList;
- List routeList;
- List frequencyList;
- List durationList;
- List doseTimeList;
List indicationList;
- List unitsList;
String routeInatial = 'By Mouth';
//PatiantInformtion patient;
@@ -142,111 +136,9 @@ class _PrescriptionFormWidgetState extends State {
super.initState();
selectedType = 1;
referToList = List();
- strengthList = List();
- routeList = List();
- frequencyList = List();
- durationList = List();
- doseTimeList = List();
- indicationList = List();
- unitsList = List();
- dynamic unit1 = {"id": 1, "name": "MG"};
- dynamic unit2 = {"id": 2, "name": "MCG"};
- dynamic unit3 = {"id": 3, "name": "GM"};
- dynamic regularOrder = {"id": 1, "name": "regular Order"};
- dynamic urgentOrder = {"id": 2, "name": "urgent Order"};
- dynamic strength1 = {"id": 1, "name": "1"};
- dynamic strength2 = {"id": 2, "name": "2"};
- dynamic strength3 = {"id": 3, "name": "3"};
- dynamic strength4 = {"id": 4, "name": "4"};
- dynamic strength5 = {"id": 5, "name": "5"};
- dynamic strength6 = {"id": 6, "name": "6"};
- dynamic strength7 = {"id": 7, "name": "7"};
- dynamic strength8 = {"id": 8, "name": "8"};
- dynamic strength9 = {"id": 9, "name": "9"};
- dynamic route1 = {"id": 7, "name": "By Mouth"};
- dynamic route2 = {"id": 10, "name": "Inhale by Mouth"};
- dynamic route3 = {"id": 15, "name": "for INJECTION"};
- dynamic route4 = {"id": 17, "name": "Drops"};
- dynamic route5 = {"id": 18, "name": "Rub On"};
- dynamic route6 = {"id": 20, "name": "Spary"};
- dynamic route7 = {"id": 27, "name": "In Both EYES"};
- dynamic route8 = {"id": 28, "name": "In Both Ears"};
- dynamic route9 = {"id": 32, "name": "Intramuscular"};
- dynamic route10 = {"id": 60, "name": "TRANSDERMAL"};
- dynamic route11 = {"id": 59, "name": "OROPHARYNGEAL"};
- dynamic route12 = {"id": 15, "name": "for INJECTION"};
- dynamic route13 = {"id": 58, "name": "SUBCUTANEOUS"};
- dynamic route14 = {"id": 57, "name": "NASOGASTRIC"};
- dynamic route15 = {"id": 56, "name": "IRRIGATION"};
- dynamic route16 = {"id": 55, "name": "INTRAVITREAL"};
- dynamic route17 = {"id": 54, "name": "INTRAVENOUS BOLUS"};
- dynamic route18 = {"id": 51, "name": "EPIDURAL"};
- dynamic route19 = {"id": 47, "name": "Parenteral"};
- dynamic route20 = {"id": 43, "name": "IM"};
- dynamic route21 = {"id": 42, "name": "IV"};
- dynamic route22 = {"id": 41, "name": "Sublingual"};
- dynamic route23 = {"id": 40, "name": "For Nebulization"};
- dynamic route24 = {"id": 39, "name": "Nasal"};
- dynamic route25 = {"id": 37, "name": "Inserted into Vagina"};
- dynamic route26 = {"id": 36, "name": "Inserted into Rectum"};
- dynamic route27 = {"id": 31, "name": "In Each Nostril"};
- dynamic frequency1 = {"id": 2, "name": "2 Times a day"};
- dynamic frequency2 = {"id": 3, "name": "3 Times a day"};
- dynamic frequency3 = {"id": 4, "name": "4 Times a day"};
- dynamic frequency4 = {"id": 8, "name": "As Needed"};
- dynamic frequency5 = {"id": 9, "name": "Bed Time"};
- dynamic frequency6 = {"id": 11, "name": "Every Other Day"};
- dynamic frequency7 = {"id": 29, "name": "Every Eight Hours"};
- dynamic frequency8 = {"id": 34, "name": "As Directed"};
- dynamic frequency9 = {"id": 22, "name": "Once Per Month"};
- dynamic frequency10 = {"id": 2, "name": "3 Times a day"};
- dynamic frequency11 = {"id": 21, "name": "Every 3 hours"};
- dynamic frequency12 = {"id": 20, "name": "Once a Week"};
- dynamic frequency13 = {"id": 12, "name": "Every Half Hour"};
- dynamic frequency14 = {"id": 10, "name": "4 Times a Day"};
- dynamic frequency15 = {"id": 24, "name": "Once Every 2 Months"};
- dynamic frequency16 = {"id": 25, "name": "Every One Hour"};
- dynamic frequency17 = {"id": 26, "name": "Every Two Hours"};
- dynamic frequency18 = {"id": 28, "name": "Every Six Hours"};
+ indicationList = List();
- dynamic duration1 = {"id": 1, "name": "For 1 Day"};
- dynamic duration2 = {"id": 2, "name": "For 2 Days"};
- dynamic duration3 = {"id": 3, "name": "For 3 Days"};
- dynamic duration4 = {"id": 4, "name": "For 4 Days"};
- dynamic duration5 = {"id": 5, "name": "For 5 Days"};
- dynamic duration6 = {"id": 6, "name": "For 6 Days"};
- dynamic duration7 = {"id": 7, "name": "For 7 Days"};
- dynamic duration8 = {"id": 8, "name": "For 8 Days"};
- dynamic duration9 = {"id": 9, "name": "For 9 Days"};
- dynamic duration10 = {"id": 10, "name": "For 10 Days"};
- dynamic duration11 = {"id": 14, "name": "For 14 Days"};
- dynamic duration12 = {"id": 21, "name": "For 21 Days"};
- dynamic duration13 = {"id": 30, "name": "For 30 Days"};
- dynamic duration14 = {"id": 45, "name": "For 45 Days"};
- dynamic duration15 = {"id": 60, "name": "For 60 Days"};
- dynamic duration16 = {"id": 90, "name": "For 90 Days"};
- dynamic doseTime1 = {"id": 1, "name": "Before Meals"};
- dynamic doseTime2 = {"id": 2, "name": "After Meals"};
- dynamic doseTime3 = {"id": 3, "name": "With Meals"};
- dynamic doseTime4 = {"id": 4, "name": "In The Morning"};
- dynamic doseTime5 = {"id": 5, "name": "In the Evening"};
- dynamic doseTime6 = {"id": 6, "name": "After Supper"};
- dynamic doseTime7 = {"id": 7, "name": "With Supper"};
- dynamic doseTime8 = {"id": 8, "name": "Before Breakfast"};
- dynamic doseTime9 = {"id": 9, "name": "In the Afternoon"};
- dynamic doseTime10 = {"id": 10, "name": "While wake"};
- dynamic doseTime11 = {"id": 12, "name": "Any Time"};
- dynamic doseTime12 = {"id": 21, "name": "Bed Time"};
- dynamic doseTime13 = {"id": 13, "name": "30 Minutes Before Meals"};
- dynamic doseTime14 = {"id": 14, "name": "1 Hour Before Meals"};
- dynamic doseTime15 = {"id": 15, "name": "2 Hours After Meal"};
- dynamic doseTime16 = {"id": 16, "name": "After Breakfast"};
- dynamic doseTime17 = {"id": 17, "name": "Before Lunch"};
- dynamic doseTime18 = {"id": 18, "name": "After Lunch"};
- dynamic doseTime19 = {"id": 20, "name": "After Dinner"};
- dynamic doseTime20 = {"id": 21, "name": "Bed Time"};
- dynamic doseTime21 = {"id": 11, "name": "Now"};
dynamic indication1 = {"id": 545, "name": "Gingival Hyperplasia"};
dynamic indication2 = {"id": 546, "name": "Mild Drowsiness"};
dynamic indication3 = {"id": 547, "name": "Hypertrichosis"};
@@ -261,9 +153,6 @@ class _PrescriptionFormWidgetState extends State {
dynamic indication9 = {"id": 554, "name": "Purpuric Dermatitis"};
dynamic indication10 = {"id": 555, "name": "Systemic Lupus Erythematosus"};
- unitsList.add(unit1);
- unitsList.add(unit2);
- unitsList.add(unit3);
indicationList.add(indication1);
indicationList.add(indication2);
indicationList.add(indication3);
@@ -274,102 +163,6 @@ class _PrescriptionFormWidgetState extends State {
indicationList.add(indication8);
indicationList.add(indication9);
indicationList.add(indication10);
-
- doseTimeList.add(doseTime1);
- doseTimeList.add(doseTime2);
- doseTimeList.add(doseTime3);
- doseTimeList.add(doseTime4);
- doseTimeList.add(doseTime5);
- doseTimeList.add(doseTime6);
- doseTimeList.add(doseTime7);
- doseTimeList.add(doseTime8);
- doseTimeList.add(doseTime9);
- doseTimeList.add(doseTime10);
- doseTimeList.add(doseTime11);
- doseTimeList.add(doseTime12);
- doseTimeList.add(doseTime13);
- doseTimeList.add(doseTime14);
- doseTimeList.add(doseTime15);
- doseTimeList.add(doseTime16);
- doseTimeList.add(doseTime17);
- doseTimeList.add(doseTime18);
- doseTimeList.add(doseTime19);
- doseTimeList.add(doseTime20);
- doseTimeList.add(doseTime21);
-
- doseTimeList.add(doseTime12);
- frequencyList.add(frequency1);
- frequencyList.add(frequency2);
- frequencyList.add(frequency3);
- frequencyList.add(frequency4);
- frequencyList.add(frequency5);
- frequencyList.add(frequency6);
- frequencyList.add(frequency7);
- frequencyList.add(frequency8);
- frequencyList.add(frequency9);
- frequencyList.add(frequency10);
- frequencyList.add(frequency11);
- frequencyList.add(frequency12);
- frequencyList.add(frequency13);
- frequencyList.add(frequency14);
- frequencyList.add(frequency15);
- frequencyList.add(frequency16);
- frequencyList.add(frequency17);
- frequencyList.add(frequency18);
- routeList.add(route1);
- routeList.add(route2);
- routeList.add(route3);
- routeList.add(route4);
- routeList.add(route5);
- routeList.add(route6);
- routeList.add(route7);
- routeList.add(route8);
- routeList.add(route9);
- routeList.add(route10);
- routeList.add(route11);
- routeList.add(route12);
- routeList.add(route13);
- routeList.add(route14);
- routeList.add(route15);
- routeList.add(route16);
- routeList.add(route17);
- routeList.add(route18);
- routeList.add(route19);
- routeList.add(route20);
- routeList.add(route21);
- routeList.add(route22);
- routeList.add(route23);
- routeList.add(route24);
- routeList.add(route25);
- routeList.add(route26);
- routeList.add(route27);
- strengthList.add(strength1);
- strengthList.add(strength2);
- strengthList.add(strength3);
- strengthList.add(strength4);
- strengthList.add(strength5);
- strengthList.add(strength6);
- strengthList.add(strength7);
- strengthList.add(strength8);
- strengthList.add(strength9);
- durationList.add(duration1);
- durationList.add(duration2);
- durationList.add(duration3);
- durationList.add(duration4);
- durationList.add(duration5);
- durationList.add(duration6);
- durationList.add(duration7);
- durationList.add(duration8);
- durationList.add(duration9);
- durationList.add(duration10);
- durationList.add(duration11);
- durationList.add(duration12);
- durationList.add(duration13);
- durationList.add(duration14);
- durationList.add(duration15);
- durationList.add(duration16);
- referToList.add(regularOrder);
- referToList.add(urgentOrder);
}
setSelectedType(int val) {
@@ -388,6 +181,12 @@ class _PrescriptionFormWidgetState extends State {
return BaseView(
onModelReady: (model) async {
await model.getMedicationList();
+ await model.getMedicationStrength();
+ await model.getMedicationDuration();
+ await model.getMedicationRoute();
+ await model.getMedicationFrequency();
+ await model.getMedicationDoseTime();
+ await model.getMedicationIndications();
},
builder: (BuildContext context, MedicineViewModel model, Widget child) =>
NetworkBaseView(
@@ -564,12 +363,14 @@ class _PrescriptionFormWidgetState extends State {
MediaQuery.of(context).size.width *
0.350,
child: InkWell(
- onTap: unitsList != null
+ onTap: model.medicationStrengthList !=
+ null
? () {
ListSelectDialog dialog =
ListSelectDialog(
- list: unitsList,
- attributeName: 'name',
+ list: model
+ .medicationStrengthList,
+ attributeName: 'nameEn',
attributeValueId: 'id',
okText: TranslationBase.of(
context)
@@ -596,7 +397,7 @@ class _PrescriptionFormWidgetState extends State {
textFieldSelectorDecoration(
'UNIT Type',
units != null
- ? units['name']
+ ? units['nameEn']
: null,
true),
enabled: false,
@@ -610,12 +411,12 @@ class _PrescriptionFormWidgetState extends State {
Container(
height: screenSize.height * 0.070,
child: InkWell(
- onTap: routeList != null
+ onTap: model.medicationRouteList != null
? () {
ListSelectDialog dialog =
ListSelectDialog(
- list: routeList,
- attributeName: 'name',
+ list: model.medicationRouteList,
+ attributeName: 'nameEn',
attributeValueId: 'id',
okText:
TranslationBase.of(context)
@@ -642,7 +443,9 @@ class _PrescriptionFormWidgetState extends State {
child: TextField(
decoration: textFieldSelectorDecoration(
TranslationBase.of(context).route,
- route != null ? route['name'] : null,
+ route != null
+ ? route['nameEn']
+ : null,
true),
enabled: false,
),
@@ -652,12 +455,13 @@ class _PrescriptionFormWidgetState extends State {
Container(
height: screenSize.height * 0.070,
child: InkWell(
- onTap: frequencyList != null
+ onTap: model.medicationFrequencyList != null
? () {
ListSelectDialog dialog =
ListSelectDialog(
- list: frequencyList,
- attributeName: 'name',
+ list:
+ model.medicationFrequencyList,
+ attributeName: 'nameEn',
attributeValueId: 'id',
okText:
TranslationBase.of(context)
@@ -681,7 +485,7 @@ class _PrescriptionFormWidgetState extends State {
decoration: textFieldSelectorDecoration(
TranslationBase.of(context).frequency,
frequency != null
- ? frequency['name']
+ ? frequency['nameEn']
: null,
true),
enabled: false,
@@ -692,12 +496,13 @@ class _PrescriptionFormWidgetState extends State {
Container(
height: screenSize.height * 0.070,
child: InkWell(
- onTap: doseTimeList != null
+ onTap: model.medicationDoseTimeList != null
? () {
ListSelectDialog dialog =
ListSelectDialog(
- list: doseTimeList,
- attributeName: 'name',
+ list:
+ model.medicationDoseTimeList,
+ attributeName: 'nameEn',
attributeValueId: 'id',
okText:
TranslationBase.of(context)
@@ -721,7 +526,7 @@ class _PrescriptionFormWidgetState extends State {
decoration: textFieldSelectorDecoration(
TranslationBase.of(context).doseTime,
doseTime != null
- ? doseTime['name']
+ ? doseTime['nameEn']
: null,
true),
enabled: false,
@@ -795,12 +600,13 @@ class _PrescriptionFormWidgetState extends State {
Container(
height: screenSize.height * 0.070,
child: InkWell(
- onTap: durationList != null
+ onTap: model.medicationDurationList != null
? () {
ListSelectDialog dialog =
ListSelectDialog(
- list: durationList,
- attributeName: 'name',
+ list:
+ model.medicationDurationList,
+ attributeName: 'nameEn',
attributeValueId: 'id',
okText:
TranslationBase.of(context)
@@ -824,7 +630,7 @@ class _PrescriptionFormWidgetState extends State {
decoration: textFieldSelectorDecoration(
TranslationBase.of(context).duration,
duration != null
- ? duration['name']
+ ? duration['nameEn']
: null,
true),
enabled: false,
diff --git a/lib/screens/prescription/prescription_screen.dart b/lib/screens/prescription/prescription_screen.dart
index 2b71ab8e..c7c4c60e 100644
--- a/lib/screens/prescription/prescription_screen.dart
+++ b/lib/screens/prescription/prescription_screen.dart
@@ -1,29 +1,15 @@
-import 'package:doctor_app_flutter/client/base_app_client.dart';
-import 'package:doctor_app_flutter/config/config.dart';
-import 'package:doctor_app_flutter/config/size_config.dart';
-import 'package:doctor_app_flutter/core/enum/viewstate.dart';
-import 'package:doctor_app_flutter/core/model/post_prescrition_req_model.dart';
import 'package:doctor_app_flutter/core/viewModel/prescription_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/screens/base/base_view.dart';
import 'package:doctor_app_flutter/screens/prescription/add_prescription_form.dart';
-import 'package:doctor_app_flutter/util/dr_app_toast_msg.dart';
+import 'package:doctor_app_flutter/screens/prescription/update_prescription_form.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/patient_profile_widget.dart';
-import 'package:doctor_app_flutter/widgets/patients/profile/profile_medical_info_widget.dart';
-import 'package:doctor_app_flutter/widgets/shared/Text.dart';
-import 'package:doctor_app_flutter/widgets/shared/TextFields.dart';
-import 'package:doctor_app_flutter/widgets/shared/app_buttons_widget.dart';
+import 'package:doctor_app_flutter/widgets/patients/profile/patient-page-header-widget.dart';
import 'package:doctor_app_flutter/widgets/shared/app_scaffold_widget.dart';
-import 'package:doctor_app_flutter/widgets/shared/app_text_form_field.dart';
import 'package:doctor_app_flutter/widgets/shared/app_texts_widget.dart';
-import 'package:doctor_app_flutter/widgets/shared/dialogs/dailog-list-select.dart';
import 'package:doctor_app_flutter/widgets/shared/network_base_view.dart';
import 'package:flutter/material.dart';
-import 'package:flutter/services.dart';
-import 'package:hexcolor/hexcolor.dart';
class NewPrescriptionScreen extends StatefulWidget {
@override
@@ -37,198 +23,10 @@ class _NewPrescriptionScreenState extends State {
int testNum = 0;
int strengthChar;
PatiantInformtion patient;
- dynamic route;
- dynamic doseTime;
- dynamic frequencyUpdate;
- dynamic updatedDuration;
- dynamic units;
-
- List doseTimeList;
- List routeList;
- List frequencyList;
- List durationList;
- List unitsList;
@override
void initState() {
super.initState();
- routeList = List();
- doseTimeList = List();
- frequencyList = List();
- durationList = List();
- unitsList = List();
-
- dynamic unit1 = {"id": 1, "name": "MG"};
- dynamic unit2 = {"id": 2, "name": "MCG"};
- dynamic unit3 = {"id": 3, "name": "GM"};
- dynamic frequency1 = {"id": 2, "name": "2 Times a day"};
- dynamic frequency2 = {"id": 3, "name": "3 Times a day"};
- dynamic frequency3 = {"id": 4, "name": "4 Times a day"};
- dynamic frequency4 = {"id": 8, "name": "As Needed"};
- dynamic frequency5 = {"id": 9, "name": "Bed Time"};
- dynamic frequency6 = {"id": 11, "name": "Every Other Day"};
- dynamic frequency7 = {"id": 29, "name": "Every Eight Hours"};
- dynamic frequency8 = {"id": 34, "name": "As Directed"};
- dynamic frequency9 = {"id": 22, "name": "Once Per Month"};
- dynamic frequency10 = {"id": 2, "name": "3 Times a day"};
- dynamic frequency11 = {"id": 21, "name": "Every 3 hours"};
- dynamic frequency12 = {"id": 20, "name": "Once a Week"};
- dynamic frequency13 = {"id": 12, "name": "Every Half Hour"};
- dynamic frequency14 = {"id": 10, "name": "4 Times a Day"};
- dynamic frequency15 = {"id": 24, "name": "Once Every 2 Months"};
- dynamic frequency16 = {"id": 25, "name": "Every One Hour"};
- dynamic frequency17 = {"id": 26, "name": "Every Two Hours"};
- dynamic frequency18 = {"id": 28, "name": "Every Six Hours"};
- dynamic doseTime1 = {"id": 1, "name": "Before Meals"};
- dynamic doseTime2 = {"id": 2, "name": "After Meals"};
- dynamic doseTime3 = {"id": 3, "name": "With Meals"};
- dynamic doseTime4 = {"id": 4, "name": "In The Morning"};
- dynamic doseTime5 = {"id": 5, "name": "In the Evening"};
- dynamic doseTime6 = {"id": 6, "name": "After Supper"};
- dynamic doseTime7 = {"id": 7, "name": "With Supper"};
- dynamic doseTime8 = {"id": 8, "name": "Before Breakfast"};
- dynamic doseTime9 = {"id": 9, "name": "In the Afternoon"};
- dynamic doseTime10 = {"id": 10, "name": "While wake"};
- dynamic doseTime11 = {"id": 12, "name": "Any Time"};
- dynamic doseTime12 = {"id": 21, "name": "Bed Time"};
- dynamic doseTime13 = {"id": 13, "name": "30 Minutes Before Meals"};
- dynamic doseTime14 = {"id": 14, "name": "1 Hour Before Meals"};
- dynamic doseTime15 = {"id": 15, "name": "2 Hours After Meal"};
- dynamic doseTime16 = {"id": 16, "name": "After Breakfast"};
- dynamic doseTime17 = {"id": 17, "name": "Before Lunch"};
- dynamic doseTime18 = {"id": 18, "name": "After Lunch"};
- dynamic doseTime19 = {"id": 20, "name": "After Dinner"};
- dynamic doseTime20 = {"id": 21, "name": "Bed Time"};
- dynamic doseTime21 = {"id": 11, "name": "Now"};
- dynamic route1 = {"id": 7, "name": "By Mouth"};
- dynamic route2 = {"id": 10, "name": "Inhale by Mouth"};
- dynamic route3 = {"id": 15, "name": "for INJECTION"};
- dynamic route4 = {"id": 17, "name": "Drops"};
- dynamic route5 = {"id": 18, "name": "Rub On"};
- dynamic route6 = {"id": 20, "name": "Spary"};
- dynamic route7 = {"id": 27, "name": "In Both EYES"};
- dynamic route8 = {"id": 28, "name": "In Both Ears"};
- dynamic route9 = {"id": 32, "name": "Intramuscular"};
- dynamic route10 = {"id": 60, "name": "TRANSDERMAL"};
- dynamic route11 = {"id": 59, "name": "OROPHARYNGEAL"};
- dynamic route12 = {"id": 15, "name": "for INJECTION"};
- dynamic route13 = {"id": 58, "name": "SUBCUTANEOUS"};
- dynamic route14 = {"id": 57, "name": "NASOGASTRIC"};
- dynamic route15 = {"id": 56, "name": "IRRIGATION"};
- dynamic route16 = {"id": 55, "name": "INTRAVITREAL"};
- dynamic route17 = {"id": 54, "name": "INTRAVENOUS BOLUS"};
- dynamic route18 = {"id": 51, "name": "EPIDURAL"};
- dynamic route19 = {"id": 47, "name": "Parenteral"};
- dynamic route20 = {"id": 43, "name": "IM"};
- dynamic route21 = {"id": 42, "name": "IV"};
- dynamic route22 = {"id": 41, "name": "Sublingual"};
- dynamic route23 = {"id": 40, "name": "For Nebulization"};
- dynamic route24 = {"id": 39, "name": "Nasal"};
- dynamic route25 = {"id": 37, "name": "Inserted into Vagina"};
- dynamic route26 = {"id": 36, "name": "Inserted into Rectum"};
- dynamic route27 = {"id": 31, "name": "In Each Nostril"};
- dynamic duration1 = {"id": 1, "name": "For 1 Day"};
- dynamic duration2 = {"id": 2, "name": "For 2 Days"};
- dynamic duration3 = {"id": 3, "name": "For 3 Days"};
- dynamic duration4 = {"id": 4, "name": "For 4 Days"};
- dynamic duration5 = {"id": 5, "name": "For 5 Days"};
- dynamic duration6 = {"id": 6, "name": "For 6 Days"};
- dynamic duration7 = {"id": 7, "name": "For 7 Days"};
- dynamic duration8 = {"id": 8, "name": "For 8 Days"};
- dynamic duration9 = {"id": 9, "name": "For 9 Days"};
- dynamic duration10 = {"id": 10, "name": "For 10 Days"};
- dynamic duration11 = {"id": 14, "name": "For 14 Days"};
- dynamic duration12 = {"id": 21, "name": "For 21 Days"};
- dynamic duration13 = {"id": 30, "name": "For 30 Days"};
- dynamic duration14 = {"id": 45, "name": "For 45 Days"};
- dynamic duration15 = {"id": 60, "name": "For 60 Days"};
- dynamic duration16 = {"id": 90, "name": "For 90 Days"};
-
- durationList.add(duration1);
- durationList.add(duration2);
- durationList.add(duration3);
- durationList.add(duration4);
- durationList.add(duration5);
- durationList.add(duration6);
- durationList.add(duration7);
- durationList.add(duration8);
- durationList.add(duration9);
- durationList.add(duration10);
- durationList.add(duration11);
- durationList.add(duration12);
- durationList.add(duration13);
- durationList.add(duration14);
- durationList.add(duration15);
- durationList.add(duration16);
- frequencyList.add(frequency1);
- frequencyList.add(frequency2);
- frequencyList.add(frequency3);
- frequencyList.add(frequency4);
- frequencyList.add(frequency5);
- frequencyList.add(frequency6);
- frequencyList.add(frequency7);
- frequencyList.add(frequency8);
- frequencyList.add(frequency9);
- frequencyList.add(frequency10);
- frequencyList.add(frequency11);
- frequencyList.add(frequency12);
- frequencyList.add(frequency13);
- frequencyList.add(frequency14);
- frequencyList.add(frequency15);
- frequencyList.add(frequency16);
- frequencyList.add(frequency17);
- frequencyList.add(frequency18);
- doseTimeList.add(doseTime1);
- doseTimeList.add(doseTime2);
- doseTimeList.add(doseTime3);
- doseTimeList.add(doseTime4);
- doseTimeList.add(doseTime5);
- doseTimeList.add(doseTime6);
- doseTimeList.add(doseTime7);
- doseTimeList.add(doseTime8);
- doseTimeList.add(doseTime9);
- doseTimeList.add(doseTime10);
- doseTimeList.add(doseTime11);
- doseTimeList.add(doseTime12);
- doseTimeList.add(doseTime13);
- doseTimeList.add(doseTime14);
- doseTimeList.add(doseTime15);
- doseTimeList.add(doseTime16);
- doseTimeList.add(doseTime17);
- doseTimeList.add(doseTime18);
- doseTimeList.add(doseTime19);
- doseTimeList.add(doseTime20);
- doseTimeList.add(doseTime21);
- routeList.add(route1);
- routeList.add(route2);
- routeList.add(route3);
- routeList.add(route4);
- routeList.add(route5);
- routeList.add(route6);
- routeList.add(route7);
- routeList.add(route8);
- routeList.add(route9);
- routeList.add(route10);
- routeList.add(route11);
- routeList.add(route12);
- routeList.add(route13);
- routeList.add(route14);
- routeList.add(route15);
- routeList.add(route16);
- routeList.add(route17);
- routeList.add(route18);
- routeList.add(route19);
- routeList.add(route20);
- routeList.add(route21);
- routeList.add(route22);
- routeList.add(route23);
- routeList.add(route24);
- routeList.add(route25);
- routeList.add(route26);
- routeList.add(route27);
- unitsList.add(unit1);
- unitsList.add(unit2);
- unitsList.add(unit3);
}
Widget build(BuildContext context) {
@@ -248,61 +46,7 @@ class _NewPrescriptionScreenState extends State {
child: Container(
child: Column(
children: [
- Padding(
- padding: EdgeInsets.all(8.0),
- child: Row(
- children: [
- AvatarWidget(
- Icon(
- patient.genderDescription == "Male"
- ? DoctorApp.male
- : DoctorApp.female_icon,
- size: 70,
- color: Colors.white,
- ),
- ),
- SizedBox(
- width: 20,
- ),
- Column(
- crossAxisAlignment:
- CrossAxisAlignment.start,
- children: [
- AppText(
- patient.firstName +
- ' ' +
- patient.lastName,
- color: Colors.black,
- fontWeight: FontWeight.bold,
- ),
- //if (model.prescriptionList.length > 0)
- Row(
- children: [
- AppText(
- TranslationBase.of(context).age2,
- color: Colors.black,
- fontWeight: FontWeight.bold,
- ),
- SizedBox(
- width: 5.0,
- ),
- AppText(
- patient.age.toString(),
- color: Colors.black,
- fontWeight: FontWeight.normal,
- ),
- ],
- ),
- AppText(
- "ALLERGIC TO: FOOD, ASPIRIN",
- color: Color(0xFFB9382C),
- fontWeight: FontWeight.bold,
- ),
- ],
- )
- ],
- ),
- ),
+ PatientPageHeaderWidget(patient),
Divider(
height: 1.0,
thickness: 1.0,
@@ -435,7 +179,6 @@ class _NewPrescriptionScreenState extends State {
model.prescriptionList[0]
.rowcount,
(index) => Container(
- //height: 240,
child: Column(
children: [
Row(
@@ -489,7 +232,7 @@ class _NewPrescriptionScreenState extends State {
context)
.size
.height *
- 0.295,
+ 0.3019,
width: MediaQuery.of(
context)
.size
@@ -612,6 +355,14 @@ class _NewPrescriptionScreenState extends State {
),
Row(
children: [
+ AppText(
+ TranslationBase.of(context)
+ .doctorName +
+ ": ",
+ fontWeight:
+ FontWeight
+ .w600,
+ ),
Expanded(
child:
AppText(
@@ -818,511 +569,4 @@ class _NewPrescriptionScreenState extends State {
});
}
}
-
- void updatePrescriptionForm(
- {context,
- String drugName,
- int drugId,
- String remarks,
- PrescriptionViewModel model,
- PatiantInformtion patient,
- String rouat,
- String frequency,
- String dose,
- String duration,
- String doseStreangth,
- String doseUnit,
- String enteredRemarks,
- String startDate}) {
- TextEditingController remarksController = TextEditingController();
- TextEditingController doseController = TextEditingController();
- TextEditingController frequencyController = TextEditingController();
- TextEditingController routeController = TextEditingController();
- showModalBottomSheet(
- context: context,
- isScrollControlled: true,
- builder: (BuildContext context) {
- return StatefulBuilder(builder: (BuildContext context,
- StateSetter setState /*You can rename this!*/) {
- return DraggableScrollableSheet(
- initialChildSize: 0.90,
- maxChildSize: 0.90,
- minChildSize: 0.6,
- builder:
- (BuildContext context, ScrollController scrollController) {
- return Container(
- height: MediaQuery.of(context).size.height * 1.0,
- child: Form(
- child: Padding(
- padding: EdgeInsets.symmetric(
- horizontal: 20.0, vertical: 12.0),
- child: Column(
- crossAxisAlignment: CrossAxisAlignment.start,
- children: [
- AppText(
- drugName.toUpperCase(),
- fontWeight: FontWeight.w900,
- ),
- SizedBox(
- height: 10.0,
- ),
- Column(
- children: [
- Container(
- height: MediaQuery.of(context).size.height *
- 0.070,
- width: double.infinity,
- child: Row(
- children: [
- Container(
- width: MediaQuery.of(context)
- .size
- .width *
- 0.550,
- child: TextFields(
- inputFormatters: [
- LengthLimitingTextInputFormatter(
- 4)
- ],
- hintText:
- TranslationBase.of(context)
- .strength,
- controller: strengthController,
- keyboardType: TextInputType.number,
- onChanged: (String value) {
- setState(() {
- strengthChar = value.length;
- });
- if (strengthChar >= 4) {
- DrAppToastMsg.showErrorToast(
- "Only 4 Digits allowed for strength");
- }
- },
- // validator: (value) {
- // if (value.isEmpty &&
- // strengthController.text.length >
- // 4)
- // return TranslationBase.of(context)
- // .emptyMessage;
- // else
- // return null;
- // },
- ),
- ),
- SizedBox(
- width: 10.0,
- ),
- Container(
- width: MediaQuery.of(context)
- .size
- .width *
- 0.3200,
- child: InkWell(
- onTap: unitsList != null
- ? () {
- ListSelectDialog dialog =
- ListSelectDialog(
- list: unitsList,
- attributeName: 'name',
- attributeValueId: 'id',
- okText:
- TranslationBase.of(
- context)
- .ok,
- okFunction:
- (selectedValue) {
- setState(() {
- units = selectedValue;
- });
- },
- );
- showDialog(
- barrierDismissible: false,
- context: context,
- builder: (BuildContext
- context) {
- return dialog;
- },
- );
- }
- : null,
- child: TextField(
- decoration:
- textFieldSelectorDecoration(
- 'UNIT Type',
- units != null
- ? units['name']
- : null,
- true),
- enabled: false,
- ),
- ),
- ),
- ],
- ),
- ),
- Container(
- height: MediaQuery.of(context).size.height *
- 0.070,
- child: InkWell(
- onTap: routeList != null
- ? () {
- ListSelectDialog dialog =
- ListSelectDialog(
- list: routeList,
- attributeName: 'name',
- attributeValueId: 'id',
- okText:
- TranslationBase.of(context)
- .ok,
- okFunction: (selectedValue) {
- setState(() {
- route = selectedValue;
- });
- if (route == null) {
- route = route['id'];
- }
- },
- );
- showDialog(
- barrierDismissible: false,
- context: context,
- builder:
- (BuildContext context) {
- return dialog;
- },
- );
- }
- : null,
- child: TextField(
- decoration: textFieldSelectorDecoration(
- TranslationBase.of(context).route,
- route != null
- ? route['name']
- : null,
- true),
- enabled: false,
- ),
- ),
- ),
- SizedBox(
- height: 12.0,
- ),
- Container(
- height: MediaQuery.of(context).size.height *
- 0.070,
- child: InkWell(
- onTap: doseTimeList != null
- ? () {
- ListSelectDialog dialog =
- ListSelectDialog(
- list: doseTimeList,
- attributeName: 'name',
- attributeValueId: 'id',
- okText:
- TranslationBase.of(context)
- .ok,
- okFunction: (selectedValue) {
- setState(() {
- doseTime = selectedValue;
- });
- },
- );
- showDialog(
- barrierDismissible: false,
- context: context,
- builder:
- (BuildContext context) {
- return dialog;
- },
- );
- }
- : null,
- child: TextField(
- decoration: textFieldSelectorDecoration(
- TranslationBase.of(context)
- .doseTime,
- doseTime != null
- ? doseTime['name']
- : null,
- true),
- enabled: false,
- ),
- ),
- ),
- SizedBox(
- height: 12.0,
- ),
- Container(
- height: MediaQuery.of(context).size.height *
- 0.070,
- child: InkWell(
- onTap: frequencyList != null
- ? () {
- ListSelectDialog dialog =
- ListSelectDialog(
- list: frequencyList,
- attributeName: 'name',
- attributeValueId: 'id',
- okText:
- TranslationBase.of(context)
- .ok,
- okFunction: (selectedValue) {
- setState(() {
- frequencyUpdate =
- selectedValue;
- });
- },
- );
- showDialog(
- barrierDismissible: false,
- context: context,
- builder:
- (BuildContext context) {
- return dialog;
- },
- );
- }
- : null,
- child: TextField(
- decoration: textFieldSelectorDecoration(
- TranslationBase.of(context)
- .frequency,
- frequencyUpdate != null
- ? frequencyUpdate['name']
- : null,
- true),
- enabled: false,
- ),
- ),
- ),
- SizedBox(
- height: 12.0,
- ),
- Container(
- height: MediaQuery.of(context).size.height *
- 0.070,
- child: InkWell(
- onTap: durationList != null
- ? () {
- ListSelectDialog dialog =
- ListSelectDialog(
- list: durationList,
- attributeName: 'name',
- attributeValueId: 'id',
- okText:
- TranslationBase.of(context)
- .ok,
- okFunction: (selectedValue) {
- setState(() {
- updatedDuration =
- selectedValue;
- });
- },
- );
- showDialog(
- barrierDismissible: false,
- context: context,
- builder:
- (BuildContext context) {
- return dialog;
- },
- );
- }
- : null,
- child: TextField(
- decoration: textFieldSelectorDecoration(
- TranslationBase.of(context)
- .duration,
- updatedDuration != null
- ? updatedDuration['name']
- .toString()
- : null,
- true),
- enabled: false,
- ),
- ),
- ),
- SizedBox(
- height: 12.0,
- ),
- Container(
- decoration: BoxDecoration(
- borderRadius: BorderRadius.all(
- Radius.circular(6.0)),
- border: Border.all(
- width: 1.0,
- color: HexColor("#CCCCCC"))),
- child: TextFields(
- hintText: remarks,
- controller: remarksController,
- maxLines: 7,
- minLines: 4,
- ),
- ),
- SizedBox(
- height: 12.0,
- ),
- SizedBox(
- height: MediaQuery.of(context).size.height *
- 0.12,
- ),
- Container(
- margin: EdgeInsets.all(
- SizeConfig.widthMultiplier * 2),
- child: Wrap(
- alignment: WrapAlignment.center,
- children: [
- AppButton(
- title: 'update prescription'
- .toUpperCase(),
- onPressed: () {
- updatePrescription(
- newDoseStreangth:
- strengthController
- .text.isNotEmpty
- ? strengthController
- .text
- : doseStreangth,
- newUnit: units != null
- ? units['id'].toString()
- : doseUnit,
- doseUnit: doseUnit,
- doseStreangth: doseStreangth,
- duration: duration,
- startDate: startDate,
- doseId: dose,
- frequencyId: frequency,
- routeId: rouat,
- patient: patient,
- model: model,
- newDuration: updatedDuration !=
- null
- ? updatedDuration['id']
- .toString()
- : duration,
- drugId: drugId,
- remarks: remarksController.text,
- route: route != null
- ? route['id'].toString()
- : rouat,
- frequency: frequencyUpdate != null
- ? frequencyUpdate['id']
- .toString()
- : frequency,
- dose: doseTime != null
- ? doseTime['id'].toString()
- : dose,
- enteredRemarks: enteredRemarks);
- Navigator.pop(context);
- },
- ),
- ],
- ),
- ),
- ],
- ),
- ],
- ),
- ),
- ));
- });
- });
- });
- }
-
- updatePrescription(
- {PrescriptionViewModel model,
- int drugId,
- String frequencyId,
- String remarks,
- String dose,
- String doseId,
- String frequency,
- String route,
- String routeId,
- String startDate,
- String doseUnit,
- String doseStreangth,
- String newDoseStreangth,
- String duration,
- String newDuration,
- String newUnit,
- String enteredRemarks,
- PatiantInformtion patient}) async {
- //PrescriptionViewModel model = PrescriptionViewModel();
- PostPrescriptionReqModel updatePrescriptionReqModel =
- new PostPrescriptionReqModel();
- List sss = List();
-
- updatePrescriptionReqModel.appointmentNo = patient.appointmentNo;
- updatePrescriptionReqModel.clinicID = patient.clinicId;
- updatePrescriptionReqModel.episodeID = patient.episodeNo;
- updatePrescriptionReqModel.patientMRN = patient.patientMRN;
-
- sss.add(PrescriptionRequestModel(
- covered: true,
- dose: newDoseStreangth.isNotEmpty
- ? int.parse(newDoseStreangth)
- : int.parse(
- doseStreangth), //frequency.isNotEmpty ? int.parse(dose) : 1,
- itemId: drugId,
- doseUnitId:
- newUnit.isNotEmpty ? int.parse(newUnit) : int.parse(doseUnit),
- route: route.isNotEmpty ? int.parse(route) : int.parse(routeId),
- frequency: frequency.isNotEmpty
- ? int.parse(frequency)
- : int.parse(frequencyId),
- remarks: remarks.isEmpty ? enteredRemarks : remarks,
- approvalRequired: true,
- icdcode10Id: "test2",
- doseTime: dose.isNotEmpty ? int.parse(dose) : int.parse(doseId),
- duration: newDuration.isNotEmpty
- ? int.parse(newDuration)
- : int.parse(duration),
- doseStartDate: startDate));
- updatePrescriptionReqModel.prescriptionRequestModel = sss;
- //postProcedureReqModel.procedures = controlsProcedure;
-
- await model.updatePrescription(
- updatePrescriptionReqModel, patient.patientMRN);
-
- if (model.state == ViewState.ErrorLocal) {
- helpers.showErrorToast(model.error);
- } else if (model.state == ViewState.Idle) {
- DrAppToastMsg.showSuccesToast('Medication has been updated');
- }
- }
-
- InputDecoration textFieldSelectorDecoration(
- String hintText, String selectedText, bool isDropDown,
- {Icon suffixIcon}) {
- return InputDecoration(
- focusedBorder: OutlineInputBorder(
- borderSide: BorderSide(color: Color(0xFFCCCCCC), width: 2.0),
- borderRadius: BorderRadius.circular(8),
- ),
- enabledBorder: OutlineInputBorder(
- borderSide: BorderSide(color: Color(0xFFCCCCCC), width: 2.0),
- borderRadius: BorderRadius.circular(8),
- ),
- disabledBorder: OutlineInputBorder(
- borderSide: BorderSide(color: Color(0xFFCCCCCC), width: 2.0),
- borderRadius: BorderRadius.circular(8),
- ),
- hintText: selectedText != null ? selectedText : hintText,
- suffixIcon: isDropDown
- ? suffixIcon != null
- ? suffixIcon
- : Icon(
- Icons.arrow_drop_down,
- color: Colors.black,
- )
- : null,
- hintStyle: TextStyle(
- fontSize: 14,
- color: Colors.grey.shade600,
- ),
- );
- }
}
diff --git a/lib/screens/prescription/update_prescription_form.dart b/lib/screens/prescription/update_prescription_form.dart
new file mode 100644
index 00000000..5c7c6e76
--- /dev/null
+++ b/lib/screens/prescription/update_prescription_form.dart
@@ -0,0 +1,624 @@
+import 'package:doctor_app_flutter/client/base_app_client.dart';
+import 'package:doctor_app_flutter/config/size_config.dart';
+import 'package:doctor_app_flutter/core/enum/viewstate.dart';
+import 'package:doctor_app_flutter/core/model/post_prescrition_req_model.dart';
+import 'package:doctor_app_flutter/core/viewModel/medicine_view_model.dart';
+import 'package:doctor_app_flutter/core/viewModel/prescription_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/util/dr_app_toast_msg.dart';
+import 'package:doctor_app_flutter/util/translations_delegate_base.dart';
+import 'package:doctor_app_flutter/widgets/shared/TextFields.dart';
+import 'package:doctor_app_flutter/widgets/shared/app_buttons_widget.dart';
+import 'package:doctor_app_flutter/widgets/shared/app_texts_widget.dart';
+import 'package:doctor_app_flutter/widgets/shared/dialogs/dailog-list-select.dart';
+import 'package:doctor_app_flutter/widgets/shared/network_base_view.dart';
+import 'package:flutter/cupertino.dart';
+import 'package:flutter/material.dart';
+import 'package:flutter/services.dart';
+import 'package:hexcolor/hexcolor.dart';
+
+class UpdatePrescriptionForm extends StatefulWidget {
+ final String drugName;
+ final String doseStreangth;
+ final int drugId;
+ final String remarks;
+ final PatiantInformtion patient;
+ final String duration;
+ final String route;
+ final String dose;
+ final String doseUnit;
+ final String enteredRemarks;
+ final String startDate;
+ final String frequency;
+ final PrescriptionViewModel model;
+
+ UpdatePrescriptionForm(
+ {this.drugName,
+ this.doseStreangth,
+ this.drugId,
+ this.remarks,
+ this.patient,
+ this.duration,
+ this.route,
+ this.dose,
+ this.startDate,
+ this.doseUnit,
+ this.enteredRemarks,
+ this.frequency,
+ this.model});
+ @override
+ _UpdatePrescriptionFormState createState() => _UpdatePrescriptionFormState();
+}
+
+class _UpdatePrescriptionFormState extends State {
+ TextEditingController strengthController = TextEditingController();
+ TextEditingController remarksController = TextEditingController();
+ int testNum = 0;
+ int strengthChar;
+ PatiantInformtion patient;
+ dynamic route;
+ dynamic doseTime;
+ dynamic frequencyUpdate;
+ dynamic updatedDuration;
+ dynamic units;
+
+ @override
+ void initState() {
+ super.initState();
+ }
+
+ @override
+ Widget build(BuildContext context) {
+ return StatefulBuilder(builder:
+ (BuildContext context, StateSetter setState /*You can rename this!*/) {
+ return BaseView(
+ onModelReady: (model) async {
+ await model.getMedicationList();
+ await model.getMedicationStrength();
+ await model.getMedicationDuration();
+ await model.getMedicationRoute();
+ await model.getMedicationFrequency();
+ await model.getMedicationDoseTime();
+ await model.getMedicationIndications();
+ route = model.getLookupById(model.medicationRouteList, widget.route);
+ doseTime =
+ model.getLookupById(model.medicationDoseTimeList, widget.dose);
+ updatedDuration = model.getLookupById(
+ model.medicationDurationList, widget.duration);
+ units = model.getLookupById(
+ model.medicationStrengthList, widget.doseUnit);
+ frequencyUpdate = model.getLookupById(
+ model.medicationFrequencyList, widget.frequency);
+ },
+ builder:
+ (BuildContext context, MedicineViewModel model, Widget child) =>
+ NetworkBaseView(
+ baseViewModel: model,
+ child: DraggableScrollableSheet(
+ initialChildSize: 0.90,
+ maxChildSize: 0.90,
+ minChildSize: 0.6,
+ builder:
+ (BuildContext context, ScrollController scrollController) {
+ return Container(
+ height: MediaQuery.of(context).size.height * 1.0,
+ child: Form(
+ child: Padding(
+ padding: EdgeInsets.symmetric(
+ horizontal: 20.0, vertical: 12.0),
+ child: Column(
+ crossAxisAlignment: CrossAxisAlignment.start,
+ children: [
+ AppText(
+ widget.drugName.toUpperCase(),
+ fontWeight: FontWeight.w900,
+ ),
+ SizedBox(
+ height: 10.0,
+ ),
+ Column(
+ children: [
+ Container(
+ height: MediaQuery.of(context).size.height *
+ 0.060,
+ width: double.infinity,
+ child: Row(
+ children: [
+ Container(
+ width:
+ MediaQuery.of(context).size.width *
+ 0.500,
+ child: TextFields(
+ inputFormatters: [
+ LengthLimitingTextInputFormatter(4)
+ ],
+ hintText: TranslationBase.of(context)
+ .strength,
+ controller: strengthController,
+ keyboardType: TextInputType.number,
+ onChanged: (String value) {
+ setState(() {
+ strengthChar = value.length;
+ });
+ if (strengthChar >= 4) {
+ DrAppToastMsg.showErrorToast(
+ "Only 4 Digits allowed for strength");
+ }
+ },
+ // validator: (value) {
+ // if (value.isEmpty &&
+ // strengthController.text.length >
+ // 4)
+ // return TranslationBase.of(context)
+ // .emptyMessage;
+ // else
+ // return null;
+ // },
+ ),
+ ),
+ SizedBox(
+ width: 10.0,
+ ),
+ Container(
+ width:
+ MediaQuery.of(context).size.width *
+ 0.3700,
+ child: InkWell(
+ onTap: model.medicationStrengthList !=
+ null
+ ? () {
+ ListSelectDialog dialog =
+ ListSelectDialog(
+ list: model
+ .medicationStrengthList,
+ attributeName: 'nameEn',
+ attributeValueId: 'id',
+ okText: TranslationBase.of(
+ context)
+ .ok,
+ okFunction:
+ (selectedValue) {
+ setState(() {
+ units = selectedValue;
+ });
+ },
+ );
+ showDialog(
+ barrierDismissible: false,
+ context: context,
+ builder:
+ (BuildContext context) {
+ return dialog;
+ },
+ );
+ }
+ : null,
+ child: TextField(
+ decoration:
+ textFieldSelectorDecoration(
+ 'UNIT Type',
+ units != null
+ ? units['nameEn']
+ : null,
+ true),
+ enabled: false,
+ ),
+ ),
+ ),
+ ],
+ ),
+ ),
+ SizedBox(
+ height: 12,
+ ),
+ Container(
+ height: MediaQuery.of(context).size.height *
+ 0.070,
+ child: InkWell(
+ onTap: model.medicationRouteList != null
+ ? () {
+ ListSelectDialog dialog =
+ ListSelectDialog(
+ list: model.medicationRouteList,
+ attributeName: 'nameEn',
+ attributeValueId: 'id',
+ okText:
+ TranslationBase.of(context)
+ .ok,
+ okFunction: (selectedValue) {
+ setState(() {
+ route = selectedValue;
+ });
+ if (route == null) {
+ route = route['id'];
+ }
+ },
+ );
+ showDialog(
+ barrierDismissible: false,
+ context: context,
+ builder: (BuildContext context) {
+ return dialog;
+ },
+ );
+ }
+ : null,
+ child: TextField(
+ decoration: textFieldSelectorDecoration(
+ 'Route',
+ route != null
+ ? route['nameEn']
+ : null,
+ true),
+ enabled: false,
+ ),
+ ),
+ ),
+ SizedBox(
+ height: 12.0,
+ ),
+ Container(
+ height: MediaQuery.of(context).size.height *
+ 0.070,
+ child: InkWell(
+ onTap: model.medicationDoseTimeList != null
+ ? () {
+ ListSelectDialog dialog =
+ ListSelectDialog(
+ list:
+ model.medicationDoseTimeList,
+ attributeName: 'nameEn',
+ attributeValueId: 'id',
+ okText:
+ TranslationBase.of(context)
+ .ok,
+ okFunction: (selectedValue) {
+ setState(() {
+ doseTime = selectedValue;
+ });
+ },
+ );
+ showDialog(
+ barrierDismissible: false,
+ context: context,
+ builder: (BuildContext context) {
+ return dialog;
+ },
+ );
+ }
+ : null,
+ child: TextField(
+ decoration: textFieldSelectorDecoration(
+ TranslationBase.of(context).doseTime,
+ doseTime != null
+ ? doseTime['nameEn']
+ : null,
+ true),
+ enabled: false,
+ ),
+ ),
+ ),
+ SizedBox(
+ height: 12.0,
+ ),
+ Container(
+ height: MediaQuery.of(context).size.height *
+ 0.070,
+ child: InkWell(
+ onTap: model.medicationFrequencyList != null
+ ? () {
+ ListSelectDialog dialog =
+ ListSelectDialog(
+ list:
+ model.medicationFrequencyList,
+ attributeName: 'nameEn',
+ attributeValueId: 'id',
+ okText:
+ TranslationBase.of(context)
+ .ok,
+ okFunction: (selectedValue) {
+ setState(() {
+ frequencyUpdate =
+ selectedValue;
+ });
+ },
+ );
+ showDialog(
+ barrierDismissible: false,
+ context: context,
+ builder: (BuildContext context) {
+ return dialog;
+ },
+ );
+ }
+ : null,
+ child: TextField(
+ decoration: textFieldSelectorDecoration(
+ TranslationBase.of(context).frequency,
+ frequencyUpdate != null
+ ? frequencyUpdate['nameEn']
+ : null,
+ true),
+ enabled: false,
+ ),
+ ),
+ ),
+ SizedBox(
+ height: 12.0,
+ ),
+ Container(
+ height: MediaQuery.of(context).size.height *
+ 0.070,
+ child: InkWell(
+ onTap: model.medicationDurationList != null
+ ? () {
+ ListSelectDialog dialog =
+ ListSelectDialog(
+ list:
+ model.medicationDurationList,
+ attributeName: 'nameEn',
+ attributeValueId: 'id',
+ okText:
+ TranslationBase.of(context)
+ .ok,
+ okFunction: (selectedValue) {
+ setState(() {
+ updatedDuration =
+ selectedValue;
+ });
+ },
+ );
+ showDialog(
+ barrierDismissible: false,
+ context: context,
+ builder: (BuildContext context) {
+ return dialog;
+ },
+ );
+ }
+ : null,
+ child: TextField(
+ decoration: textFieldSelectorDecoration(
+ TranslationBase.of(context).duration,
+ updatedDuration != null
+ ? updatedDuration['nameEn']
+ .toString()
+ : null,
+ true),
+ enabled: false,
+ ),
+ ),
+ ),
+ SizedBox(
+ height: 12.0,
+ ),
+ Container(
+ decoration: BoxDecoration(
+ borderRadius: BorderRadius.all(
+ Radius.circular(6.0)),
+ border: Border.all(
+ width: 1.0,
+ color: HexColor("#CCCCCC"))),
+ child: TextFields(
+ hintText: widget.remarks,
+ controller: remarksController,
+ maxLines: 7,
+ minLines: 4,
+ ),
+ ),
+ SizedBox(
+ height: 12.0,
+ ),
+ SizedBox(
+ height:
+ MediaQuery.of(context).size.height * 0.12,
+ ),
+ Container(
+ margin: EdgeInsets.all(
+ SizeConfig.widthMultiplier * 2),
+ child: Wrap(
+ alignment: WrapAlignment.center,
+ children: [
+ AppButton(
+ title:
+ 'update prescription'.toUpperCase(),
+ onPressed: () {
+ updatePrescription(
+ newDoseStreangth:
+ strengthController
+ .text.isNotEmpty
+ ? strengthController.text
+ : widget.doseStreangth,
+ newUnit: units !=
+ null
+ ? units['id'].toString()
+ : widget.doseUnit,
+ doseUnit: widget.doseUnit,
+ doseStreangth: widget
+ .doseStreangth,
+ duration: widget.duration,
+ startDate: widget.startDate,
+ doseId: widget.dose,
+ frequencyId: widget.frequency,
+ routeId: widget.route,
+ patient: widget.patient,
+ model: widget.model,
+ newDuration:
+ updatedDuration !=
+ null
+ ? updatedDuration[
+ 'id']
+ .toString()
+ : widget.duration,
+ drugId: widget.drugId,
+ remarks: remarksController.text,
+ route: route !=
+ null
+ ? route['id'].toString()
+ : widget.route,
+ frequency:
+ frequencyUpdate !=
+ null
+ ? frequencyUpdate['id']
+ .toString()
+ : widget.frequency,
+ dose: doseTime != null
+ ? doseTime['id'].toString()
+ : widget.dose,
+ enteredRemarks:
+ widget.enteredRemarks);
+ Navigator.pop(context);
+ },
+ ),
+ ],
+ ),
+ ),
+ ],
+ ),
+ ],
+ ),
+ ),
+ ));
+ }),
+ ),
+ );
+ });
+ }
+
+ InputDecoration textFieldSelectorDecoration(
+ String hintText, String selectedText, bool isDropDown,
+ {Icon suffixIcon}) {
+ return InputDecoration(
+ focusedBorder: OutlineInputBorder(
+ borderSide: BorderSide(color: Color(0xFFCCCCCC), width: 2.0),
+ borderRadius: BorderRadius.circular(8),
+ ),
+ enabledBorder: OutlineInputBorder(
+ borderSide: BorderSide(color: Color(0xFFCCCCCC), width: 2.0),
+ borderRadius: BorderRadius.circular(8),
+ ),
+ disabledBorder: OutlineInputBorder(
+ borderSide: BorderSide(color: Color(0xFFCCCCCC), width: 2.0),
+ borderRadius: BorderRadius.circular(8),
+ ),
+ hintText: selectedText != null ? selectedText : hintText,
+ suffixIcon: isDropDown
+ ? suffixIcon != null
+ ? suffixIcon
+ : Icon(
+ Icons.arrow_drop_down,
+ color: Colors.black,
+ )
+ : null,
+ hintStyle: TextStyle(
+ fontSize: 14,
+ color: Colors.grey.shade600,
+ ),
+ );
+ }
+
+ updatePrescription(
+ {PrescriptionViewModel model,
+ int drugId,
+ String frequencyId,
+ String remarks,
+ String dose,
+ String doseId,
+ String frequency,
+ String route,
+ String routeId,
+ String startDate,
+ String doseUnit,
+ String doseStreangth,
+ String newDoseStreangth,
+ String duration,
+ String newDuration,
+ String newUnit,
+ String enteredRemarks,
+ PatiantInformtion patient}) async {
+ //PrescriptionViewModel model = PrescriptionViewModel();
+ PostPrescriptionReqModel updatePrescriptionReqModel =
+ new PostPrescriptionReqModel();
+ List sss = List();
+
+ updatePrescriptionReqModel.appointmentNo = patient.appointmentNo;
+ updatePrescriptionReqModel.clinicID = patient.clinicId;
+ updatePrescriptionReqModel.episodeID = patient.episodeNo;
+ updatePrescriptionReqModel.patientMRN = patient.patientMRN;
+
+ sss.add(PrescriptionRequestModel(
+ covered: true,
+ dose: newDoseStreangth.isNotEmpty
+ ? int.parse(newDoseStreangth)
+ : int.parse(doseStreangth),
+ //frequency.isNotEmpty ? int.parse(dose) : 1,
+ itemId: drugId,
+ doseUnitId:
+ newUnit.isNotEmpty ? int.parse(newUnit) : int.parse(doseUnit),
+ route: route.isNotEmpty ? int.parse(route) : int.parse(routeId),
+ frequency: frequency.isNotEmpty
+ ? int.parse(frequency)
+ : int.parse(frequencyId),
+ remarks: remarks.isEmpty ? enteredRemarks : remarks,
+ approvalRequired: true,
+ icdcode10Id: "test2",
+ doseTime: dose.isNotEmpty ? int.parse(dose) : int.parse(doseId),
+ duration: newDuration.isNotEmpty
+ ? int.parse(newDuration)
+ : int.parse(duration),
+ doseStartDate: startDate));
+ updatePrescriptionReqModel.prescriptionRequestModel = sss;
+ //postProcedureReqModel.procedures = controlsProcedure;
+
+ await model.updatePrescription(
+ updatePrescriptionReqModel, patient.patientMRN);
+
+ if (model.state == ViewState.ErrorLocal) {
+ helpers.showErrorToast(model.error);
+ } else if (model.state == ViewState.Idle) {
+ DrAppToastMsg.showSuccesToast('Medication has been updated');
+ }
+ }
+}
+
+void updatePrescriptionForm(
+ {context,
+ String drugName,
+ int drugId,
+ String remarks,
+ PrescriptionViewModel model,
+ PatiantInformtion patient,
+ String rouat,
+ String frequency,
+ String dose,
+ String duration,
+ String doseStreangth,
+ String doseUnit,
+ String enteredRemarks,
+ String startDate}) {
+ TextEditingController remarksController = TextEditingController();
+ TextEditingController doseController = TextEditingController();
+ TextEditingController frequencyController = TextEditingController();
+ TextEditingController routeController = TextEditingController();
+ showModalBottomSheet(
+ context: context,
+ isScrollControlled: true,
+ builder: (BuildContext context) {
+ return UpdatePrescriptionForm(
+ drugName: drugName,
+ patient: patient,
+ doseStreangth: doseStreangth,
+ remarks: remarks,
+ drugId: drugId,
+ enteredRemarks: enteredRemarks,
+ duration: duration,
+ dose: dose,
+ doseUnit: doseUnit,
+ frequency: frequency,
+ route: rouat,
+ startDate: startDate,
+ model: model,
+ );
+ });
+}
diff --git a/lib/screens/procedures/add-procedure-form.dart b/lib/screens/procedures/add-procedure-form.dart
new file mode 100644
index 00000000..81452c63
--- /dev/null
+++ b/lib/screens/procedures/add-procedure-form.dart
@@ -0,0 +1,323 @@
+import 'package:doctor_app_flutter/client/base_app_client.dart';
+import 'package:doctor_app_flutter/config/size_config.dart';
+import 'package:doctor_app_flutter/core/enum/viewstate.dart';
+import 'package:doctor_app_flutter/core/model/procedure/ControlsModel.dart';
+import 'package:doctor_app_flutter/core/model/procedure/categories_procedure.dart';
+import 'package:doctor_app_flutter/core/model/procedure/post_procedure_req_model.dart';
+import 'package:doctor_app_flutter/core/viewModel/procedure_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/util/dr_app_toast_msg.dart';
+import 'package:doctor_app_flutter/util/translations_delegate_base.dart';
+import 'package:doctor_app_flutter/widgets/shared/TextFields.dart';
+import 'package:doctor_app_flutter/widgets/shared/app_buttons_widget.dart';
+import 'package:doctor_app_flutter/widgets/shared/app_texts_widget.dart';
+import 'package:doctor_app_flutter/widgets/shared/dialogs/dailog-list-select.dart';
+import 'package:doctor_app_flutter/widgets/shared/network_base_view.dart';
+import 'package:flutter/material.dart';
+
+import 'entity_list_checkbox_search_widget.dart';
+
+postProcedure(
+ {ProcedureViewModel model,
+ String remarks,
+ String orderType,
+ PatiantInformtion patient,
+ List entityList}) async {
+ PostProcedureReqModel postProcedureReqModel = new PostProcedureReqModel();
+ List controls = List();
+ List controlsProcedure = List();
+
+ postProcedureReqModel.appointmentNo = patient.appointmentNo;
+
+ postProcedureReqModel.episodeID = patient.episodeNo;
+ postProcedureReqModel.patientMRN = patient.patientMRN;
+ entityList.forEach((element) {
+ controls.add(
+ Controls(code: "remarks", controlValue: remarks.isEmpty ? '' : remarks),
+ );
+ controls.add(
+ Controls(
+ code: "ordertype",
+ controlValue:
+ orderType.toString().isNotEmpty ? orderType.toString() : '1'),
+ );
+ });
+
+ entityList.forEach((element) {
+ controlsProcedure.add(Procedures(
+ category: element.categoryID,
+ procedure: element.procedureId,
+ controls: controls));
+ });
+ postProcedureReqModel.procedures = controlsProcedure;
+
+ await model.postProcedure(postProcedureReqModel, patient.patientMRN);
+
+ if (model.state == ViewState.ErrorLocal) {
+ helpers.showErrorToast(model.error);
+ model.getProcedure(mrn: patient.patientMRN);
+ } else if (model.state == ViewState.Idle) {
+ DrAppToastMsg.showSuccesToast('procedure has been added');
+ }
+}
+
+void addSelectedProcedure(
+ context, ProcedureViewModel model, PatiantInformtion patient) {
+ showModalBottomSheet(
+ context: context,
+ isScrollControlled: true,
+ builder: (BuildContext bc) {
+ return AddSelectedProcedure(
+ model: model,
+ patient: patient,
+ );
+ });
+}
+
+class AddSelectedProcedure extends StatefulWidget {
+ final ProcedureViewModel model;
+ final PatiantInformtion patient;
+
+ const AddSelectedProcedure({Key key, this.model, this.patient})
+ : super(key: key);
+ @override
+ _AddSelectedProcedureState createState() =>
+ _AddSelectedProcedureState(patient: patient, model: model);
+}
+
+class _AddSelectedProcedureState extends State {
+ int selectedType;
+ ProcedureViewModel model;
+ PatiantInformtion patient;
+ _AddSelectedProcedureState({this.patient, this.model});
+ TextEditingController procedureController = TextEditingController();
+ TextEditingController remarksController = TextEditingController();
+ List entityList = List();
+ dynamic selectedCategory;
+ setSelectedType(int val) {
+ setState(() {
+ selectedType = val;
+ });
+ }
+
+ @override
+ Widget build(BuildContext context) {
+ final screenSize = MediaQuery.of(context).size;
+ return BaseView(
+ onModelReady: (model) => model.getCategory(),
+ builder: (BuildContext context, ProcedureViewModel model, Widget child) =>
+ NetworkBaseView(
+ baseViewModel: model,
+ child: DraggableScrollableSheet(
+ minChildSize: 0.90,
+ initialChildSize: 0.95,
+ maxChildSize: 1.0,
+ builder: (BuildContext context, ScrollController scrollController) {
+ return SingleChildScrollView(
+ child: Container(
+ height: MediaQuery.of(context).size.height * 1.20,
+ child: Padding(
+ padding: EdgeInsets.all(12.0),
+ child: Column(
+ crossAxisAlignment: CrossAxisAlignment.start,
+ children: [
+ AppText(
+ TranslationBase.of(context)
+ .selectProcedures
+ .toUpperCase(),
+ fontWeight: FontWeight.w900,
+ ),
+ SizedBox(
+ height: 10.0,
+ ),
+ Container(
+ height: screenSize.height * 0.070,
+ child: InkWell(
+ onTap: model.categoryList != null &&
+ model.categoryList.length > 0
+ ? () {
+ ListSelectDialog dialog = ListSelectDialog(
+ list: model.categoryList,
+ attributeName: 'categoryName',
+ attributeValueId: 'categoryId',
+ okText: TranslationBase.of(context).ok,
+ okFunction: (selectedValue) {
+ setState(() {
+ selectedCategory = selectedValue;
+ model.getProcedureCategory(
+ categoryName: selectedCategory[
+ 'categoryName']);
+ });
+ },
+ );
+ showDialog(
+ barrierDismissible: false,
+ context: context,
+ builder: (BuildContext context) {
+ return dialog;
+ },
+ );
+ //model.getProcedureCategory();
+ }
+ : null,
+ child: TextField(
+ decoration: textFieldSelectorDecoration(
+ TranslationBase.of(context)
+ .procedureCategorise,
+ selectedCategory != null
+ ? selectedCategory['categoryName']
+ : null,
+ true,
+ suffixIcon: Icon(
+ Icons.search,
+ color: Colors.black,
+ )),
+ enabled: false,
+ ),
+ ),
+ ),
+ if (widget.model.categoriesList.length != 0)
+ NetworkBaseView(
+ baseViewModel: model,
+ child: EntityListCheckboxSearchWidget(
+ model: widget.model,
+ masterList:
+ widget.model.categoriesList[0].entityList,
+ removeHistory: (item) {
+ setState(() {
+ entityList.remove(item);
+ });
+ },
+ addHistory: (history) {
+ setState(() {
+ entityList.add(history);
+ });
+ },
+ addSelectedHistories: () {
+ //TODO build your fun herr
+ // widget.addSelectedHistories();
+ },
+ isEntityListSelected: (master) =>
+ isEntityListSelected(master),
+ ),
+ ),
+ SizedBox(
+ height: 15.0,
+ ),
+ Column(
+ mainAxisAlignment: MainAxisAlignment.spaceBetween,
+ children: [
+ Container(
+ child: Row(
+ children: [
+ AppText(
+ TranslationBase.of(context).orderType),
+ Radio(
+ activeColor: Color(0xFFB9382C),
+ value: 1,
+ groupValue: selectedType,
+ onChanged: (value) {
+ setSelectedType(value);
+ },
+ ),
+ Text(TranslationBase.of(context).regular),
+ Radio(
+ activeColor: Color(0xFFB9382C),
+ groupValue: selectedType,
+ value: 0,
+ onChanged: (value) {
+ setSelectedType(value);
+ },
+ ),
+ Text(TranslationBase.of(context).urgent),
+ ],
+ ),
+ ),
+ SizedBox(
+ height: 15.0,
+ ),
+ TextFields(
+ hintText: TranslationBase.of(context).remarks,
+ controller: remarksController,
+ minLines: 3,
+ maxLines: 5,
+ ),
+ SizedBox(
+ height: 50.0,
+ ),
+ Container(
+ margin: EdgeInsets.all(
+ SizeConfig.widthMultiplier * 5),
+ child: Wrap(
+ alignment: WrapAlignment.center,
+ children: [
+ AppButton(
+ title: TranslationBase.of(context)
+ .addSelectedProcedures,
+ onPressed: () {
+ Navigator.pop(context);
+ postProcedure(
+ orderType: selectedType.toString(),
+ entityList: entityList,
+ patient: patient,
+ model: widget.model,
+ remarks: remarksController.text);
+ },
+ ),
+ ],
+ ),
+ ),
+ ],
+ )
+ ],
+ ),
+ ),
+ ),
+ );
+ }),
+ ),
+ );
+ }
+
+ bool isEntityListSelected(EntityList masterKey) {
+ Iterable history = entityList
+ .where((element) => masterKey.procedureId == element.procedureId);
+ if (history.length > 0) {
+ return true;
+ }
+ return false;
+ }
+
+ InputDecoration textFieldSelectorDecoration(
+ String hintText, String selectedText, bool isDropDown,
+ {Icon suffixIcon}) {
+ return InputDecoration(
+ focusedBorder: OutlineInputBorder(
+ borderSide: BorderSide(color: Color(0xFFCCCCCC), width: 2.0),
+ borderRadius: BorderRadius.circular(8),
+ ),
+ enabledBorder: OutlineInputBorder(
+ borderSide: BorderSide(color: Color(0xFFCCCCCC), width: 2.0),
+ borderRadius: BorderRadius.circular(8),
+ ),
+ disabledBorder: OutlineInputBorder(
+ borderSide: BorderSide(color: Color(0xFFCCCCCC), width: 2.0),
+ borderRadius: BorderRadius.circular(8),
+ ),
+ hintText: selectedText != null ? selectedText : hintText,
+ suffixIcon: isDropDown
+ ? suffixIcon != null
+ ? suffixIcon
+ : Icon(
+ Icons.arrow_drop_down,
+ color: Colors.black,
+ )
+ : null,
+ hintStyle: TextStyle(
+ fontSize: 14,
+ color: Colors.grey.shade600,
+ ),
+ );
+ }
+}
diff --git a/lib/screens/procedures/entity_list_checkbox_search_widget.dart b/lib/screens/procedures/entity_list_checkbox_search_widget.dart
index 4f236a4b..7036bc0d 100644
--- a/lib/screens/procedures/entity_list_checkbox_search_widget.dart
+++ b/lib/screens/procedures/entity_list_checkbox_search_widget.dart
@@ -5,6 +5,7 @@ import 'package:doctor_app_flutter/util/translations_delegate_base.dart';
import 'package:doctor_app_flutter/widgets/shared/Text.dart';
import 'package:doctor_app_flutter/widgets/shared/TextFields.dart';
import 'package:doctor_app_flutter/widgets/shared/app_buttons_widget.dart';
+import 'package:doctor_app_flutter/widgets/shared/app_texts_widget.dart';
import 'package:doctor_app_flutter/widgets/shared/divider_with_spaces_around.dart';
import 'package:doctor_app_flutter/widgets/shared/network_base_view.dart';
import 'package:eva_icons_flutter/eva_icons_flutter.dart';
@@ -71,43 +72,53 @@ class _EntityListCheckboxSearchWidgetState
SizedBox(
height: 15,
),
- Column(
- children: items.map((historyInfo) {
- return Column(
- children: [
- Row(
- children: [
- Checkbox(
- value: widget
- .isEntityListSelected(historyInfo),
- activeColor: Colors.red[800],
- onChanged: (bool newValue) {
- setState(() {
- if (widget.isEntityListSelected(
- historyInfo)) {
- widget.removeHistory(historyInfo);
- } else {
- widget.addHistory(historyInfo);
- }
- });
- }),
- Expanded(
- child: Padding(
- padding: const EdgeInsets.symmetric(
- horizontal: 10, vertical: 0),
- child: Texts(historyInfo.procedureName,
- variant: "bodyText",
- bold: true,
- color: Colors.black),
+ items.length != 0
+ ? Column(
+ children: items.map((historyInfo) {
+ return Column(
+ children: [
+ Row(
+ children: [
+ Checkbox(
+ value: widget.isEntityListSelected(
+ historyInfo),
+ activeColor: Colors.red[800],
+ onChanged: (bool newValue) {
+ setState(() {
+ if (widget.isEntityListSelected(
+ historyInfo)) {
+ widget
+ .removeHistory(historyInfo);
+ } else {
+ widget.addHistory(historyInfo);
+ }
+ });
+ }),
+ Expanded(
+ child: Padding(
+ padding: const EdgeInsets.symmetric(
+ horizontal: 10, vertical: 0),
+ child: Texts(
+ historyInfo.procedureName,
+ variant: "bodyText",
+ bold: true,
+ color: Colors.black),
+ ),
+ ),
+ ],
),
- ),
- ],
+ DividerWithSpacesAround(),
+ ],
+ );
+ }).toList(),
+ )
+ : Center(
+ child: Container(
+ child: AppText(
+ "There's no procedures for this category",
+ color: Color(0xFFB9382C)),
),
- DividerWithSpacesAround(),
- ],
- );
- }).toList(),
- ),
+ )
],
),
)),
diff --git a/lib/screens/procedures/procedure_screen.dart b/lib/screens/procedures/procedure_screen.dart
index 05850316..ca126609 100644
--- a/lib/screens/procedures/procedure_screen.dart
+++ b/lib/screens/procedures/procedure_screen.dart
@@ -1,29 +1,15 @@
-import 'package:doctor_app_flutter/client/base_app_client.dart';
-import 'package:doctor_app_flutter/config/shared_pref_kay.dart';
-import 'package:doctor_app_flutter/config/size_config.dart';
-import 'package:doctor_app_flutter/core/enum/viewstate.dart';
-import 'package:doctor_app_flutter/core/model/procedure/ControlsModel.dart';
-import 'package:doctor_app_flutter/core/model/procedure/categories_procedure.dart';
-import 'package:doctor_app_flutter/core/model/procedure/post_procedure_req_model.dart';
-import 'package:doctor_app_flutter/core/model/procedure/update_procedure_request_model.dart';
import 'package:doctor_app_flutter/core/viewModel/procedure_View_model.dart';
-import 'package:doctor_app_flutter/icons_app/doctor_app_icons.dart';
-import 'package:doctor_app_flutter/models/doctor/doctor_profile_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/screens/procedures/entity_list_checkbox_search_widget.dart';
-import 'package:doctor_app_flutter/util/dr_app_toast_msg.dart';
+import 'package:doctor_app_flutter/screens/procedures/add-procedure-form.dart';
+import 'package:doctor_app_flutter/screens/procedures/update-procedure.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/patient_profile_widget.dart';
-import 'package:doctor_app_flutter/widgets/shared/TextFields.dart';
-import 'package:doctor_app_flutter/widgets/shared/app_buttons_widget.dart';
+import 'package:doctor_app_flutter/widgets/patients/profile/patient-page-header-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/dialogs/dailog-list-select.dart';
import 'package:doctor_app_flutter/widgets/shared/network_base_view.dart';
import 'package:flutter/material.dart';
-import 'package:hexcolor/hexcolor.dart';
class ProcedureScreen extends StatefulWidget {
@override
@@ -58,57 +44,7 @@ class _ProcedureScreenState extends State {
child: Container(
child: Column(
children: [
- Padding(
- padding: EdgeInsets.all(12.0),
- child: Row(
- children: [
- AvatarWidget(
- Icon(
- patient.genderDescription == "Male"
- ? DoctorApp.male
- : DoctorApp.female_icon,
- size: 70,
- color: Colors.white,
- ),
- ),
- SizedBox(
- width: 20,
- ),
- Column(
- crossAxisAlignment: CrossAxisAlignment.start,
- children: [
- AppText(
- patient.firstName + ' ' + patient.lastName,
- color: Colors.black,
- fontWeight: FontWeight.bold,
- ),
- Row(
- children: [
- AppText(
- TranslationBase.of(context).age2,
- color: Colors.black,
- fontWeight: FontWeight.bold,
- ),
- SizedBox(
- width: 5.0,
- ),
- AppText(
- patient.age.toString(),
- color: Colors.black,
- fontWeight: FontWeight.normal,
- ),
- ],
- ),
- AppText(
- "ALLERGIC TO: FOOD, ASPIRIN",
- color: Color(0xFFB9382C),
- fontWeight: FontWeight.bold,
- ),
- ],
- )
- ],
- ),
- ),
+ PatientPageHeaderWidget(patient),
Divider(
height: 1.0,
thickness: 1.0,
@@ -320,7 +256,7 @@ class _ProcedureScreenState extends State {
context)
.size
.height *
- 0.2,
+ 0.21,
width: MediaQuery.of(
context)
.size
@@ -376,6 +312,30 @@ class _ProcedureScreenState extends State {
),
],
),
+ Row(
+ children: [
+ AppText(
+ 'Order.NO' +
+ " : ",
+ fontWeight:
+ FontWeight
+ .w700,
+ fontSize:
+ 15.0,
+ ),
+ AppText(
+ model
+ .procedureList[
+ 0]
+ .entityList[
+ index]
+ .orderNo
+ .toString(),
+ fontSize:
+ 13.0,
+ ),
+ ],
+ ),
Row(
children: [
Container(
@@ -438,11 +398,10 @@ class _ProcedureScreenState extends State {
0.10,
child:
AppText(
- model
- .procedureList[0]
- .entityList[index]
- .remarks
- .toString(),
+ model.procedureList[0].entityList[index].remarks !=
+ null
+ ? model.procedureList[0].entityList[index].remarks.toString()
+ : "",
fontSize:
11.5,
),
@@ -581,445 +540,4 @@ class _ProcedureScreenState extends State {
)),
);
}
-
- void updateProcedureForm(context,
- {String procedureName,
- PatiantInformtion patient,
- String procedureId,
- String remarks,
- String categoreId}) {
- ProcedureViewModel model = ProcedureViewModel();
- TextEditingController remarksController = TextEditingController();
- TextEditingController orderController = TextEditingController();
- showModalBottomSheet(
- context: context,
- isScrollControlled: true,
- builder: (BuildContext bc) {
- return Container(
- height: MediaQuery.of(context).size.height * 0.55,
- child: Form(
- child: Padding(
- padding:
- EdgeInsets.symmetric(horizontal: 20.0, vertical: 10.0),
- child: Column(
- crossAxisAlignment: CrossAxisAlignment.start,
- children: [
- AppText(
- procedureName.toUpperCase(),
- fontWeight: FontWeight.w700,
- ),
- SizedBox(
- height: 30.0,
- ),
- Container(
- child: Row(
- children: [
- AppText(TranslationBase.of(context).orderType),
- Radio(
- activeColor: Color(0xFFB9382C),
- value: 0,
- groupValue: selectedType,
- onChanged: (value) {
- setSelectedType(value);
- },
- ),
- Text(TranslationBase.of(context).regular),
- Radio(
- activeColor: Color(0xFFB9382C),
- groupValue: selectedType,
- value: 1,
- onChanged: (value) {
- setSelectedType(value);
- },
- ),
- Text(TranslationBase.of(context).urgent),
- ],
- ),
- ),
- SizedBox(
- height: 12.0,
- ),
- Container(
- decoration: BoxDecoration(
- borderRadius:
- BorderRadius.all(Radius.circular(6.0)),
- border: Border.all(
- width: 1.0, color: HexColor("#CCCCCC"))),
- child: TextFields(
- hintText: remarks,
- controller: remarksController,
- maxLines: 5,
- minLines: 3,
- ),
- ),
- SizedBox(
- height: 100.0,
- ),
- Container(
- margin: EdgeInsets.all(SizeConfig.widthMultiplier * 2),
- child: Wrap(
- alignment: WrapAlignment.center,
- children: [
- AppButton(
- title: TranslationBase.of(context)
- .updateProcedure
- .toUpperCase(),
- onPressed: () {
- Navigator.pop(context);
- updateProcedure(
- categorieId: categoreId,
- procedureId: procedureId,
- patient: patient,
- model: model,
- remarks: remarksController.text);
- // authorizationForm(context);
- },
- ),
- ],
- ),
- ),
- ],
- ),
- ),
- ));
- });
- }
-}
-
-postProcedure(
- {ProcedureViewModel model,
- String remarks,
- PatiantInformtion patient,
- List entityList}) async {
- PostProcedureReqModel postProcedureReqModel = new PostProcedureReqModel();
- List controls = List();
- List controlsProcedure = List();
-
- postProcedureReqModel.appointmentNo = patient.appointmentNo;
-
- postProcedureReqModel.episodeID = patient.episodeNo;
- postProcedureReqModel.patientMRN = patient.patientMRN;
- entityList.forEach((element) {
- controls.add(
- Controls(code: "remarks", controlValue: remarks.isEmpty ? '' : remarks),
- );
- });
-
- entityList.forEach((element) {
- controlsProcedure.add(Procedures(
- category: element.categoryID,
- procedure: element.procedureId,
- controls: controls));
- });
- postProcedureReqModel.procedures = controlsProcedure;
-
- await model.postProcedure(postProcedureReqModel, patient.patientMRN);
-
- if (model.state == ViewState.ErrorLocal) {
- helpers.showErrorToast(model.error);
- model.getProcedure(mrn: patient.patientMRN);
- } else if (model.state == ViewState.Idle) {
- DrAppToastMsg.showSuccesToast('procedure has been added');
- }
-}
-
-updateProcedure(
- {ProcedureViewModel model,
- String remarks,
- String procedureId,
- PatiantInformtion patient,
- String categorieId}) async {
- UpdateProcedureRequestModel updateProcedureReqModel =
- new UpdateProcedureRequestModel();
- List controls = List();
- ProcedureDetail controlsProcedure = new ProcedureDetail();
-
- updateProcedureReqModel.appointmentNo = patient.appointmentNo;
-
- updateProcedureReqModel.episodeID = patient.episodeNo;
- updateProcedureReqModel.patientMRN = patient.patientMRN;
- updateProcedureReqModel.lineItemNo = 1;
- updateProcedureReqModel.orderNo = 0;
-
- controls.add(
- Controls(code: "02", controlValue: remarks.isEmpty ? '' : remarks),
- );
-
- controlsProcedure.procedure = procedureId;
- controlsProcedure.category = categorieId;
- controlsProcedure.controls = controls;
-
- // controlsProcedure.add(ProcedureDetail(
- // category: categorieId, procedure: procedureId, controls: controls));
- updateProcedureReqModel.procedureDetail = controlsProcedure;
-
- await model.updateProcedure(
- updateProcedureRequestModel: updateProcedureReqModel,
- mrn: patient.patientMRN);
-
- if (model.state == ViewState.ErrorLocal) {
- helpers.showErrorToast(model.error);
- model.getProcedure(mrn: patient.patientMRN);
- } else if (model.state == ViewState.Idle) {
- DrAppToastMsg.showSuccesToast('procedure has been updated');
- }
-}
-
-void addSelectedProcedure(
- context, ProcedureViewModel model, PatiantInformtion patient) {
- showModalBottomSheet(
- context: context,
- isScrollControlled: true,
- builder: (BuildContext bc) {
- return AddSelectedProcedure(
- model: model,
- patient: patient,
- );
- });
-}
-
-class AddSelectedProcedure extends StatefulWidget {
- final ProcedureViewModel model;
- final PatiantInformtion patient;
-
- const AddSelectedProcedure({Key key, this.model, this.patient})
- : super(key: key);
- @override
- _AddSelectedProcedureState createState() =>
- _AddSelectedProcedureState(patient: patient, model: model);
-}
-
-class _AddSelectedProcedureState extends State {
- int selectedType;
- ProcedureViewModel model;
- PatiantInformtion patient;
- _AddSelectedProcedureState({this.patient, this.model});
- TextEditingController procedureController = TextEditingController();
- TextEditingController remarksController = TextEditingController();
- List entityList = List();
- dynamic selectedCategory;
- setSelectedType(int val) {
- setState(() {
- selectedType = val;
- });
- }
-
- @override
- Widget build(BuildContext context) {
- final screenSize = MediaQuery.of(context).size;
- return BaseView(
- onModelReady: (model) => model.getCategory(),
- builder: (BuildContext context, ProcedureViewModel model, Widget child) =>
- NetworkBaseView(
- baseViewModel: model,
- child: DraggableScrollableSheet(
- minChildSize: 0.90,
- initialChildSize: 0.95,
- maxChildSize: 1.0,
- builder: (BuildContext context, ScrollController scrollController) {
- return SingleChildScrollView(
- child: Container(
- height: MediaQuery.of(context).size.height * 1.20,
- child: Padding(
- padding: EdgeInsets.all(12.0),
- child: Column(
- crossAxisAlignment: CrossAxisAlignment.start,
- children: [
- AppText(
- TranslationBase.of(context)
- .selectProcedures
- .toUpperCase(),
- fontWeight: FontWeight.w900,
- ),
- SizedBox(
- height: 10.0,
- ),
- Container(
- height: screenSize.height * 0.070,
- child: InkWell(
- onTap: model.categoryList != null &&
- model.categoryList.length > 0
- ? () {
- ListSelectDialog dialog = ListSelectDialog(
- list: model.categoryList,
- attributeName: 'categoryName',
- attributeValueId: 'categoryId',
- okText: TranslationBase.of(context).ok,
- okFunction: (selectedValue) {
- setState(() {
- selectedCategory = selectedValue;
- model.getProcedureCategory(
- categoryName: selectedCategory[
- 'categoryName']);
- });
- },
- );
- showDialog(
- barrierDismissible: false,
- context: context,
- builder: (BuildContext context) {
- return dialog;
- },
- );
- //model.getProcedureCategory();
- }
- : null,
- child: TextField(
- decoration: textFieldSelectorDecoration(
- TranslationBase.of(context)
- .procedureCategorise,
- selectedCategory != null
- ? selectedCategory['categoryName']
- : null,
- true,
- suffixIcon: Icon(
- Icons.search,
- color: Colors.black,
- )),
- enabled: false,
- ),
- ),
- ),
- if (widget.model.categoriesList.length != 0)
- NetworkBaseView(
- baseViewModel: model,
- child: EntityListCheckboxSearchWidget(
- model: widget.model,
- masterList:
- widget.model.categoriesList[0].entityList,
- removeHistory: (item) {
- setState(() {
- entityList.remove(item);
- });
- },
- addHistory: (history) {
- setState(() {
- entityList.add(history);
- });
- },
- addSelectedHistories: () {
- //TODO build your fun herr
- // widget.addSelectedHistories();
- },
- isEntityListSelected: (master) =>
- isEntityListSelected(master),
- ),
- ),
- SizedBox(
- height: 15.0,
- ),
- Column(
- mainAxisAlignment: MainAxisAlignment.spaceBetween,
- children: [
- Container(
- child: Row(
- children: [
- AppText(
- TranslationBase.of(context).orderType),
- Radio(
- activeColor: Color(0xFFB9382C),
- value: 0,
- groupValue: selectedType,
- onChanged: (value) {
- setSelectedType(value);
- },
- ),
- Text(TranslationBase.of(context).regular),
- Radio(
- activeColor: Color(0xFFB9382C),
- groupValue: selectedType,
- value: 1,
- onChanged: (value) {
- setSelectedType(value);
- },
- ),
- Text(TranslationBase.of(context).urgent),
- ],
- ),
- ),
- SizedBox(
- height: 15.0,
- ),
- TextFields(
- hintText: TranslationBase.of(context).remarks,
- controller: remarksController,
- minLines: 3,
- maxLines: 5,
- ),
- SizedBox(
- height: 50.0,
- ),
- Container(
- margin: EdgeInsets.all(
- SizeConfig.widthMultiplier * 5),
- child: Wrap(
- alignment: WrapAlignment.center,
- children: [
- AppButton(
- title: TranslationBase.of(context)
- .addSelectedProcedures,
- onPressed: () {
- Navigator.pop(context);
- postProcedure(
- entityList: entityList,
- patient: patient,
- model: widget.model,
- remarks: remarksController.text);
- },
- ),
- ],
- ),
- ),
- ],
- )
- ],
- ),
- ),
- ),
- );
- }),
- ),
- );
- }
-
- bool isEntityListSelected(EntityList masterKey) {
- Iterable history = entityList
- .where((element) => masterKey.procedureId == element.procedureId);
- if (history.length > 0) {
- return true;
- }
- return false;
- }
-
- InputDecoration textFieldSelectorDecoration(
- String hintText, String selectedText, bool isDropDown,
- {Icon suffixIcon}) {
- return InputDecoration(
- focusedBorder: OutlineInputBorder(
- borderSide: BorderSide(color: Color(0xFFCCCCCC), width: 2.0),
- borderRadius: BorderRadius.circular(8),
- ),
- enabledBorder: OutlineInputBorder(
- borderSide: BorderSide(color: Color(0xFFCCCCCC), width: 2.0),
- borderRadius: BorderRadius.circular(8),
- ),
- disabledBorder: OutlineInputBorder(
- borderSide: BorderSide(color: Color(0xFFCCCCCC), width: 2.0),
- borderRadius: BorderRadius.circular(8),
- ),
- hintText: selectedText != null ? selectedText : hintText,
- suffixIcon: isDropDown
- ? suffixIcon != null
- ? suffixIcon
- : Icon(
- Icons.arrow_drop_down,
- color: Colors.black,
- )
- : null,
- hintStyle: TextStyle(
- fontSize: 14,
- color: Colors.grey.shade600,
- ),
- );
- }
}
diff --git a/lib/screens/procedures/update-procedure.dart b/lib/screens/procedures/update-procedure.dart
new file mode 100644
index 00000000..8ed40dc3
--- /dev/null
+++ b/lib/screens/procedures/update-procedure.dart
@@ -0,0 +1,347 @@
+import 'package:doctor_app_flutter/client/base_app_client.dart';
+import 'package:doctor_app_flutter/config/size_config.dart';
+import 'package:doctor_app_flutter/core/enum/viewstate.dart';
+import 'package:doctor_app_flutter/core/model/procedure/ControlsModel.dart';
+import 'package:doctor_app_flutter/core/model/procedure/categories_procedure.dart';
+import 'package:doctor_app_flutter/core/model/procedure/update_procedure_request_model.dart';
+import 'package:doctor_app_flutter/core/viewModel/procedure_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/screens/procedures/entity_list_checkbox_search_widget.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/TextFields.dart';
+import 'package:doctor_app_flutter/widgets/shared/app_buttons_widget.dart';
+import 'package:doctor_app_flutter/widgets/shared/app_texts_widget.dart';
+import 'package:doctor_app_flutter/widgets/shared/dialogs/dailog-list-select.dart';
+import 'package:doctor_app_flutter/widgets/shared/network_base_view.dart';
+import 'package:flutter/material.dart';
+import 'package:hexcolor/hexcolor.dart';
+
+void updateProcedureForm(context,
+ {String procedureName,
+ PatiantInformtion patient,
+ String orderType,
+ String procedureId,
+ String remarks,
+ String categoreId}) {
+ ProcedureViewModel model = ProcedureViewModel();
+ TextEditingController remarksController = TextEditingController();
+ TextEditingController orderController = TextEditingController();
+ showModalBottomSheet(
+ context: context,
+ isScrollControlled: true,
+ builder: (BuildContext bc) {
+ return UpdateProcedureWidget(
+ procedureName: procedureName,
+ remarks: remarks,
+ remarksController: remarksController,
+ patient: patient,
+ model: model,
+ procedureId: procedureId,
+ categoryId: categoreId,
+ );
+ });
+}
+
+class UpdateProcedureWidget extends StatefulWidget {
+ final PatiantInformtion patient;
+ final ProcedureViewModel model;
+ final String procedureName;
+ final String remarks;
+ final TextEditingController remarksController;
+ final String procedureId;
+ final String categoryId;
+
+ UpdateProcedureWidget(
+ {this.model,
+ this.procedureName,
+ this.remarks,
+ this.remarksController,
+ this.patient,
+ this.procedureId,
+ this.categoryId});
+ @override
+ _UpdateProcedureWidgetState createState() => _UpdateProcedureWidgetState();
+}
+
+class _UpdateProcedureWidgetState extends State {
+ int selectedType = 0;
+ setSelectedType(int val) {
+ setState(() {
+ selectedType = val;
+ });
+ }
+
+ List entityList = List();
+ dynamic selectedCategory;
+ @override
+ Widget build(BuildContext context) {
+ final screenSize = MediaQuery.of(context).size;
+ return StatefulBuilder(builder:
+ (BuildContext context, StateSetter setState /*You can rename this!*/) {
+ return BaseView(
+ onModelReady: (model) => model.getCategory(),
+ builder:
+ (BuildContext context, ProcedureViewModel model, Widget child) =>
+ NetworkBaseView(
+ baseViewModel: model,
+ child: Container(
+ height: MediaQuery.of(context).size.height * 0.95,
+ child: Form(
+ child: Padding(
+ padding:
+ EdgeInsets.symmetric(horizontal: 20.0, vertical: 10.0),
+ child: Column(
+ crossAxisAlignment: CrossAxisAlignment.start,
+ children: [
+ AppText(
+ widget.procedureName.toUpperCase(),
+ fontWeight: FontWeight.w700,
+ ),
+ SizedBox(
+ height: 30.0,
+ ),
+ Container(
+ height: screenSize.height * 0.070,
+ child: InkWell(
+ onTap: model.categoryList != null &&
+ model.categoryList.length > 0
+ ? () {
+ ListSelectDialog dialog = ListSelectDialog(
+ list: model.categoryList,
+ attributeName: 'categoryName',
+ attributeValueId: 'categoryId',
+ okText: TranslationBase.of(context).ok,
+ okFunction: (selectedValue) {
+ setState(() {
+ selectedCategory = selectedValue;
+ model.getProcedureCategory(
+ categoryName: selectedCategory[
+ 'categoryName']);
+ });
+ },
+ );
+ showDialog(
+ barrierDismissible: false,
+ context: context,
+ builder: (BuildContext context) {
+ return dialog;
+ },
+ );
+ //model.getProcedureCategory();
+ }
+ : null,
+ child: TextField(
+ decoration: textFieldSelectorDecoration(
+ TranslationBase.of(context).procedureCategorise,
+ selectedCategory != null
+ ? selectedCategory['categoryName']
+ : null,
+ true,
+ suffixIcon: Icon(
+ Icons.search,
+ color: Colors.black,
+ )),
+ enabled: false,
+ ),
+ ),
+ ),
+ if (widget.model.categoriesList.length != 0)
+ NetworkBaseView(
+ baseViewModel: model,
+ child: EntityListCheckboxSearchWidget(
+ model: widget.model,
+ masterList:
+ widget.model.categoriesList[0].entityList,
+ removeHistory: (item) {
+ setState(() {
+ entityList.remove(item);
+ });
+ },
+ addHistory: (history) {
+ setState(() {
+ entityList.add(history);
+ });
+ },
+ addSelectedHistories: () {
+ //TODO build your fun herr
+ // widget.addSelectedHistories();
+ },
+ isEntityListSelected: (master) =>
+ isEntityListSelected(master),
+ ),
+ ),
+ Container(
+ child: Row(
+ children: [
+ AppText(TranslationBase.of(context).orderType),
+ Radio(
+ activeColor: Color(0xFFB9382C),
+ value: 0,
+ groupValue: selectedType,
+ onChanged: (value) {
+ setSelectedType(value);
+ },
+ ),
+ Text(TranslationBase.of(context).urgent),
+ Radio(
+ activeColor: Color(0xFFB9382C),
+ groupValue: selectedType,
+ value: 1,
+ onChanged: (value) {
+ setSelectedType(value);
+ },
+ ),
+ Text(TranslationBase.of(context).regular),
+ ],
+ ),
+ ),
+ SizedBox(
+ height: 12.0,
+ ),
+ Container(
+ decoration: BoxDecoration(
+ borderRadius:
+ BorderRadius.all(Radius.circular(6.0)),
+ border: Border.all(
+ width: 1.0, color: HexColor("#CCCCCC"))),
+ child: TextFields(
+ hintText: widget.remarks,
+ controller: widget.remarksController,
+ maxLines: 5,
+ minLines: 3,
+ ),
+ ),
+ SizedBox(
+ height: 50.0,
+ ),
+ Container(
+ margin: EdgeInsets.all(SizeConfig.widthMultiplier * 2),
+ child: Wrap(
+ alignment: WrapAlignment.center,
+ children: [
+ AppButton(
+ title: TranslationBase.of(context)
+ .updateProcedure
+ .toUpperCase(),
+ onPressed: () {
+ Navigator.pop(context);
+ updateProcedure(
+ orderType: selectedType.toString(),
+ categorieId: widget.categoryId,
+ procedureId: widget.procedureId,
+ entityList: entityList,
+ patient: widget.patient,
+ model: widget.model,
+ remarks: widget.remarksController.text);
+ // authorizationForm(context);
+ },
+ ),
+ ],
+ ),
+ ),
+ ],
+ ),
+ ),
+ )),
+ ),
+ );
+ });
+ }
+
+ updateProcedure(
+ {ProcedureViewModel model,
+ String remarks,
+ String newProcedureId,
+ String newCategorieId,
+ List entityList,
+ String orderType,
+ String procedureId,
+ PatiantInformtion patient,
+ String categorieId}) async {
+ UpdateProcedureRequestModel updateProcedureReqModel =
+ new UpdateProcedureRequestModel();
+ List controls = List();
+ ProcedureDetail controlsProcedure = new ProcedureDetail();
+
+ updateProcedureReqModel.appointmentNo = patient.appointmentNo;
+
+ updateProcedureReqModel.episodeID = patient.episodeNo;
+ updateProcedureReqModel.patientMRN = patient.patientMRN;
+ updateProcedureReqModel.lineItemNo = 1;
+ updateProcedureReqModel.orderNo = 0;
+
+ controls.add(
+ Controls(code: "remarks", controlValue: remarks.isEmpty ? '' : remarks),
+ );
+ controls.add(
+ Controls(code: "ordertype", controlValue: "1"),
+ );
+
+ entityList.isNotEmpty
+ ? entityList.forEach((element) {
+ controlsProcedure.procedure = element.procedureId;
+ controlsProcedure.category = element.categoryID;
+ controlsProcedure.controls = controls;
+ })
+ : controlsProcedure.procedure = procedureId;
+ controlsProcedure.category = categorieId;
+ controlsProcedure.controls = controls;
+ // controlsProcedure.add(ProcedureDetail(
+ // category: categorieId, procedure: procedureId, controls: controls));
+ updateProcedureReqModel.procedureDetail = controlsProcedure;
+
+ await model.updateProcedure(
+ updateProcedureRequestModel: updateProcedureReqModel,
+ mrn: patient.patientMRN);
+
+ if (model.state == ViewState.ErrorLocal) {
+ helpers.showErrorToast(model.error);
+ model.getProcedure(mrn: patient.patientMRN);
+ } else if (model.state == ViewState.Idle) {
+ DrAppToastMsg.showSuccesToast('procedure has been updated');
+ }
+ }
+
+ bool isEntityListSelected(EntityList masterKey) {
+ Iterable history = entityList
+ .where((element) => masterKey.procedureId == element.procedureId);
+ if (history.length > 0) {
+ return true;
+ }
+ return false;
+ }
+
+ InputDecoration textFieldSelectorDecoration(
+ String hintText, String selectedText, bool isDropDown,
+ {Icon suffixIcon}) {
+ return InputDecoration(
+ focusedBorder: OutlineInputBorder(
+ borderSide: BorderSide(color: Color(0xFFCCCCCC), width: 2.0),
+ borderRadius: BorderRadius.circular(8),
+ ),
+ enabledBorder: OutlineInputBorder(
+ borderSide: BorderSide(color: Color(0xFFCCCCCC), width: 2.0),
+ borderRadius: BorderRadius.circular(8),
+ ),
+ disabledBorder: OutlineInputBorder(
+ borderSide: BorderSide(color: Color(0xFFCCCCCC), width: 2.0),
+ borderRadius: BorderRadius.circular(8),
+ ),
+ hintText: selectedText != null ? selectedText : hintText,
+ suffixIcon: isDropDown
+ ? suffixIcon != null
+ ? suffixIcon
+ : Icon(
+ Icons.arrow_drop_down,
+ color: Colors.black,
+ )
+ : null,
+ hintStyle: TextStyle(
+ fontSize: 14,
+ color: Colors.grey.shade600,
+ ),
+ );
+ }
+}
diff --git a/lib/util/date-utils.dart b/lib/util/date-utils.dart
index bfa406c6..af90acf6 100644
--- a/lib/util/date-utils.dart
+++ b/lib/util/date-utils.dart
@@ -1,3 +1,5 @@
+import 'package:doctor_app_flutter/util/translations_delegate_base.dart';
+import 'package:flutter/cupertino.dart';
import 'package:intl/intl.dart';
class DateUtils {
@@ -32,7 +34,7 @@ class DateUtils {
return date;
}
- static String differenceBetweenDateAndCurrentInYearMonthDay(DateTime firstDate) {
+ static String differenceBetweenDateAndCurrentInYearMonthDay(DateTime firstDate, BuildContext context) {
DateTime now = DateTime.now();
// now = now.add(Duration(days: 400, minutes: 0));
var difference = firstDate.difference(now);
@@ -49,12 +51,10 @@ class DateUtils {
final monthAgo = new DateTime(now.year, now.month - 1, firstDate.day);
days = now.difference(monthAgo).inDays + 1;
}
-
-
- return "$days Days, $months Months, $years Years";
+ return "$days ${TranslationBase.of(context).days}, $months ${TranslationBase.of(context).months}, $years ${TranslationBase.of(context).years}";
}
- static String differenceBetweenDateAndCurrent(DateTime firstDate) {
+ static String differenceBetweenDateAndCurrent(DateTime firstDate, BuildContext context) {
DateTime now = DateTime.now();
// DateTime now = nows.add(Duration(days: 400, minutes: 25, hours: 0));
var difference = now.difference(firstDate);
@@ -67,10 +67,10 @@ class DateUtils {
double hoursInOneDay = difference.inHours / difference.inDays;
- return "$days Days, $hours HR, $minutes Min";
+ return "$days ${TranslationBase.of(context).days}, $hours ${TranslationBase.of(context).hr}, $minutes ${TranslationBase.of(context).min}";
}
- static String differenceBetweenServerDateAndCurrent(String str) {
+ static String differenceBetweenServerDateAndCurrent(String str, BuildContext context) {
const start = "/Date(";
const end = "+0300)";
@@ -81,7 +81,7 @@ class DateUtils {
var date = new DateTime.fromMillisecondsSinceEpoch(
int.parse(str.substring(startIndex + start.length, endIndex)));
- return differenceBetweenDateAndCurrent(date);
+ return differenceBetweenDateAndCurrent(date, context);
}
/// get month by
@@ -217,7 +217,7 @@ class DateUtils {
}
}
- static String getAgeByBirthday(dynamic birthday){
+ static String getAgeByBirthday(dynamic birthday, BuildContext context){
// https://leechy.dev/calculate-dates-diff-in-dart
DateTime birthDate = DateUtils.getDateTimeFromServerFormat(birthday);
final now = DateTime.now();
@@ -232,7 +232,7 @@ class DateUtils {
final monthAgo = new DateTime(now.year, now.month - 1, birthDate.day);
days = now.difference(monthAgo).inDays + 1;
}
- return "$years Yr $months Mnth $days Day";
+ return "$years ${TranslationBase.of(context).years} $months ${TranslationBase.of(context).months} $days ${TranslationBase.of(context).days}";
}
}
diff --git a/lib/util/translations_delegate_base.dart b/lib/util/translations_delegate_base.dart
index 9668b514..c192d7b9 100644
--- a/lib/util/translations_delegate_base.dart
+++ b/lib/util/translations_delegate_base.dart
@@ -117,6 +117,9 @@ class TranslationBase {
String get myReferredPatient =>
localizedValues['myReferredPatient'][locale.languageCode];
+ String get referredPatient =>
+ localizedValues['referredPatient'][locale.languageCode];
+ String get referredOn => localizedValues['referredOn'][locale.languageCode];
String get firstName => localizedValues['firstName'][locale.languageCode];
@@ -1013,21 +1016,30 @@ class TranslationBase {
String get createdBy => localizedValues['createdBy'][locale.languageCode];
String get editedBy => localizedValues['editedBy'][locale.languageCode];
+
String get currentMedications =>
localizedValues['currentMedications'][locale.languageCode];
+
String get noItem => localizedValues['noItem'][locale.languageCode];
+
String get postUcafSuccessMsg =>
localizedValues['postUcafSuccessMsg'][locale.languageCode];
+
String get vitalSignDetailEmpty =>
localizedValues['vitalSignDetailEmpty'][locale.languageCode];
+
String get onlyOfftimeHoliday =>
localizedValues['onlyOfftimeHoliday'][locale.languageCode];
+
String get active => localizedValues['active'][locale.languageCode];
+
String get hold => localizedValues['hold'][locale.languageCode];
+
String get loading => localizedValues['loading'][locale.languageCode];
String get assessmentErrorMsg =>
localizedValues['assessmentErrorMsg'][locale.languageCode];
+
String get examinationErrorMsg =>
localizedValues['examinationErrorMsg'][locale.languageCode];
@@ -1037,11 +1049,40 @@ class TranslationBase {
String get chiefComplaintErrorMsg =>
localizedValues['chiefComplaintErrorMsg'][locale.languageCode];
String get ICDName => localizedValues['ICDName'][locale.languageCode];
+
String get referralStatus =>
localizedValues['referralStatus'][locale.languageCode];
+
String get referralRemark =>
localizedValues['referralRemark'][locale.languageCode];
String get offTime => localizedValues['offTime'][locale.languageCode];
+
+ String get icd => localizedValues['icd'][locale.languageCode];
+ String get days => localizedValues['days'][locale.languageCode];
+ String get hr => localizedValues['hr'][locale.languageCode];
+ String get min => localizedValues['min'][locale.languageCode];
+ String get months => localizedValues['months'][locale.languageCode];
+ String get years => localizedValues['years'][locale.languageCode];
+ String get referralStatusHold =>
+ localizedValues['referralStatusHold'][locale.languageCode];
+ String get referralStatusActive =>
+ localizedValues['referralStatusActive'][locale.languageCode];
+ String get referralStatusCancelled =>
+ localizedValues['referralStatusCancelled'][locale.languageCode];
+ String get referralStatusCompleted =>
+ localizedValues['referralStatusCompleted'][locale.languageCode];
+ String get referralStatusNotSeen =>
+ localizedValues['referralStatusNotSeen'][locale.languageCode];
+ String get clinicSearch =>
+ localizedValues['clinicSearch'][locale.languageCode];
+ String get doctorSearch =>
+ localizedValues['doctorSearch'][locale.languageCode];
+
+ String get patientName =>
+ localizedValues['patient-name'][locale.languageCode];
+
+ String get appointmentNumber =>
+ localizedValues['appointmentNumber'][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 fb8276c8..ab89ab33 100644
--- a/lib/widgets/patients/patient-referral-item-widget.dart
+++ b/lib/widgets/patients/patient-referral-item-widget.dart
@@ -4,15 +4,18 @@ import 'package:flutter/material.dart';
class PatientReferralItemWidget extends StatelessWidget {
final String patientName;
+ final String patientID;
final String referralStatus;
final isReferredTo;
final isSameBranch;
final String referralDoctorName;
final String clinicDescription;
final String remark;
+ final String referredOn;
final Widget infoIcon;
- PatientReferralItemWidget({
+ PatientReferralItemWidget(
+ this.patientID, {
this.patientName,
this.referralStatus,
this.isReferredTo = false,
@@ -20,6 +23,7 @@ class PatientReferralItemWidget extends StatelessWidget {
this.referralDoctorName,
this.clinicDescription,
this.remark,
+ this.referredOn,
this.infoIcon,
});
@@ -35,14 +39,6 @@ class PatientReferralItemWidget extends StatelessWidget {
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
- Center(
- child: AppText(
- patientName != null ? "${patientName}" : "",
- color: Colors.black,
- fontWeight: FontWeight.bold,
- fontSize: 16,
- ),
- ),
if (referralStatus != null)
Row(
children: [
@@ -77,7 +73,7 @@ class PatientReferralItemWidget extends StatelessWidget {
isReferredTo
? "${TranslationBase.of(context).referTo}: "
: "${TranslationBase.of(context).referredFrom}: ",
- color: Colors.black,
+ color: Colors.grey,
fontWeight: FontWeight.bold,
fontSize: 12,
),
@@ -85,8 +81,8 @@ class PatientReferralItemWidget extends StatelessWidget {
isSameBranch
? TranslationBase.of(context).sameBranch
: TranslationBase.of(context).otherBranch,
- color: Colors.grey,
- fontWeight: FontWeight.normal,
+ color: Colors.black,
+ fontWeight: FontWeight.bold,
fontSize: 12,
),
],
@@ -107,7 +103,7 @@ class PatientReferralItemWidget extends StatelessWidget {
child: AppText(
referralDoctorName != null
? "${TranslationBase.of(context).dr} $referralDoctorName"
- : "",
+ : "-",
color: Colors.black,
fontWeight: FontWeight.bold,
fontSize: 12,
@@ -123,14 +119,14 @@ class PatientReferralItemWidget extends StatelessWidget {
children: [
AppText(
"${TranslationBase.of(context).clinic}: ",
- color: Colors.black,
+ color: Colors.grey,
fontWeight: FontWeight.bold,
fontSize: 12,
),
AppText(
clinicDescription,
- color: Colors.grey,
- fontWeight: FontWeight.normal,
+ color: Colors.black,
+ fontWeight: FontWeight.bold,
fontSize: 12,
),
],
@@ -138,6 +134,44 @@ class PatientReferralItemWidget extends StatelessWidget {
SizedBox(
height: 8,
),
+ Row(
+ children: [
+ AppText(
+ "${TranslationBase.of(context).patientID}: ",
+ color: Colors.grey,
+ fontWeight: FontWeight.bold,
+ fontSize: 12,
+ ),
+ AppText(
+ patientID ?? '-',
+ color: Colors.black,
+ fontWeight: FontWeight.bold,
+ fontSize: 12,
+ ),
+ ],
+ ),
+ SizedBox(
+ height: 8,
+ ),
+ Row(
+ children: [
+ AppText(
+ "${TranslationBase.of(context).patientName}: ",
+ color: Colors.grey,
+ fontWeight: FontWeight.bold,
+ fontSize: 12,
+ ),
+ AppText(
+ patientName ?? '-',
+ color: Colors.black,
+ fontWeight: FontWeight.bold,
+ fontSize: 12,
+ ),
+ ],
+ ),
+ SizedBox(
+ height: 8,
+ ),
Row(
children: [
AppText(
@@ -148,8 +182,27 @@ class PatientReferralItemWidget extends StatelessWidget {
),
AppText(
remark,
+ color: Colors.black,
+ fontWeight: FontWeight.bold,
+ fontSize: 12,
+ ),
+ ],
+ ),
+ SizedBox(
+ height: 8,
+ ),
+ Row(
+ children: [
+ AppText(
+ TranslationBase.of(context).referredOn,
color: Colors.grey,
- fontWeight: FontWeight.normal,
+ fontWeight: FontWeight.bold,
+ fontSize: 12,
+ ),
+ AppText(
+ referredOn ?? '-',
+ color: Colors.black,
+ fontWeight: FontWeight.bold,
fontSize: 12,
),
],
diff --git a/lib/widgets/patients/profile/patient_profile_widget.dart b/lib/widgets/patients/profile/patient_profile_widget.dart
index b8fcf89c..4834e412 100644
--- a/lib/widgets/patients/profile/patient_profile_widget.dart
+++ b/lib/widgets/patients/profile/patient_profile_widget.dart
@@ -117,7 +117,7 @@ class PatientProfileWidget extends StatelessWidget {
height: 4,
),
AppText(
- "${DateUtils.convertDateFromServerFormat(patient.dateofBirth, 'dd-MM-yyyy')} / ${DateUtils.getAgeByBirthday(patient.dateofBirth)/*patient.age*/}",
+ "${DateUtils.convertDateFromServerFormat(patient.dateofBirth, 'dd-MM-yyyy')} / ${DateUtils.getAgeByBirthday(patient.dateofBirth, context)/*patient.age*/}",
fontWeight: FontWeight.normal,
fontSize: 1.6 * SizeConfig.textMultiplier,
),
@@ -297,7 +297,7 @@ class PatientProfileWidget extends StatelessWidget {
patient.createdOn != null
? DateUtils
.differenceBetweenServerDateAndCurrent(
- patient.createdOn)
+ patient.createdOn, context)
: "",
color: Colors.black,
fontWeight: FontWeight.normal,
diff --git a/lib/widgets/patients/profile/profile-welcome-widget.dart b/lib/widgets/patients/profile/profile-welcome-widget.dart
index ce05b83e..ac61f838 100644
--- a/lib/widgets/patients/profile/profile-welcome-widget.dart
+++ b/lib/widgets/patients/profile/profile-welcome-widget.dart
@@ -62,20 +62,24 @@ final double height;
mainAxisAlignment: MainAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.end,
children: [
- Container(
- decoration: BoxDecoration(
- color: Theme.of(context).backgroundColor,
- borderRadius: BorderRadius.all(
- Radius.circular(10.0),
+
+ CircleAvatar(
+
+ // radius: (52)
+ child: ClipRRect(
+ borderRadius:BorderRadius.circular(10),
+
+ child: Image.network(
+ authProvider
+ .doctorProfile.doctorImageURL,
+ fit: BoxFit.fill,
+ width: 70,
+ height: 60,
),
),
- height: 50,
- width: 60,
- child: Image.network(
- authProvider.doctorProfile.doctorImageURL,
-// fit: BoxFit.fill,
- ),
- ),
+ backgroundColor: Colors.transparent,
+ )
+
],
),
),
diff --git a/lib/widgets/patients/profile/profile_medical_info_widget.dart b/lib/widgets/patients/profile/profile_medical_info_widget.dart
index e839a0b9..b5b60619 100644
--- a/lib/widgets/patients/profile/profile_medical_info_widget.dart
+++ b/lib/widgets/patients/profile/profile_medical_info_widget.dart
@@ -8,7 +8,6 @@ import 'package:doctor_app_flutter/screens/base/base_view.dart';
import 'package:doctor_app_flutter/util/date-utils.dart';
import 'package:doctor_app_flutter/util/translations_delegate_base.dart';
import 'package:doctor_app_flutter/widgets/shared/dr_app_circular_progress_Indeicator.dart';
-import 'package:doctor_app_flutter/widgets/shared/network_base_view.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:hexcolor/hexcolor.dart';
@@ -140,14 +139,6 @@ class ProfileMedicalInfoWidget extends StatelessWidget {
nameLine1: TranslationBase.of(context).myReferral,
nameLine2: TranslationBase.of(context).patient,
icon: 'note.png'),
- if (selectedPatientType != 0 && selectedPatientType != 5)
- PatientProfileButton(
- key: key,
- patient: patient,
- route: PATIENT_ORDERS,
- nameLine1: TranslationBase.of(context).orders,
- nameLine2: TranslationBase.of(context).list,
- icon: 'radiology-1.png'),
if (int.parse(patientType) == 7 || int.parse(patientType) == 6)
PatientProfileButton(
key: key,
diff --git a/lib/widgets/patients/profile/soap_update/steps_widget.dart b/lib/widgets/patients/profile/soap_update/steps_widget.dart
index ac5bee65..a5bcf434 100644
--- a/lib/widgets/patients/profile/soap_update/steps_widget.dart
+++ b/lib/widgets/patients/profile/soap_update/steps_widget.dart
@@ -75,7 +75,7 @@ class StepsWidget extends StatelessWidget {
AppText(
"SUBJECTIVE",
fontWeight: FontWeight.bold,
- fontSize: SizeConfig.textMultiplier * 2.0,
+ fontSize: 14,
),
],
),
@@ -125,7 +125,7 @@ class StepsWidget extends StatelessWidget {
AppText(
"OBJECTIVE",
fontWeight: FontWeight.bold,
- fontSize:SizeConfig.textMultiplier * 2.0,
+ fontSize:14,
),
],
),
@@ -178,7 +178,7 @@ class StepsWidget extends StatelessWidget {
AppText(
"ASSESSMENT",
fontWeight: FontWeight.bold,
- fontSize:SizeConfig.textMultiplier * 2.0,
+ fontSize:14,
),
],
),
@@ -230,7 +230,7 @@ class StepsWidget extends StatelessWidget {
"PLAN",
fontWeight: FontWeight.bold,
textAlign: TextAlign.center,
- fontSize:SizeConfig.textMultiplier * 2.0,
+ fontSize:14,
),
),
],
@@ -347,7 +347,7 @@ class StepsWidget extends StatelessWidget {
AppText(
"هدف",
fontWeight: FontWeight.bold,
- fontSize:SizeConfig.textMultiplier * 2.0,
+ fontSize:14,
),
],
),
@@ -400,7 +400,7 @@ class StepsWidget extends StatelessWidget {
child: AppText(
"تقدير",
fontWeight: FontWeight.bold,
- fontSize:SizeConfig.textMultiplier * 2.0,
+ fontSize:14,
),
),
],
@@ -453,7 +453,7 @@ class StepsWidget extends StatelessWidget {
child: AppText(
"خطة",
fontWeight: FontWeight.bold,
- fontSize:SizeConfig.textMultiplier * 2.0,
+ fontSize:14,
),
),
],
diff --git a/lib/widgets/patients/profile/soap_update/subjective/update_allergies_widget.dart b/lib/widgets/patients/profile/soap_update/subjective/update_allergies_widget.dart
index df0cb683..afd14809 100644
--- a/lib/widgets/patients/profile/soap_update/subjective/update_allergies_widget.dart
+++ b/lib/widgets/patients/profile/soap_update/subjective/update_allergies_widget.dart
@@ -31,9 +31,6 @@ class UpdateAllergiesWidget extends StatefulWidget {
}
class _UpdateAllergiesWidgetState extends State {
-
- TextEditingController remarkController = TextEditingController();
-
@override
Widget build(BuildContext context) {
ProjectViewModel projectViewModel = Provider.of(context);
@@ -120,13 +117,25 @@ class _UpdateAllergiesWidgetState extends State {
),
Padding(
padding: const EdgeInsets.symmetric(vertical: 8),
- child: Container(
- width: MediaQuery.of(context).size.width * 0.6,
- child: AppText(
- selectedAllergy.remark ?? '',
- fontSize: 10,
- color: Colors.grey,
- ),
+ child: Row(
+ children: [
+ AppText(
+ selectedAllergy.remark != null &&
+ selectedAllergy.remark != ''
+ ? TranslationBase.of(context).remarks + " : "
+ : '',
+ fontWeight: FontWeight.bold,
+ fontSize: 13,
+ ),
+ Container(
+ width: MediaQuery.of(context).size.width * 0.55,
+ child: AppText(
+ selectedAllergy.remark ?? '',
+ fontSize: 10,
+ color: Colors.grey,
+ ),
+ ),
+ ],
),
),
DividerWithSpacesAround()
@@ -225,6 +234,9 @@ class _AddAllergiesState extends State {
MasterKeyModel _selectedAllergySeverity;
MasterKeyModel _selectedAllergy;
TextEditingController remarkController = TextEditingController();
+ TextEditingController severityController = TextEditingController();
+ TextEditingController allergyController = TextEditingController();
+
GlobalKey key = new GlobalKey>();
bool isFormSubmitted = false;
@@ -232,23 +244,27 @@ class _AddAllergiesState extends State {
String hintText, String selectedText, bool isDropDown,
{IconData icon}) {
return InputDecoration(
+ contentPadding: EdgeInsets.symmetric(vertical: 10, horizontal: 10),
focusedBorder: OutlineInputBorder(
- borderSide: BorderSide(color: Color(0xFFCCCCCC), width: 2.0),
+ borderSide: BorderSide(color: Colors.grey, width: 1.0),
borderRadius: BorderRadius.circular(8),
),
enabledBorder: OutlineInputBorder(
- borderSide: BorderSide(color: Color(0xFFCCCCCC), width: 2.0),
+ borderSide: BorderSide(color: Colors.grey, width: 1.0),
borderRadius: BorderRadius.circular(8),
),
disabledBorder: OutlineInputBorder(
- borderSide: BorderSide(color: Color(0xFFCCCCCC), width: 2.0),
+ borderSide: BorderSide(color: Colors.grey, width: 1.0),
borderRadius: BorderRadius.circular(8),
),
hintText: selectedText != null ? selectedText : hintText,
suffixIcon: isDropDown ? Icon(icon ?? Icons.arrow_drop_down) : null,
hintStyle: TextStyle(
- fontSize: 14,
- color: Colors.grey.shade600,
+ fontSize: 10,
+ color: Theme
+ .of(context)
+ .hintColor,
+ fontWeight: FontWeight.w700
),
);
}
@@ -302,6 +318,7 @@ class _AddAllergiesState extends State {
? () {
setState(() {
_selectedAllergy = null;
+ allergyController.text = null;
});
}
: null,
@@ -314,7 +331,15 @@ class _AddAllergiesState extends State {
? _selectedAllergy.nameEn
: null, true, icon: EvaIcons.search),
itemSubmitted: (item) =>
- setState(() => _selectedAllergy = item),
+ setState(() {
+ _selectedAllergy = item;
+ allergyController.text =
+ projectViewModel.isArabic
+ ? _selectedAllergy
+ .nameAr
+ : _selectedAllergy
+ .nameEn;
+ }),
key: key,
suggestions: model.allergiesList,
itemBuilder: (context, suggestion) =>
@@ -322,27 +347,44 @@ class _AddAllergiesState extends State {
child: Texts(
projectViewModel.isArabic ? suggestion
.nameAr : suggestion.nameEn),
- padding: EdgeInsets.all(8.0)),
+ padding: EdgeInsets.all(2.0)),
itemSorter: (a, b) => 1,
itemFilter: (suggestion, input) =>
suggestion.nameAr.toLowerCase().startsWith(
input.toLowerCase()) ||
suggestion.nameEn.toLowerCase()
.startsWith(input.toLowerCase()),
- ) : TextField(
- decoration: textFieldSelectorDecoration(
- TranslationBase
- .of(context)
- .selectAllergy,
- _selectedAllergy != null
- ? projectViewModel.isArabic
- ? _selectedAllergy.nameAr
- : _selectedAllergy.nameEn
- : null,
- true,
- icon: EvaIcons.search),
- enabled: false,
- ),
+ ) :
+ TextFields(
+ onTapTextFields: model.allergiesList != null
+ ? () {
+ setState(() {
+ _selectedAllergy = null;
+ allergyController.text = null;
+ });
+ }
+ : null,
+ hasLabelText: allergyController.text !=
+ '' ? true : false,
+ showLabelText: true,
+ hintText: TranslationBase
+ .of(context)
+ .selectAllergy,
+ fontSize: 13.5,
+ readOnly: true,
+ fontWeight: FontWeight.w600,
+ maxLines: 2,
+ minLines: 1,
+ controller: allergyController,
+ suffixIcon: EvaIcons.search,
+ validator: (value) {
+ if (value == null)
+ return TranslationBase
+ .of(context)
+ .emptyMessage;
+ else
+ return null;
+ })
),
),
if(isFormSubmitted && _selectedAllergy == null)
@@ -350,10 +392,9 @@ class _AddAllergiesState extends State {
SizedBox(
height: 10,
),
- Container(
- height: screenSize.height * 0.070,
- child: InkWell(
- onTap: model.allergySeverityList != null
+ TextFields(
+ onTapTextFields: model
+ .allergySeverityList != null
? () {
MasterKeyDailog dialog = MasterKeyDailog(
list: model.allergySeverityList,
@@ -364,6 +405,13 @@ class _AddAllergiesState extends State {
setState(() {
_selectedAllergySeverity =
selectedValue;
+
+ severityController.text =
+ projectViewModel.isArabic
+ ? _selectedAllergySeverity
+ .nameAr
+ : _selectedAllergySeverity
+ .nameEn;
});
},
);
@@ -376,21 +424,33 @@ class _AddAllergiesState extends State {
);
}
: null,
- child: TextField(
- decoration: textFieldSelectorDecoration(
- TranslationBase
- .of(context)
- .selectSeverity,
- _selectedAllergySeverity != null
- ? projectViewModel.isArabic?_selectedAllergySeverity.nameAr:_selectedAllergySeverity.nameEn
- : null,
- true),
- enabled: false,
- ),
- ),
+ hasLabelText: severityController.text !=
+ '' ? true : false,
+ showLabelText: true,
+ hintText: TranslationBase
+ .of(context)
+ .selectSeverity,
+ fontSize: 13.5,
+ readOnly: true,
+ // hintColor: Colors.black,
+ fontWeight: FontWeight.w600,
+ maxLines: 2,
+ minLines: 1,
+ controller: severityController,
+ validator: (value) {
+ if (value == null)
+ return TranslationBase
+ .of(context)
+ .emptyMessage;
+ else
+ return null;
+ }), SizedBox(
+ height: 5,
),
- if(isFormSubmitted && _selectedAllergySeverity == null)
+ if(isFormSubmitted &&
+ _selectedAllergySeverity == null)
CustomValidationError(),
+
SizedBox(
height: 10,
),
@@ -398,6 +458,8 @@ class _AddAllergiesState extends State {
margin: EdgeInsets.only(
left: 0, right: 0, top: 15),
child: TextFields(
+ hasLabelText: remarkController.text != ''?true:false,
+ showLabelText: true,
hintText: TranslationBase.of(context).remarks,
fontSize: 13.5,
// hintColor: Colors.black,
diff --git a/lib/widgets/patients/profile/soap_update/subjective/update_subjective_page.dart b/lib/widgets/patients/profile/soap_update/subjective/update_subjective_page.dart
index f4ad30ab..95c4063e 100644
--- a/lib/widgets/patients/profile/soap_update/subjective/update_subjective_page.dart
+++ b/lib/widgets/patients/profile/soap_update/subjective/update_subjective_page.dart
@@ -267,19 +267,21 @@ class _UpdateSubjectivePageState extends State {
Container(
margin: EdgeInsets.only(left: 10, right: 10, top: 15),
child: TextFields(
- hintText: TranslationBase
- .of(context)
+ hasLabelText: complaintsController.text != ''
+ ? true
+ : false,
+ hintText: TranslationBase.of(context)
.addChiefComplaints,
fontSize: 13.5,
// hintColor: Colors.black,
+ showLabelText: true,
fontWeight: FontWeight.w600,
maxLines: 25,
minLines: 13,
controller: complaintsController,
validator: (value) {
if (value == null || value == "")
- return TranslationBase
- .of(context)
+ return TranslationBase.of(context)
.emptyMessage;
else if (value.length < 25)
return TranslationBase
@@ -296,6 +298,10 @@ class _UpdateSubjectivePageState extends State {
Container(
margin: EdgeInsets.only(left: 10, right: 10, top: 15),
child: TextFields(
+ hasLabelText: illnessController.text != ''
+ ? true
+ : false,
+ showLabelText: true,
hintText: TranslationBase
.of(context)
.historyOfPresentIllness,
@@ -322,17 +328,23 @@ class _UpdateSubjectivePageState extends State {
Container(
margin: EdgeInsets.only(left: 10, right: 10, top: 15),
child: TextFields(
- hintText: TranslationBase.of(context)
+ hasLabelText: medicationController.text != ''
+ ? true
+ : false,
+ showLabelText: true,
+ hintText: TranslationBase
+ .of(context)
.currentMedications,
fontSize: 13.5,
// hintColor: Colors.black,
fontWeight: FontWeight.w600,
- maxLines: 2,
+ maxLines: 23,
minLines: 1,
controller: medicationController,
validator: (value) {
if (value == null || value == "")
- return TranslationBase.of(context)
+ return TranslationBase
+ .of(context)
.emptyMessage;
else
return null;
diff --git a/lib/widgets/patients/profile/soap_update/update_assessment_page.dart b/lib/widgets/patients/profile/soap_update/update_assessment_page.dart
index 61bf27f3..542d4196 100644
--- a/lib/widgets/patients/profile/soap_update/update_assessment_page.dart
+++ b/lib/widgets/patients/profile/soap_update/update_assessment_page.dart
@@ -342,11 +342,13 @@ class _UpdateAssessmentPageState extends State {
height: 6,
),
AppText(
- TranslationBase.of(context).remarks + " : ",
- fontWeight: FontWeight
- .bold,
- fontSize: 13,
- ),
+ assessment.remark != null ||
+ assessment.remark == ''
+ ? TranslationBase.of(context).remarks + " : "
+ : '',
+ fontWeight: FontWeight.bold,
+ fontSize: 13,
+ ),
Container(
width: MediaQuery
.of(context)
@@ -567,9 +569,11 @@ class _AddAssessmentDetailsState extends State {
margin: EdgeInsets.only(
left: 0, right: 0, top: 15),
child: TextFields(
- hintText: "Appointment Number",
+ hintText: TranslationBase.of(context).appointmentNumber,
fontSize: 13.5,
// hintColor: Colors.black,
+ hasLabelText: appointmentIdController.text != ''?true:false,
+ showLabelText: true,
fontWeight: FontWeight.w600,
readOnly: true,
controller: appointmentIdController,
@@ -733,6 +737,8 @@ class _AddAssessmentDetailsState extends State {
fontWeight: FontWeight.w600,
maxLines: 18,
minLines: 5,
+ hasLabelText: remarkController.text != ''?true:false,
+ showLabelText: true,
controller: remarkController,
onChanged:(value) {
widget.mySelectedAssessment.remark = remarkController.text;
diff --git a/lib/widgets/patients/profile/soap_update/update_objective_page.dart b/lib/widgets/patients/profile/soap_update/update_objective_page.dart
index adf1e3d2..93182207 100644
--- a/lib/widgets/patients/profile/soap_update/update_objective_page.dart
+++ b/lib/widgets/patients/profile/soap_update/update_objective_page.dart
@@ -319,6 +319,8 @@ class _UpdateObjectivePageState extends State {
margin: EdgeInsets.only(
left: 0, right: 0, top: 15),
child: TextFields(
+ hasLabelText: remarksController.text != ''?true:false,
+ showLabelText: true,
hintText: TranslationBase.of(context).remarks,
fontSize: 13.5,
// hintColor: Colors.black,
diff --git a/lib/widgets/patients/profile/soap_update/update_plan_page.dart b/lib/widgets/patients/profile/soap_update/update_plan_page.dart
index 04b2b73d..e1388ef1 100644
--- a/lib/widgets/patients/profile/soap_update/update_plan_page.dart
+++ b/lib/widgets/patients/profile/soap_update/update_plan_page.dart
@@ -137,6 +137,7 @@ class _UpdatePlanPageState extends State {
margin:
EdgeInsets.only(left: 10, right: 10, top: 15),
child: TextFields(
+
hintText: TranslationBase
.of(context)
.addProgressNote,
@@ -361,6 +362,8 @@ class _UpdatePlanPageState extends State {
margin: EdgeInsets.only(left: 0, right: 0, top: 15),
child: TextFields(
+ hasLabelText: progressNoteController.text != ''?true:false,
+ showLabelText: true,
hintText: TranslationBase.of(context).addProgressNote,
fontSize: 13.5,
// hintColor: Colors.black,
diff --git a/lib/widgets/patients/profile/soap_update/update_soap_index.dart b/lib/widgets/patients/profile/soap_update/update_soap_index.dart
index 61e5a4b4..5c646121 100644
--- a/lib/widgets/patients/profile/soap_update/update_soap_index.dart
+++ b/lib/widgets/patients/profile/soap_update/update_soap_index.dart
@@ -37,7 +37,7 @@ class _UpdateSoapIndexState extends State
GetPatientProgressNoteResModel patientProgressNote = GetPatientProgressNoteResModel();
changePageViewIndex(pageIndex) {
- changeLoadingState(true);
+ if (pageIndex != _currentIndex) changeLoadingState(true);
_controller.jumpToPage(pageIndex);
}
diff --git a/lib/widgets/shared/TextFields.dart b/lib/widgets/shared/TextFields.dart
index 20885eb3..8563bb41 100644
--- a/lib/widgets/shared/TextFields.dart
+++ b/lib/widgets/shared/TextFields.dart
@@ -74,7 +74,9 @@ class TextFields extends StatefulWidget {
this.autoValidate = false,
this.fillColor,
this.hintColor,
- this.onTapTextFields})
+ this.hasBorder = true,
+ this.onTapTextFields,
+ this.hasLabelText = false, this.showLabelText= false})
: super(key: key);
final String hintText;
@@ -111,6 +113,9 @@ class TextFields extends StatefulWidget {
final bool borderOnlyError;
final Color hintColor;
final Color fillColor;
+ final bool hasBorder;
+ final bool showLabelText;
+ bool hasLabelText;
@override
_TextFieldsState createState() => _TextFieldsState();
@@ -208,93 +213,140 @@ class _TextFieldsState extends State {
offset: Offset(0.0, 13.0),
blurRadius: focus ? 34.0 : 12.0)
]),
- child: TextFormField(
- onTap: widget.onTapTextFields,
- keyboardAppearance: Theme.of(context).brightness,
- scrollPhysics: BouncingScrollPhysics(),
- autovalidate: widget.autoValidate,
- textCapitalization: widget.textCapitalization,
- onFieldSubmitted: widget.inputAction == TextInputAction.next
- ? (widget.onSubmit != null
- ? widget.onSubmit
- : (val) {
- _focusNode.nextFocus();
- })
- : widget.onSubmit,
- textInputAction: widget.inputAction,
- minLines: widget.minLines ?? 1,
- maxLines: widget.maxLines ?? 1,
- maxLengthEnforced: widget.maxLengthEnforced,
- initialValue: widget.initialValue,
- onChanged: widget.onChanged,
- focusNode: _focusNode,
- maxLength: widget.maxLength ?? null,
- controller: widget.controller,
- keyboardType: widget.keyboardType,
- readOnly: _determineReadOnly(),
- obscureText: widget.type == "password" && !view ? true : false,
- autofocus: widget.autoFocus ?? false,
- validator: widget.validator,
- onSaved: widget.onSaved,
- style: Theme.of(context)
- .textTheme
- .bodyText1
- .copyWith(fontSize: widget.fontSize, fontWeight: widget.fontWeight),
- inputFormatters: widget.keyboardType == TextInputType.phone
- ? [
- WhitelistingTextInputFormatter.digitsOnly,
- _mobileFormatter,
- ]
- : widget.inputFormatters,
- decoration: InputDecoration(
- counterText: "",
- hintText: widget.hintText,
- hintStyle: TextStyle(
- fontSize: widget.fontSize,
- fontWeight: widget.fontWeight,
- color: widget.hintColor ?? Theme.of(context).hintColor,
- ),
- contentPadding: widget.padding != null
- ? widget.padding
- : EdgeInsets.symmetric(
+ child: Column(
+ children: [
+ TextFormField(
+ onTap: widget.onTapTextFields,
+ keyboardAppearance: Theme.of(context).brightness,
+ scrollPhysics: BouncingScrollPhysics(),
+ autovalidate: widget.autoValidate,
+ textCapitalization: widget.textCapitalization,
+ onFieldSubmitted: widget.inputAction == TextInputAction.next
+ ? (widget.onSubmit != null
+ ? widget.onSubmit
+ : (val) {
+ _focusNode.nextFocus();
+ })
+ : widget.onSubmit,
+ textInputAction: widget.inputAction,
+ minLines: widget.minLines ?? 1,
+ maxLines: widget.maxLines ?? 1,
+ maxLengthEnforced: widget.maxLengthEnforced,
+ initialValue: widget.initialValue,
+ onChanged: (value){
+ if(widget.showLabelText) {
+ if((value== null || value =='' )) {
+ setState(() {
+ widget.hasLabelText = false;
+ });
+ }else{
+ setState(() {
+ widget.hasLabelText = true;
+ });
+ }
+ }
+
+
+ widget.onChanged(value);
+ } ,
+ focusNode: _focusNode,
+ maxLength: widget.maxLength ?? null,
+ controller: widget.controller,
+ keyboardType: widget.keyboardType,
+ readOnly: _determineReadOnly(),
+ obscureText: widget.type == "password" && !view ? true : false,
+ autofocus: widget.autoFocus ?? false,
+ validator: widget.validator,
+ onSaved: widget.onSaved,
+ style: Theme.of(context)
+ .textTheme
+ .bodyText1
+ .copyWith(fontSize: widget.fontSize, fontWeight: widget.fontWeight),
+ inputFormatters: widget.keyboardType == TextInputType.phone
+ ? [
+ WhitelistingTextInputFormatter.digitsOnly,
+ _mobileFormatter,
+ ]
+ : widget.inputFormatters,
+ decoration: InputDecoration(
+ labelText: widget.hasLabelText ? widget.hintText : null,
+ labelStyle: TextStyle(
+
+ fontSize: widget.fontSize,
+ fontWeight: widget.fontWeight,
+ color: widget.hintColor ?? Theme
+ .of(context)
+ .hintColor,
+ ),
+ counterText: "",
+ hintText: widget.hintText,
+ hintStyle: TextStyle(
+ fontSize: widget.fontSize,
+ fontWeight: widget.fontWeight,
+ color: widget.hintColor ?? Theme
+ .of(context)
+ .hintColor,
+ ),
+ contentPadding: widget.padding != null
+ ? widget.padding
+ : EdgeInsets.symmetric(
vertical: (widget.bare && !widget.keepPadding) ? 0.0 : 10.0,
horizontal: 16.0),
- filled: true,
- fillColor: widget.bare
- ? Colors.transparent
- : Theme.of(context).backgroundColor,
- suffixIcon: _buildSuffixIcon(),
- prefixIcon: widget.prefixIcon,
- errorStyle: TextStyle(
- fontSize: 12.0,
- fontWeight: widget.fontWeight,
- height: widget.borderOnlyError ? 0.0 : null),
- errorBorder: OutlineInputBorder(
- borderSide: BorderSide(
- color: Theme.of(context)
- .errorColor
- .withOpacity(widget.bare ? 0.0 : 0.5),
- width: 1.0),
- borderRadius: BorderRadius.circular(widget.bare ? 0.0 : 8.0)),
- focusedErrorBorder: OutlineInputBorder(
- borderSide: BorderSide(
- color: Theme.of(context)
- .errorColor
- .withOpacity(widget.bare ? 0.0 : 0.5),
- width: 1.0),
- borderRadius: BorderRadius.circular(widget.bare ? 0.0 : 8.0)),
- focusedBorder: OutlineInputBorder(
- borderSide: BorderSide(color: Colors.grey, width: 1.0),
- borderRadius: BorderRadius.circular(widget.bare ? 0.0 : 8.0)),
- disabledBorder: OutlineInputBorder(
- borderSide: BorderSide(color: Colors.grey, width: 1.0),
- borderRadius: BorderRadius.circular(widget.bare ? 0.0 : 8.0)),
- enabledBorder: OutlineInputBorder(
- borderSide: BorderSide(color: Colors.grey, width: 1.0),
- borderRadius: BorderRadius.circular(widget.bare ? 0.0 : 8.0),
+ filled: true,
+ fillColor: widget.bare
+ ? Colors.transparent
+ : Theme
+ .of(context)
+ .backgroundColor,
+ suffixIcon: _buildSuffixIcon(),
+ prefixIcon: widget.prefixIcon,
+ errorStyle: TextStyle(
+ fontSize: 12.0,
+ fontWeight: widget.fontWeight,
+ height: widget.borderOnlyError ? 0.0 : null),
+ errorBorder: OutlineInputBorder(
+ borderSide: widget.hasBorder ? BorderSide(
+ color: Theme
+ .of(context)
+ .errorColor
+ .withOpacity(widget.bare ? 0.0 : 0.5),
+ width: 1.0) : BorderSide(
+ color: Colors.transparent, width: 0),
+ borderRadius: widget.hasBorder ? BorderRadius.circular(
+ widget.bare ? 0.0 : 8.0) : BorderRadius.circular(0.0),),
+ focusedErrorBorder: OutlineInputBorder(
+ borderSide: widget.hasBorder ? BorderSide(
+ color: Theme
+ .of(context)
+ .errorColor
+ .withOpacity(widget.bare ? 0.0 : 0.5),
+ width: 1.0) : BorderSide(
+ color: Colors.transparent, width: 0),
+ borderRadius: BorderRadius.circular(widget.bare ? 0.0 : 8.0)),
+ focusedBorder: OutlineInputBorder(
+ borderSide: widget.hasBorder ? BorderSide(
+ color: Colors.grey, width: 1.0) : BorderSide(
+ color: Colors.transparent, width: 0),
+ borderRadius: widget.hasBorder ? BorderRadius.circular(
+ widget.bare ? 0.0 : 8.0) : BorderRadius.circular(0.0),),
+ disabledBorder: OutlineInputBorder(
+ borderSide: widget.hasBorder ? BorderSide(
+ color: Colors.grey, width: 1.0) : BorderSide(
+ color: Colors.transparent, width: 0),
+ borderRadius: widget.hasBorder ? BorderRadius.circular(
+ widget.bare ? 0.0 : 8.0) : BorderRadius.circular(0.0)),
+ enabledBorder: OutlineInputBorder(
+ borderSide: widget.hasBorder ? BorderSide(
+ color: Colors.grey, width: 1.0) : BorderSide(
+ color: Colors.transparent, width: 0),
+ borderRadius: widget.hasBorder ? BorderRadius.circular(
+ widget.bare ? 0.0 : 8.0) : BorderRadius.circular(0.0),
+ ),
+ ),
),
- ),
+ ],
),
+
));
}
}
diff --git a/lib/widgets/shared/app_drawer_widget.dart b/lib/widgets/shared/app_drawer_widget.dart
index 11664510..a29d764e 100644
--- a/lib/widgets/shared/app_drawer_widget.dart
+++ b/lib/widgets/shared/app_drawer_widget.dart
@@ -83,32 +83,32 @@ class _AppDrawerState extends State {
children: [
authProvider.doctorProfile != null
? CircleAvatar(
- radius: SizeConfig.imageSizeMultiplier * 12,
- backgroundImage: NetworkImage(
- authProvider.doctorProfile.doctorImageURL),
- backgroundColor: Colors.white,
- )
+ radius:
+ SizeConfig.imageSizeMultiplier * 12,
+ // radius: (52)
+ child: ClipRRect(
+ borderRadius:BorderRadius.circular(50),
+
+ child: Image.network(
+ authProvider
+ .doctorProfile.doctorImageURL,
+ fit: BoxFit.fill,
+ width: 700,
+ ),
+ ),
+ backgroundColor: Colors.transparent,
+ )
: SizedBox(),
authProvider.doctorProfile != null
? Padding(
padding: EdgeInsets.only(top: 10),
child: AppText(
- authProvider.doctorProfile?.doctorName,
+ TranslationBase.of(context).dr +authProvider.doctorProfile?.doctorName,
fontWeight: FontWeight.bold,
color: Colors.black,
fontSize: SizeConfig.textMultiplier * 2,
))
: SizedBox(),
- AppText(
- projectsProvider.isArabic
- ? authProvider
- .doctorProfile.titleDescriptionN ??
- ""
- : authProvider
- .doctorProfile?.titleDescription ??
- "",
- fontWeight: FontWeight.normal,
- color: Colors.black87),
],
),
),
diff --git a/lib/widgets/shared/dialogs/dailog-list-select.dart b/lib/widgets/shared/dialogs/dailog-list-select.dart
index fa33a72d..f972e790 100644
--- a/lib/widgets/shared/dialogs/dailog-list-select.dart
+++ b/lib/widgets/shared/dialogs/dailog-list-select.dart
@@ -2,6 +2,8 @@ import 'package:doctor_app_flutter/client/base_app_client.dart';
import 'package:doctor_app_flutter/icons_app/doctor_app_icons.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/TextFields.dart';
+import 'package:eva_icons_flutter/eva_icons_flutter.dart';
import 'package:flutter/material.dart';
class ListSelectDialog extends StatefulWidget {
@@ -12,24 +14,32 @@ class ListSelectDialog extends StatefulWidget {
final Function(dynamic) okFunction;
dynamic selectedValue;
final Widget searchWidget;
+ final bool usingSearch;
+ final String hintSearchText;
- ListSelectDialog(
- {@required this.list,
- @required this.attributeName,
- @required this.attributeValueId,
- @required this.okText,
- @required this.okFunction,
- this.searchWidget});
+ ListSelectDialog({
+ @required this.list,
+ @required this.attributeName,
+ @required this.attributeValueId,
+ @required this.okText,
+ @required this.okFunction,
+ this.searchWidget,
+ this.usingSearch = false,
+ this.hintSearchText,
+ });
@override
_ListSelectDialogState createState() => _ListSelectDialogState();
}
class _ListSelectDialogState extends State {
+ List items = List();
+
@override
void initState() {
- super.initState();
widget.selectedValue = widget.selectedValue ?? widget.list[0];
+ items.addAll(widget.list);
+ super.initState();
}
@override
@@ -47,8 +57,8 @@ class _ListSelectDialogState extends State {
Widget continueButton = FlatButton(
child: Text(this.widget.okText),
onPressed: () {
- this.widget.okFunction(widget.selectedValue);
Navigator.of(context).pop();
+ this.widget.okFunction(widget.selectedValue);
});
// set up the AlertDialog
AlertDialog alert = AlertDialog(
@@ -69,7 +79,21 @@ class _ListSelectDialogState extends State {
child: Column(
children: [
if (widget.searchWidget != null) widget.searchWidget,
- ...widget.list
+ if(widget.usingSearch)
+ Container(
+ height: MediaQuery.of(context).size.height * 0.070,
+ child: TextField(
+ decoration: Helpers.textFieldSelectorDecoration(
+ widget.hintSearchText ?? TranslationBase
+ .of(context)
+ .search, null, false, suffixIcon: Icon(Icons.search,)),
+ enabled: true,
+ keyboardType: TextInputType.text,
+ onChanged: (value) {
+ filterSearchResults(value);
+ },
+ )),
+ ...items
.map((item) => RadioListTile(
title: Text("${item[widget.attributeName].toString()}"),
groupValue: widget.selectedValue[widget.attributeValueId]
@@ -95,4 +119,27 @@ class _ListSelectDialogState extends State {
static closeAlertDialog(BuildContext context) {
Navigator.of(context).pop();
}
+
+ void filterSearchResults(String query) {
+ List dummySearchList = List();
+ dummySearchList.addAll(widget.list);
+ if (query.isNotEmpty) {
+ List dummyListData = List();
+ dummySearchList.forEach((item) {
+ if ("${item[widget.attributeName].toString()}".toLowerCase().contains(query.toLowerCase())) {
+ dummyListData.add(item);
+ }
+ });
+ setState(() {
+ items.clear();
+ items.addAll(dummyListData);
+ });
+ return;
+ } else {
+ setState(() {
+ items.clear();
+ items.addAll(widget.list);
+ });
+ }
+ }
}
diff --git a/lib/widgets/shared/profile_image_widget.dart b/lib/widgets/shared/profile_image_widget.dart
index db22a13a..3db93f9d 100644
--- a/lib/widgets/shared/profile_image_widget.dart
+++ b/lib/widgets/shared/profile_image_widget.dart
@@ -34,11 +34,21 @@ class ProfileImageWidget extends StatelessWidget {
Container(
height: height,
width: width,
- child: CircleAvatar(
- radius: SizeConfig.imageSizeMultiplier * 12,
- backgroundImage: NetworkImage(url),
+ child:CircleAvatar(
+ radius:
+ SizeConfig.imageSizeMultiplier * 12,
+ // radius: (52)
+ child: ClipRRect(
+ borderRadius:BorderRadius.circular(50),
+
+ child: Image.network(
+ url,
+ fit: BoxFit.fill,
+ width: 700,
+ ),
+ ),
backgroundColor: Colors.transparent,
- ),
+ )
),
name == null || des == null
? SizedBox()
diff --git a/pubspec.lock b/pubspec.lock
index c4bbf56a..addef845 100644
--- a/pubspec.lock
+++ b/pubspec.lock
@@ -105,7 +105,7 @@ packages:
name: build_runner
url: "https://pub.dartlang.org"
source: hosted
- version: "1.10.13"
+ version: "1.11.0"
build_runner_core:
dependency: transitive
description:
@@ -559,7 +559,7 @@ packages:
name: meta
url: "https://pub.dartlang.org"
source: hosted
- version: "1.3.0-nullsafety.3"
+ version: "1.3.0-nullsafety.4"
mime:
dependency: transitive
description:
@@ -713,7 +713,7 @@ packages:
name: provider
url: "https://pub.dartlang.org"
source: hosted
- version: "4.3.2+4"
+ version: "4.3.3"
pub_semver:
dependency: transitive
description:
@@ -783,7 +783,7 @@ packages:
name: shared_preferences_windows
url: "https://pub.dartlang.org"
source: hosted
- version: "0.0.1+3"
+ version: "0.0.2+2"
shelf:
dependency: transitive
description:
@@ -830,7 +830,7 @@ packages:
name: stack_trace
url: "https://pub.dartlang.org"
source: hosted
- version: "1.10.0-nullsafety.1"
+ version: "1.10.0-nullsafety.2"
stream_channel:
dependency: transitive
description:
@@ -942,7 +942,7 @@ packages:
name: web_socket_channel
url: "https://pub.dartlang.org"
source: hosted
- version: "1.1.0"
+ version: "1.2.0"
win32:
dependency: transitive
description:
@@ -965,5 +965,5 @@ packages:
source: hosted
version: "2.2.1"
sdks:
- dart: ">=2.10.0 <2.11.0"
+ dart: ">=2.10.0 <=2.11.0-213.1.beta"
flutter: ">=1.22.0 <2.0.0"
diff --git a/pubspec.yaml b/pubspec.yaml
index cf69fa5b..7602415e 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -62,8 +62,9 @@ dependencies:
#chart
fl_chart: ^0.12.1
- #firebase
- firebase_messaging: ^7.0.0
+ # Firebase
+ firebase_messaging: ^7.0.3
+
#GIF image
flutter_gifimage: ^1.0.1