Merge branch 'dev_v3.13.6_CS_V2' of http://34.17.52.180/Haroon6138/diplomatic-quarter into dev_v3.13.6_CS_V2

# Conflicts:
#	lib/vital_signs/components/vital_sign_widget.dart
#	lib/vital_signs/vital_sign.dart
dev_v3.13.6_CS_V2
taha.alam 1 year ago
commit a6c58372c2

@ -255,6 +255,7 @@ class _InPatientPendingAdvancePaymentState extends State<InPatientPendingAdvance
int clinicID = projectViewModel.isPatientAdmitted ? projectViewModel.getAdmissionInfoResponseModel.clinicID! : 17;
service
.getInPatientPaymentLink(
widget.inPatientAdvanceResponseModel.responseInpatientAdvanceInfo![0].paymentRequestID!,
projectViewModel.inPatientProjectID,
// projectViewModel.getAdmissionInfoResponseModel.admissionNo!,
projectViewModel.isPatientAdmitted ? projectViewModel.getAdmissionInfoResponseModel.admissionRequestNo! : projectViewModel.getAdmissionRequestInfoResponseModel.admissionRequestNo!,

@ -472,7 +472,7 @@ class _CallScreenState extends State<CallScreen> {
],
),
);
if (errorType == Errors.SessionJoinFailed || errorType == Errors.SessionDisconnecting) {
if (errorType == Errors.SessionJoinFailed || errorType == Errors.SessionDisconncting) {
Timer(
const Duration(milliseconds: 1000),
() => Navigator.pop(context),

@ -9,13 +9,19 @@ import 'package:diplomaticquarterapp/pages/conference/zoom/call_screen.dart';
import 'package:diplomaticquarterapp/theme/colors.dart';
import 'package:diplomaticquarterapp/uitl/app_shared_preferences.dart';
import 'package:diplomaticquarterapp/uitl/gif_loader_dialog_utils.dart';
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
import 'package:diplomaticquarterapp/uitl/utils_new.dart';
import 'package:diplomaticquarterapp/vital_signs/vital_sign.dart';
import 'package:diplomaticquarterapp/widgets/buttons/defaultButton.dart';
import 'package:diplomaticquarterapp/widgets/transitions/fade_page.dart';
import 'package:firebase_crashlytics/firebase_crashlytics.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter_svg/flutter_svg.dart';
import 'package:provider/provider.dart';
import 'package:url_launcher/url_launcher.dart';
import 'package:url_launcher/url_launcher_string.dart';
import 'package:vital_sign_camera/vital_sign_camera.dart';
import 'fragments/home_page_fragment2.dart';
import 'landing_page_pharmcy.dart';
@ -34,6 +40,12 @@ class _HomePageState2 extends State<HomePage2> {
PharmacyModuleViewModel pharmacyModuleViewModel = locator<PharmacyModuleViewModel>();
late ProjectViewModel projectViewModel;
TextEditingController weightTextController = new TextEditingController();
TextEditingController heightTextController = new TextEditingController();
TextEditingController ageTextController = new TextEditingController();
String radioValue = "";
@override
void initState() {
super.initState();
@ -45,37 +57,146 @@ class _HomePageState2 extends State<HomePage2> {
return BaseView<DashboardViewModel>(
onModelReady: (model) => model.getPatientRadOrders(),
builder: (_, model, wi) => Container(
color: CustomColors.backgroudGreyColor,
builder: (_, model, wi) => Scaffold(
resizeToAvoidBottomInset: true,
// color: CustomColors.backgroudGreyColor,
// color: Colors.yellow,
child: SingleChildScrollView(
physics: BouncingScrollPhysics(),
// child:
// SingleChildScrollView(
// physics: BouncingScrollPhysics(),
body: SingleChildScrollView(
child: Material(
color: CustomColors.backgroudGreyColor,
child: Padding(
padding: const EdgeInsets.all(16.0),
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
// crossAxisAlignment: CrossAxisAlignment.start,
children: [
HomePageFragment2(
model,
onLoginClick: () {
widget.onLoginClick!();
// FirebaseCrashlytics.instance.crash();
// Navigator.pushNamed(
// context,
// "zoom_call_page",
// arguments: CallArguments("h9qkpf02", "123", "Patient", "40", "1", false),
// );
SvgPicture.asset(
'assets/images/new/cloud_logo.svg',
width: 150,
height: 150,
),
mHeight(16.0),
Text(
"Contact-Less Vitals",
style: TextStyle(color: Colors.black, fontSize: 22, letterSpacing: -0.68, fontWeight: FontWeight.bold),
),
mHeight(16.0),
Text(
"Select Gender:",
textAlign: TextAlign.start,
style: TextStyle(color: Colors.black, fontSize: 14, letterSpacing: -0.68, fontWeight: FontWeight.bold),
),
mHeight(8.0),
Container(
padding: EdgeInsets.only(left: 6, right: 6),
child: Row(
children: [
Flexible(
child: Row(
children: [
Radio(
value: TranslationBase.of(context).male,
groupValue: radioValue,
onChanged: (v) {
setState(() {
radioValue = v!;
});
},
onPharmacyClick: () {
// getPharmacyToken(model);
Uri uri = Uri.parse(PHARMACY_REDIRECT_URL);
launchUrl(uri, mode: LaunchMode.externalApplication);
),
Text(
TranslationBase.of(context).male,
style: TextStyle(
fontSize: 12,
letterSpacing: -0.48,
fontWeight: FontWeight.w600,
),
),
],
),
),
Flexible(
child: Row(
children: [
Radio(
value: TranslationBase.of(context).female,
groupValue: radioValue,
onChanged: (v) {
setState(() {
radioValue = v!;
});
},
onMedicalFileClick: () {
widget.onMedicalFileClick!();
),
Text(
TranslationBase.of(context).female,
style: TextStyle(
fontSize: 12,
letterSpacing: -0.48,
fontWeight: FontWeight.w600,
),
),
],
),
),
],
),
),
mHeight(16.0),
inputWidget(TranslationBase.of(context).age, "0", ageTextController),
mHeight(16.0),
inputWidget(TranslationBase.of(context).weightAdd + " (kg)", "0", weightTextController),
mHeight(16.0),
inputWidget(TranslationBase.of(context).height + " (cm)", "0", heightTextController),
mHeight(16.0),
DefaultButton(
TranslationBase.of(context).start,
(ageTextController.text == "" || weightTextController.text == "" || heightTextController.text == "")
? null
: () {
final UserInfo userInfo = UserInfo(
age: double.parse(ageTextController.text),
gender: radioValue == TranslationBase.of(context).male ? Gender.male : Gender.female,
weight: double.parse(weightTextController.text),
// kg, Optional
height: double.parse(heightTextController.text),
// cm, Optional
waistCircumference: 0,
// cm Optional
userId: 'dbd13e86-47f4-4a43-85f6-cf62fa750117');
Navigator.push(context, FadePage(page: VitalSigns(userInfo: userInfo)));
},
)
color: CustomColors.green,
disabledColor: CustomColors.grey,
),
// HomePageFragment2(
// model,
// onLoginClick: () {
// widget.onLoginClick!();
// // FirebaseCrashlytics.instance.crash();
// // Navigator.pushNamed(
// // context,
// // "zoom_call_page",
// // arguments: CallArguments("h9qkpf02", "123", "Patient", "40", "1", false),
// // );
// },
// onPharmacyClick: () {
// // getPharmacyToken(model);
// Uri uri = Uri.parse(PHARMACY_REDIRECT_URL);
// launchUrl(uri, mode: LaunchMode.externalApplication);
// },
// onMedicalFileClick: () {
// widget.onMedicalFileClick!();
// },
// )
],
),
),
),
),
// ),
),
);
}
@ -101,4 +222,86 @@ class _HomePageState2 extends State<HomePage2> {
navigateToCovidDriveThru() {
Navigator.push(context, FadePage(page: CovidDrivethruLocation()));
}
Widget inputWidget(String _labelText, String _hintText, TextEditingController _controller, {String? prefix, bool isEnable = true, bool hasSelection = false}) {
return Container(
padding: EdgeInsets.only(left: 16, right: 16, bottom: 15, top: 15),
alignment: Alignment.center,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(15),
color: Colors.white,
border: Border.all(
color: Color(0xffefefef),
width: 1,
),
),
child: InkWell(
onTap: hasSelection ? () {} : null,
child: Row(
children: [
Expanded(
child: Column(
mainAxisSize: MainAxisSize.min,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
_labelText,
style: TextStyle(
fontSize: 11,
fontWeight: FontWeight.w600,
color: Color(0xff2B353E),
letterSpacing: -0.44,
),
),
TextField(
enabled: isEnable,
scrollPadding: EdgeInsets.zero,
keyboardType: TextInputType.number,
controller: _controller,
onChanged: (value) => {},
style: TextStyle(
fontSize: 14,
height: 21 / 14,
fontWeight: FontWeight.w400,
color: Color(0xff2B353E),
letterSpacing: -0.44,
),
decoration: InputDecoration(
isDense: true,
hintText: _hintText,
hintStyle: TextStyle(
fontSize: 14,
height: 21 / 14,
fontWeight: FontWeight.w400,
color: Color(0xff575757),
letterSpacing: -0.56,
),
prefixIconConstraints: BoxConstraints(minWidth: 50),
prefixIcon: prefix == null
? null
: Text(
"+" + prefix,
style: TextStyle(
fontSize: 14,
height: 21 / 14,
fontWeight: FontWeight.w500,
color: Color(0xff2E303A),
letterSpacing: -0.56,
),
),
contentPadding: EdgeInsets.zero,
border: InputBorder.none,
focusedBorder: InputBorder.none,
enabledBorder: InputBorder.none,
),
),
],
),
),
if (hasSelection) Icon(Icons.keyboard_arrow_down_outlined),
],
),
),
);
}
}

@ -615,20 +615,22 @@ class _LandingPageState extends State<LandingPage> with WidgetsBindingObserver {
),
RobotIcon()
])),
bottomNavigationBar: BottomNavBar(
changeIndex: changeCurrentTab,
index: currentTab,
),
// bottomNavigationBar: BottomNavBar(
// changeIndex: changeCurrentTab,
// index: currentTab,
// ),
floatingActionButtonLocation: FloatingActionButtonLocation.centerDocked,
floatingActionButton: (projectViewModel.havePrivilege(34) && currentTab == 0)
? FloatingButton(
elevation: true,
onTap: () {
changeCurrentTab(2);
projectViewModel.analytics.appointment.book_appointment();
},
)
: null);
floatingActionButton:
// (projectViewModel.havePrivilege(34) && currentTab == 0)
// ? FloatingButton(
// elevation: true,
// onTap: () {
// changeCurrentTab(2);
// projectViewModel.analytics.appointment.book_appointment();
// },
// )
// :
null);
}
triggerRobot() {

@ -232,7 +232,7 @@ class ServicesView extends StatelessWidget {
} else if (hmgServices.action == 1) {
openLiveCare(context);
} else if (hmgServices.action == 111) {
Navigator.push(context, FadePage(page: VitalSigns()));
// Navigator.push(context, FadePage(page: VitalSigns()));
} else if (hmgServices.action == 2) {
//todo for temporary basis
// Navigator.push(context, FadePage(page: ResultScreen(

@ -184,11 +184,12 @@ class ClinicListService extends BaseService {
return Future.value(localRes);
}
Future<Map> getInPatientPaymentLink(int projectID, int admissionNo, int orderID, String name, String email, num amount, String nationalID, int clinicID, context) async {
Future<Map> getInPatientPaymentLink(int paymentRequestID, int projectID, int admissionNo, int orderID, String name, String email, num amount, String nationalID, int clinicID, context) async {
Map<String, dynamic> request;
// request = {"ProjectID": projectID, "AdmissionReqNo": admissionReqNo, "AdmissionNo": admissionNo};
request = {
"PaymentRequestId": paymentRequestID,
"ProjectID": projectID,
"ClientOrderID": orderID,
"OrderDescription": "InPatient Advance Payment",

@ -1,5 +1,6 @@
import 'package:diplomaticquarterapp/theme/colors.dart';
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
import 'package:diplomaticquarterapp/uitl/utils_new.dart';
import 'package:diplomaticquarterapp/vital_signs/data/vitals_benchmark.dart';
import 'package:flutter/material.dart';
import 'package:flutter_svg/flutter_svg.dart';
@ -35,10 +36,7 @@ class VitalSignWidget extends StatelessWidget {
shadowColor: CustomColors.lightGreyColor,
child: Padding(
padding: const EdgeInsets.all(12.0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisSize: MainAxisSize.min,
children: [
child: Column(crossAxisAlignment: CrossAxisAlignment.start, mainAxisSize: MainAxisSize.min, children: [
Row(
children: [
SvgPicture.asset(vectorUrl, width: 36.0, height: 36.0),
@ -75,17 +73,13 @@ class VitalSignWidget extends StatelessWidget {
),
if (condition is RangeConditionWithTitle)
Status(
status:
"${TranslationBase.of(context).getValue(condition.current?.quantitativeInterpretation ?? '')}",
originalData: condition.current?.quantitativeInterpretation??'',
status: "${TranslationBase.of(context).getValue(condition.current?.interpretation ?? '')}",
originalData: condition.current?.interpretation ?? '',
)
else if (condition is RangeConditionForBloodPressure)
Status(
status:
"${TranslationBase.of(context).getValue(condition.systolic?.systolic.quantitativeInterpretation ?? '')}",
originalData: condition
.systolic?.systolic.quantitativeInterpretation ??
'',
status: "${TranslationBase.of(context).getValue(condition.systolic?.systolic.interpretation ?? '')}",
originalData: condition.systolic?.systolic.interpretation ?? '',
)
// Text(
// "${TranslationBase.of(context).getValue(condition.current?.quantitativeInterpretation ?? '')}",
@ -118,9 +112,8 @@ class VitalSignWidget extends StatelessWidget {
itemCount: condition.condition?.length ?? 0,
itemBuilder: (_, index) => RangeWidget(
title: condition.condition?[index].title ?? 'test',
isSelected: condition.condition?[index]
.isInRange(vitalSignValue) ==
true,
isSelected: condition.condition?[index].isInRange(vitalSignValue) == true,
originalData: condition.current?.interpretation ?? '',
),
),
),
@ -159,15 +152,11 @@ class VitalSignWidget extends StatelessWidget {
shrinkWrap: true,
itemCount: condition.condition?.length ?? 0,
itemBuilder: (_, currentIndex) {
var title =
condition.condition?[currentIndex].quotient ??
'';
var title = condition.condition?[currentIndex].quotient ?? '';
return RangeWidget(
title: title,
isSelected: condition.condition?[currentIndex]
?.getValue("systolic-lng")
?.isSelected ==
true,
isSelected: condition.condition?[currentIndex]?.getValue("systolic-lng")?.isSelected == true,
originalData: condition.systolic?.systolic.interpretation ?? '',
);
}),
),
@ -305,8 +294,9 @@ class VitalSignWidget extends StatelessWidget {
class RangeWidget extends StatelessWidget {
final String title;
final bool isSelected;
final String originalData;
const RangeWidget({super.key, required this.title, required this.isSelected});
const RangeWidget({super.key, required this.title, required this.isSelected, required this.originalData});
@override
Widget build(BuildContext context) {
@ -317,18 +307,14 @@ class RangeWidget extends StatelessWidget {
borderRadius: BorderRadius.circular(3),
),
// color: Color(0xFF359846),
color: (isSelected)
? CustomColors.accentColor
: CustomColors.lightGreyColor,
color: (isSelected) ? getColor(originalData) : CustomColors.lightGreyColor,
child: Padding(
padding: const EdgeInsets.all(8.0),
child: Center(
child: Text(
title,
textAlign: TextAlign.center,
style: TextStyle(
color: (isSelected) ? Colors.white : Colors.black,
fontSize: 12),
style: TextStyle(color: (isSelected) ? Colors.white : Colors.black, fontSize: 12),
),
),
),
@ -363,29 +349,28 @@ class Status extends StatelessWidget {
borderRadius: BorderRadius.circular(3),
),
// color: Color(0xFF359846),
color: (originalData.toLowerCase() == 'good' ||
originalData.toLowerCase() == 'excellent' ||
originalData.toLowerCase() == 'normal')
? Color(0xFFD8E8DB)
: (originalData.toLowerCase() == 'poor' ||
originalData.toLowerCase() == 'atRisk')
? Color(0xFFD3D37E)
: Color(0x98d02127),
color: getColor(originalData),
child: Padding(
padding: const EdgeInsets.symmetric(horizontal: 10, vertical: 6),
child: Text(status,
style: TextStyle(
color: (originalData.toLowerCase() == 'good' ||
originalData.toLowerCase() == 'excellent' ||
originalData.toLowerCase() == 'normal')
? Color(0xFF359846)
: (originalData.toLowerCase() == 'poor' ||
originalData.toLowerCase() == 'atRisk')
? Colors.white
: Colors.white,
fontSize: 8,
color: Colors.white,
fontSize: 12,
fontWeight: FontWeight.w600,
)),
));
}
getColor(title) {
switch (title) {
case "excellent":
return Color(0xFF275b45);
case "good":
return Color(0xFF507a3d);
case "poor":
return Color(0xFFa86452);
case "atRisk":
return Color(0xFFa2494b);
}
}
}

@ -103,7 +103,7 @@ var vital = {
"unit": "mmHg",
"values": [
{
"quotient": "(0-90) / (0-60)",
"quotient": "0-90",
"systolic-lng": {
"min": 0,
"max": 90,
@ -122,7 +122,7 @@ var vital = {
}
},
{
"quotient": "(90-120) / (60-70)",
"quotient": "90-120",
"systolic-lng": {
"min": 90,
"max": 120,
@ -141,7 +141,7 @@ var vital = {
}
},
{
"quotient": "(120-130) / (70-80)",
"quotient": "120-130",
"systolic-lng": {
"min": 120,
"max": 130,
@ -160,7 +160,7 @@ var vital = {
}
},
{
"quotient": "(130-140) / (80-90)",
"quotient": "130-140",
"systolic-lng": {
"min": 130,
"max": 140,

@ -31,7 +31,6 @@ class ResultScreen extends StatelessWidget {
final deviceSize = MediaQuery.of(context).size;
const textColor = Color.fromARGB(255, 0, 0, 0);
print('the age is ${healthResult?.vitalSigns?.facialSkinAge}');
return AppScaffold(
isShowAppBar: true,
appBarTitle: TranslationBase.of(context).result,
@ -39,53 +38,48 @@ class ResultScreen extends StatelessWidget {
showNewAppBarTitle: true,
overrideUserLogin: true,
backgroundColor: Color(0xffF8F8F8),
appBarIcons: [
Center(
child: Padding(
padding: const EdgeInsets.symmetric(horizontal: 16),
child: Text(
"Scan Quality: ${_scanParameters!.signalQuality.toStringAsFixed(0)}%",
style: TextStyle(color: Colors.black, fontSize: 14, letterSpacing: -0.68, fontWeight: FontWeight.bold),
),
),
),
],
body: Padding(
padding: const EdgeInsets.all(15),
child: ListView(
shrinkWrap: true,
children: [
Expanded(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
if (_holisticAnalysis != null &&
_holisticAnalysis?.generalWellness != null)
child: Column(crossAxisAlignment: CrossAxisAlignment.start, children: [
if (_holisticAnalysis != null && _holisticAnalysis?.generalWellness != null)
VitalSignWidget(
textColor: textColor,
lookupValues: vitalValues['generalWellness']!,
vitalSignName:
TranslationBase.of(context).generalWellness,
condition: RangeConditionWithTitle.fromJson(
vital['generalWellness']!,
formatValueToTwoDp(
healthResult?.holisticHealth?.generalWellness)),
vitalSignValue: formatValueToTwoDp(
healthResult?.holisticHealth?.generalWellness),
vitalSignName: TranslationBase.of(context).generalWellness,
condition: RangeConditionWithTitle.fromJson(vital['generalWellness']!, formatValueToTwoDp(healthResult?.holisticHealth?.generalWellness)),
vitalSignValue: formatValueToTwoDp(healthResult?.holisticHealth?.generalWellness),
vectorUrl: 'assets/images/svg/wellness.svg',
), //wellness
if (_vitalSign?.stress != null)
VitalSignWidget(
textColor: textColor,
vitalSignName: TranslationBase.of(context).stress,
condition: RangeConditionWithTitle.fromJson(
vital['stressLevel']!,
formatValueToTwoDp(
healthResult?.vitalSigns.stress)),
condition: RangeConditionWithTitle.fromJson(vital['stressLevel']!, formatValueToTwoDp(healthResult?.vitalSigns.stress)),
lookupValues: vitalValues['stressLevel']!,
vitalSignValue:
formatValueToTwoDp(healthResult?.vitalSigns.stress),
vitalSignValue: formatValueToTwoDp(healthResult?.vitalSigns.stress),
vectorUrl: 'assets/images/svg/stress.svg',
),
VitalSignWidget(
textColor: textColor,
vitalSignName: TranslationBase.of(context).pulseTitle,
condition: RangeConditionWithTitle.fromJson(
vital['HR']!,
formatValueToTwoDp(
healthResult?.vitalSigns.heartRate)),
condition: RangeConditionWithTitle.fromJson(vital['HR']!, formatValueToTwoDp(healthResult?.vitalSigns.heartRate)),
lookupValues: vitalValues['HR']!,
vitalSignValue: formatValueToTwoDp(
healthResult?.vitalSigns.heartRate),
vitalSignValue: formatValueToTwoDp(healthResult?.vitalSigns.heartRate),
vectorUrl: 'assets/images/svg/heartrate.svg',
),
//heart rate
@ -93,12 +87,9 @@ class ResultScreen extends StatelessWidget {
VitalSignWidget(
textColor: textColor,
vitalSignName: "Blood Pressure",
condition: RangeConditionForBloodPressure.fromJson(
vital['blood_pressure']!,
healthResult?.vitalSigns.bloodPressure ?? ""),
condition: RangeConditionForBloodPressure.fromJson(vital['blood_pressure']!, healthResult?.vitalSigns.bloodPressure ?? ""),
bloodPressureValues: vitalValues['blood_pressure']!,
vitalSignValue:
healthResult?.vitalSigns.bloodPressure ?? "",
vitalSignValue: healthResult?.vitalSigns.bloodPressure ?? "",
vectorUrl: 'assets/images/svg/bloodpressure.svg',
),
if (_vitalSign?.hrvSdnn != null)
@ -107,52 +98,34 @@ class ResultScreen extends StatelessWidget {
textColor: textColor,
vitalSignName: "HRV SDNN",
lookupValues: vitalValues['hrvv']!,
condition: RangeConditionWithTitle.fromJson(
vital['hrvv']!,
formatValueToTwoDp(
healthResult?.vitalSigns.hrvSdnn)),
vitalSignValue: formatValueToTwoDp(
healthResult?.vitalSigns.hrvSdnn)),
condition: RangeConditionWithTitle.fromJson(vital['hrvv']!, formatValueToTwoDp(healthResult?.vitalSigns.hrvSdnn)),
vitalSignValue: formatValueToTwoDp(healthResult?.vitalSigns.hrvSdnn)),
//oxygen
VitalSignWidget(
textColor: textColor,
lookupValues: vitalValues['Sp02']!,
vitalSignName:
TranslationBase.of(context).oxygenSaturation,
condition: RangeConditionWithTitle.fromJson(
vital['Sp02']!,
formatValueToTwoDp(healthResult?.vitalSigns.spo2)),
vitalSignValue:
formatValueToTwoDp(healthResult?.vitalSigns.spo2),
vitalSignName: TranslationBase.of(context).oxygenSaturation,
condition: RangeConditionWithTitle.fromJson(vital['Sp02']!, formatValueToTwoDp(healthResult?.vitalSigns.spo2)),
vitalSignValue: formatValueToTwoDp(healthResult?.vitalSigns.spo2),
vectorUrl: 'assets/images/svg/oxygen.svg',
),
if (_vitalSign?.respiratoryRate != null)
VitalSignWidget(
textColor: textColor,
lookupValues: vitalValues['respiratoryRate']!,
vitalSignName:
TranslationBase.of(context).respiratoryRate,
condition: RangeConditionWithTitle.fromJson(
vital['respiratoryRate']!,
formatValueToTwoDp(
healthResult?.vitalSigns.respiratoryRate)),
vitalSignValue: formatValueToTwoDp(
healthResult?.vitalSigns.respiratoryRate),
vitalSignName: TranslationBase.of(context).respiratoryRate,
condition: RangeConditionWithTitle.fromJson(vital['respiratoryRate']!, formatValueToTwoDp(healthResult?.vitalSigns.respiratoryRate)),
vitalSignValue: formatValueToTwoDp(healthResult?.vitalSigns.respiratoryRate),
vectorUrl: 'assets/images/svg/breathing.svg',
),
if (_holisticAnalysis != null &&
_holisticAnalysis?.bmi != null)
if (_holisticAnalysis != null && _holisticAnalysis?.bmi != null)
VitalSignWidget(
textColor: textColor,
lookupValues: vitalValues['bmi']!,
vitalSignName: TranslationBase.of(context).BMI,
condition: RangeConditionWithTitle.fromJson(
vital['bmi']!,
formatValueToTwoDp(
healthResult?.holisticHealth?.bmi)),
vitalSignValue: formatValueToTwoDp(
healthResult?.holisticHealth?.bmi),
condition: RangeConditionWithTitle.fromJson(vital['bmi']!, formatValueToTwoDp(healthResult?.holisticHealth?.bmi)),
vitalSignValue: formatValueToTwoDp(healthResult?.holisticHealth?.bmi),
vectorUrl: 'assets/images/svg/bmi.svg',
),
// VitalSignWidget(
@ -162,7 +135,6 @@ class ResultScreen extends StatelessWidget {
// vitalSignValue:
// formatValueToTwoDp(healthResult?.vitalSigns.ibi)),
// if (_vitalSign?.hrvRmssd != null)
// VitalSignWidget(
// textColor: textColor,
@ -202,7 +174,6 @@ class ResultScreen extends StatelessWidget {
// ),
// ),
// if (_holisticAnalysis != null &&
// _holisticAnalysis?.absi != null)
// VitalSignWidget(

@ -105,6 +105,8 @@ class _VitalSignsState extends State<VitalSigns> with RouteAware {
body: Column(
children: [
if (_conditions != null)
ScanConditionChecklist(
deviceSize: deviceSize, conditions: _conditions!),
Expanded(
child: Stack(
children: [

Loading…
Cancel
Save