Merge branch 'soap_update' into 'development'

Soap update

See merge request Cloud_Solution/doctor_app_flutter!212
merge-requests/214/merge
Mohammad Aljammal 5 years ago
commit ed1107ff94

@ -3,6 +3,8 @@ import 'package:doctor_app_flutter/models/SOAP/ChiefComplaint/GetChiefComplaintR
import 'package:doctor_app_flutter/models/SOAP/ChiefComplaint/GetChiefComplaintResModel.dart'; import 'package:doctor_app_flutter/models/SOAP/ChiefComplaint/GetChiefComplaintResModel.dart';
import 'package:doctor_app_flutter/models/SOAP/GeneralGetReqForSOAP.dart'; import 'package:doctor_app_flutter/models/SOAP/GeneralGetReqForSOAP.dart';
import 'package:doctor_app_flutter/models/SOAP/GetAllergiesResModel.dart'; import 'package:doctor_app_flutter/models/SOAP/GetAllergiesResModel.dart';
import 'package:doctor_app_flutter/models/SOAP/GetAssessmentReqModel.dart';
import 'package:doctor_app_flutter/models/SOAP/GetAssessmentResModel.dart';
import 'package:doctor_app_flutter/models/SOAP/GetGetProgressNoteReqModel.dart'; import 'package:doctor_app_flutter/models/SOAP/GetGetProgressNoteReqModel.dart';
import 'package:doctor_app_flutter/models/SOAP/GetGetProgressNoteResModel.dart'; import 'package:doctor_app_flutter/models/SOAP/GetGetProgressNoteResModel.dart';
import 'package:doctor_app_flutter/models/SOAP/GetHistoryReqModel.dart'; import 'package:doctor_app_flutter/models/SOAP/GetHistoryReqModel.dart';
@ -27,6 +29,7 @@ class SOAPService extends LookupService {
List<GetHistoryResModel> patientHistoryList = []; List<GetHistoryResModel> patientHistoryList = [];
List<GetPhysicalExamResModel> patientPhysicalExamList = []; List<GetPhysicalExamResModel> patientPhysicalExamList = [];
List<GetGetProgressNoteResModel> patientProgressNoteList = []; List<GetGetProgressNoteResModel> patientProgressNoteList = [];
List<GetAssessmentResModel> patientAssessmentList = [];
Future getAllergies(GetAllergiesRequestModel getAllergiesRequestModel) async { Future getAllergies(GetAllergiesRequestModel getAllergiesRequestModel) async {
await baseAppClient.post( await baseAppClient.post(
@ -266,6 +269,7 @@ class SOAPService extends LookupService {
response['ProgressNoteList']['entityList'].forEach((v) { response['ProgressNoteList']['entityList'].forEach((v) {
patientProgressNoteList.add(GetGetProgressNoteResModel.fromJson(v)); patientProgressNoteList.add(GetGetProgressNoteResModel.fromJson(v));
}); });
}, onFailure: (String error, int statusCode) { }, onFailure: (String error, int statusCode) {
hasError = true; hasError = true;
super.error = error; super.error = error;
@ -273,14 +277,18 @@ class SOAPService extends LookupService {
} }
Future getPatientAssessment( Future getPatientAssessment(
PostAssessmentRequestModel getPatientAssessmentRequestModel) async { GetAssessmentReqModel getAssessmentReqModel) async {
hasError = false; hasError = false;
await baseAppClient.post (GET_ASSESSMENT, await baseAppClient.post (GET_ASSESSMENT,
onSuccess: (dynamic response, int statusCode) { onSuccess: (dynamic response, int statusCode) {
print("Success"); print("Success");
patientAssessmentList.clear();
response['AssessmentList']['entityList'].forEach((v) {
patientAssessmentList.add(GetAssessmentResModel.fromJson(v));
});
}, onFailure: (String error, int statusCode) { }, onFailure: (String error, int statusCode) {
hasError = true; hasError = true;
super.error = error; super.error = error;
}, body: getPatientAssessmentRequestModel.toJson()); }, body: getAssessmentReqModel.toJson());
} }
} }

@ -5,6 +5,8 @@ import 'package:doctor_app_flutter/models/SOAP/ChiefComplaint/GetChiefComplaintR
import 'package:doctor_app_flutter/models/SOAP/ChiefComplaint/GetChiefComplaintResModel.dart'; import 'package:doctor_app_flutter/models/SOAP/ChiefComplaint/GetChiefComplaintResModel.dart';
import 'package:doctor_app_flutter/models/SOAP/GeneralGetReqForSOAP.dart'; import 'package:doctor_app_flutter/models/SOAP/GeneralGetReqForSOAP.dart';
import 'package:doctor_app_flutter/models/SOAP/GetAllergiesResModel.dart'; import 'package:doctor_app_flutter/models/SOAP/GetAllergiesResModel.dart';
import 'package:doctor_app_flutter/models/SOAP/GetAssessmentReqModel.dart';
import 'package:doctor_app_flutter/models/SOAP/GetAssessmentResModel.dart';
import 'package:doctor_app_flutter/models/SOAP/GetGetProgressNoteReqModel.dart'; import 'package:doctor_app_flutter/models/SOAP/GetGetProgressNoteReqModel.dart';
import 'package:doctor_app_flutter/models/SOAP/GetGetProgressNoteResModel.dart'; import 'package:doctor_app_flutter/models/SOAP/GetGetProgressNoteResModel.dart';
import 'package:doctor_app_flutter/models/SOAP/GetHistoryReqModel.dart'; import 'package:doctor_app_flutter/models/SOAP/GetHistoryReqModel.dart';
@ -64,14 +66,19 @@ class SOAPViewModel extends BaseViewModel {
List<GetAllergiesResModel> get patientAllergiesList => List<GetAllergiesResModel> get patientAllergiesList =>
_SOAPService.patientAllergiesList; _SOAPService.patientAllergiesList;
List<GetHistoryResModel> get patientHistoryList => List<GetHistoryResModel> get patientHistoryList =>
_SOAPService.patientHistoryList; _SOAPService.patientHistoryList;
List<GetPhysicalExamResModel> get patientPhysicalExamList =>
List<GetPhysicalExamResModel> get patientPhysicalExamList =>
_SOAPService.patientPhysicalExamList; _SOAPService.patientPhysicalExamList;
List<GetGetProgressNoteResModel> get patientProgressNoteList => List<GetGetProgressNoteResModel> get patientProgressNoteList =>
_SOAPService.patientProgressNoteList; _SOAPService.patientProgressNoteList;
List<GetAssessmentResModel> get patientAssessmentList =>
_SOAPService.patientAssessmentList;
Future getAllergies(GetAllergiesRequestModel getAllergiesRequestModel) async { Future getAllergies(GetAllergiesRequestModel getAllergiesRequestModel) async {
setState(ViewState.Busy); setState(ViewState.Busy);
await _SOAPService.getAllergies(getAllergiesRequestModel); await _SOAPService.getAllergies(getAllergiesRequestModel);
@ -266,9 +273,9 @@ class SOAPViewModel extends BaseViewModel {
} }
Future getPatientAssessment( Future getPatientAssessment(
PostAssessmentRequestModel getPatientAssessmentRequestModel) async { GetAssessmentReqModel getAssessmentReqModel) async {
setState(ViewState.Busy); setState(ViewState.Busy);
await _SOAPService.getPatientAssessment(getPatientAssessmentRequestModel); await _SOAPService.getPatientAssessment(getAssessmentReqModel);
if (_SOAPService.hasError) { if (_SOAPService.hasError) {
error = _SOAPService.error; error = _SOAPService.error;
setState(ViewState.Busy); setState(ViewState.Busy);
@ -276,14 +283,12 @@ class SOAPViewModel extends BaseViewModel {
setState(ViewState.Idle); setState(ViewState.Idle);
} }
// ignore: missing_return // ignore: missing_return
MasterKeyModel getOneMasterKey( MasterKeyModel getOneMasterKey(
{@required MasterKeysService masterKeys, int id, int typeId}) { {@required MasterKeysService masterKeys, dynamic id, int typeId}) {
switch (masterKeys) { switch (masterKeys) {
case MasterKeysService.Allergies: case MasterKeysService.Allergies:
List<MasterKeyModel> result = allergiesList.where((element) { List<MasterKeyModel> result = allergiesList.where((element) {
print(element.id == id);
return element.id == id && return element.id == id &&
element.typeId == masterKeys.getMasterKeyService(); element.typeId == masterKeys.getMasterKeyService();
}).toList(); }).toList();
@ -294,7 +299,6 @@ class SOAPViewModel extends BaseViewModel {
case MasterKeysService.HistoryFamily: case MasterKeysService.HistoryFamily:
List<MasterKeyModel> result = historyFamilyList.where((element) { List<MasterKeyModel> result = historyFamilyList.where((element) {
print(element.id == id);
return element.id == id && return element.id == id &&
element.typeId == masterKeys.getMasterKeyService(); element.typeId == masterKeys.getMasterKeyService();
}).toList(); }).toList();
@ -304,7 +308,6 @@ class SOAPViewModel extends BaseViewModel {
break; break;
case MasterKeysService.HistoryMedical: case MasterKeysService.HistoryMedical:
List<MasterKeyModel> result = historyMedicalList.where((element) { List<MasterKeyModel> result = historyMedicalList.where((element) {
print(element.id == id);
return element.id == id && return element.id == id &&
element.typeId == masterKeys.getMasterKeyService(); element.typeId == masterKeys.getMasterKeyService();
}).toList(); }).toList();
@ -314,7 +317,6 @@ class SOAPViewModel extends BaseViewModel {
break; break;
case MasterKeysService.HistorySocial: case MasterKeysService.HistorySocial:
List<MasterKeyModel> result = historySocialList.where((element) { List<MasterKeyModel> result = historySocialList.where((element) {
print(element.id == id);
return element.id == id && return element.id == id &&
element.typeId == masterKeys.getMasterKeyService(); element.typeId == masterKeys.getMasterKeyService();
}).toList(); }).toList();
@ -324,7 +326,6 @@ class SOAPViewModel extends BaseViewModel {
break; break;
case MasterKeysService.HistorySports: case MasterKeysService.HistorySports:
List<MasterKeyModel> result = historySocialList.where((element) { List<MasterKeyModel> result = historySocialList.where((element) {
print(element.id == id);
return element.id == id && return element.id == id &&
element.typeId == masterKeys.getMasterKeyService(); element.typeId == masterKeys.getMasterKeyService();
}).toList(); }).toList();
@ -334,17 +335,13 @@ class SOAPViewModel extends BaseViewModel {
break; break;
case MasterKeysService.HistorySurgical: case MasterKeysService.HistorySurgical:
List<MasterKeyModel> result = historySurgicalList.where((element) { List<MasterKeyModel> result = historySurgicalList.where((element) {
print(element.id == id); return element.id == id;}).toList();
return element.id == id &&
element.typeId == masterKeys.getMasterKeyService();
}).toList();
if (result.isNotEmpty) { if (result.isNotEmpty) {
return result.first; return result.first;
} }
break; break;
case MasterKeysService.PhysicalExamination: case MasterKeysService.PhysicalExamination:
List<MasterKeyModel> result = physicalExaminationList.where((element) { List<MasterKeyModel> result = physicalExaminationList.where((element) {
print(element.id == id);
return element.id == id && return element.id == id &&
element.typeId == masterKeys.getMasterKeyService(); element.typeId == masterKeys.getMasterKeyService();
}).toList(); }).toList();
@ -354,7 +351,6 @@ class SOAPViewModel extends BaseViewModel {
break; break;
case MasterKeysService.AllergySeverity: case MasterKeysService.AllergySeverity:
List<MasterKeyModel> result = allergySeverityList.where((element) { List<MasterKeyModel> result = allergySeverityList.where((element) {
print(element.id == id);
return element.id == id && return element.id == id &&
element.typeId == masterKeys.getMasterKeyService(); element.typeId == masterKeys.getMasterKeyService();
}).toList(); }).toList();
@ -371,7 +367,6 @@ class SOAPViewModel extends BaseViewModel {
case MasterKeysService.DiagnosisType: case MasterKeysService.DiagnosisType:
List<MasterKeyModel> result = listOfDiagnosisType.where((element) { List<MasterKeyModel> result = listOfDiagnosisType.where((element) {
print(element.id == id);
return element.id == id && return element.id == id &&
element.typeId == masterKeys.getMasterKeyService(); element.typeId == masterKeys.getMasterKeyService();
}).toList(); }).toList();
@ -381,7 +376,6 @@ class SOAPViewModel extends BaseViewModel {
break; break;
case MasterKeysService.DiagnosisCondition: case MasterKeysService.DiagnosisCondition:
List<MasterKeyModel> result = listOfDiagnosisCondition.where((element) { List<MasterKeyModel> result = listOfDiagnosisCondition.where((element) {
print(element.id == id);
return element.id == id && return element.id == id &&
element.typeId == masterKeys.getMasterKeyService(); element.typeId == masterKeys.getMasterKeyService();
}).toList(); }).toList();
@ -390,11 +384,8 @@ class SOAPViewModel extends BaseViewModel {
} }
break; break;
case MasterKeysService.ICD10: case MasterKeysService.ICD10:
listOfICD10.clear();
List<MasterKeyModel> result = listOfICD10.where((element) { List<MasterKeyModel> result = listOfICD10.where((element) {
print(element.id == id); return element.code == id ;
return element.id == id &&
element.typeId == masterKeys.getMasterKeyService();
}).toList(); }).toList();
if (result.isNotEmpty) { if (result.isNotEmpty) {
return result.first; return result.first;

@ -0,0 +1,40 @@
class GetAssessmentReqModel {
int patientMRN;
int appointmentNo;
String episodeID;
String from;
String to;
int clinicID;
int doctorID;
GetAssessmentReqModel(
{this.patientMRN,
this.appointmentNo,
this.episodeID,
this.from,
this.to,
this.clinicID,
this.doctorID});
GetAssessmentReqModel.fromJson(Map<String, dynamic> json) {
patientMRN = json['PatientMRN'];
appointmentNo = json['AppointmentNo'];
episodeID = json['EpisodeID'];
from = json['From'];
to = json['To'];
clinicID = json['ClinicID'];
doctorID = json['DoctorID'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['PatientMRN'] = this.patientMRN;
data['AppointmentNo'] = this.appointmentNo;
data['EpisodeID'] = this.episodeID;
data['From'] = this.from;
data['To'] = this.to;
data['ClinicID'] = this.clinicID;
data['DoctorID'] = this.doctorID;
return data;
}
}

@ -0,0 +1,72 @@
class GetAssessmentResModel {
int appointmentNo;
String asciiDesc;
String clinicDescription;
int clinicID;
bool complexDiagnosis;
int conditionID;
int createdBy;
String createdOn;
int diagnosisTypeID;
int doctorID;
String doctorName;
int episodeId;
String icdCode10ID;
int patientMRN;
String remarks;
GetAssessmentResModel(
{this.appointmentNo,
this.asciiDesc,
this.clinicDescription,
this.clinicID,
this.complexDiagnosis,
this.conditionID,
this.createdBy,
this.createdOn,
this.diagnosisTypeID,
this.doctorID,
this.doctorName,
this.episodeId,
this.icdCode10ID,
this.patientMRN,
this.remarks});
GetAssessmentResModel.fromJson(Map<String, dynamic> json) {
appointmentNo = json['appointmentNo'];
asciiDesc = json['ascii_Desc'];
clinicDescription = json['clinicDescription'];
clinicID = json['clinicID'];
complexDiagnosis = json['complexDiagnosis'];
conditionID = json['conditionID'];
createdBy = json['createdBy'];
createdOn = json['createdOn'];
diagnosisTypeID = json['diagnosisTypeID'];
doctorID = json['doctorID'];
doctorName = json['doctorName'];
episodeId = json['episodeId'];
icdCode10ID = json['icdCode10ID'];
patientMRN = json['patientMRN'];
remarks = json['remarks'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['appointmentNo'] = this.appointmentNo;
data['ascii_Desc'] = this.asciiDesc;
data['clinicDescription'] = this.clinicDescription;
data['clinicID'] = this.clinicID;
data['complexDiagnosis'] = this.complexDiagnosis;
data['conditionID'] = this.conditionID;
data['createdBy'] = this.createdBy;
data['createdOn'] = this.createdOn;
data['diagnosisTypeID'] = this.diagnosisTypeID;
data['doctorID'] = this.doctorID;
data['doctorName'] = this.doctorName;
data['episodeId'] = this.episodeId;
data['icdCode10ID'] = this.icdCode10ID;
data['patientMRN'] = this.patientMRN;
data['remarks'] = this.remarks;
return data;
}
}

@ -1,18 +1,45 @@
class GetHistoryReqModel { class GetHistoryReqModel {
int patientMRN; int patientMRN;
int historyType; int historyType;
String episodeID;
String from;
String to;
int clinicID;
int doctorID;
int appointmentNo;
GetHistoryReqModel({this.patientMRN, this.historyType}); GetHistoryReqModel(
{this.patientMRN,
this.historyType,
this.episodeID,
this.from,
this.to,
this.clinicID,
this.doctorID,
this.appointmentNo});
GetHistoryReqModel.fromJson(Map<String, dynamic> json) { GetHistoryReqModel.fromJson(Map<String, dynamic> json) {
patientMRN = json['PatientMRN']; patientMRN = json['PatientMRN'];
historyType = json['HistoryType']; historyType = json['HistoryType'];
episodeID = json['EpisodeID'];
from = json['From'];
to = json['To'];
clinicID = json['ClinicID'];
doctorID = json['DoctorID'];
appointmentNo = json['AppointmentNo'];
} }
Map<String, dynamic> toJson() { Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>(); final Map<String, dynamic> data = new Map<String, dynamic>();
data['PatientMRN'] = this.patientMRN; data['PatientMRN'] = this.patientMRN;
data['HistoryType'] = this.historyType; data['HistoryType'] = this.historyType;
data['AppointmentNo'] = this.appointmentNo;
data['EpisodeID'] = this.episodeID;
data['From'] = this.from;
data['To'] = this.to;
data['ClinicID'] = this.clinicID;
data['DoctorID'] = this.doctorID;
return data; return data;
} }
} }

@ -139,7 +139,7 @@ var routes = {
PATIENT_ADMISSION_REQUEST: (_) => AdmissionRequestDetailScreen(), PATIENT_ADMISSION_REQUEST: (_) => AdmissionRequestDetailScreen(),
PATIENT_ADMISSION_REQUEST_2: (_) => AdmissionRequestSecondScreen(), PATIENT_ADMISSION_REQUEST_2: (_) => AdmissionRequestSecondScreen(),
PATIENT_ADMISSION_REQUEST_3: (_) => AdmissionRequestThirdScreen(), PATIENT_ADMISSION_REQUEST_3: (_) => AdmissionRequestThirdScreen(),
CREATE_EPISODE: (_) => AddSOAPIndex(), CREATE_EPISODE: (_) => UpdateSoapIndex(isUpdate: true,),
UPDATE_EPISODE: (_) => UpdateSoapIndex( UPDATE_EPISODE: (_) => UpdateSoapIndex(
isUpdate: true, isUpdate: true,
), ),

@ -5,6 +5,7 @@ import 'package:doctor_app_flutter/util/dr_app_shared_pref.dart';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:doctor_app_flutter/config/config.dart'; import 'package:doctor_app_flutter/config/config.dart';
import 'package:html/parser.dart';
import '../config/size_config.dart'; import '../config/size_config.dart';
import '../util/dr_app_toast_msg.dart'; import '../util/dr_app_toast_msg.dart';
@ -353,6 +354,13 @@ class Helpers {
// Navigator.of(AppGlobal.CONTEX).popUntil((ModalRoute.withName(LOGIN))); // Navigator.of(AppGlobal.CONTEX).popUntil((ModalRoute.withName(LOGIN)));
} }
String parseHtmlString(String htmlString) {
final document = parse(htmlString);
final String parsedString = parse(document.body.text).documentElement.text;
return parsedString;
}
static InputDecoration textFieldSelectorDecoration( static InputDecoration textFieldSelectorDecoration(
String hintText, String selectedText, bool isDropDown, String hintText, String selectedText, bool isDropDown,
{Icon suffixIcon, Color dropDownColor}) { {Icon suffixIcon, Color dropDownColor}) {

@ -15,7 +15,7 @@ import 'package:doctor_app_flutter/widgets/shared/app_scaffold_widget.dart';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'steps_widget.dart'; import '../soap_update/steps_widget.dart';
class AddSOAPIndex extends StatefulWidget { class AddSOAPIndex extends StatefulWidget {
final bool isUpdate; final bool isUpdate;

@ -44,7 +44,7 @@ class PatientPageHeaderWidget extends StatelessWidget {
height: 5, height: 5,
), ),
AppText( AppText(
patient.firstName + ' ' + patient.lastName, patient.firstName + ' ' + patient.lastName,
color: Colors.black, color: Colors.black,
fontWeight: FontWeight.bold, fontWeight: FontWeight.bold,
), ),

@ -24,6 +24,7 @@ import 'package:doctor_app_flutter/widgets/shared/expandable-widget-header-body.
import 'package:eva_icons_flutter/eva_icons_flutter.dart'; import 'package:eva_icons_flutter/eva_icons_flutter.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:font_awesome_flutter/font_awesome_flutter.dart'; import 'package:font_awesome_flutter/font_awesome_flutter.dart';
import 'package:html/parser.dart';
class UpdateSubjectivePage extends StatefulWidget { class UpdateSubjectivePage extends StatefulWidget {
final Function changePageViewIndex; final Function changePageViewIndex;
@ -50,28 +51,14 @@ class _UpdateSubjectivePageState extends State<UpdateSubjectivePage> {
TextEditingController complaintsController = TextEditingController(); TextEditingController complaintsController = TextEditingController();
final formKey = GlobalKey<FormState>(); final formKey = GlobalKey<FormState>();
getHistory(SOAPViewModel model) async{ getHistory(SOAPViewModel model) async{
GetHistoryReqModel getHistoryMedicalReqModel = GetHistoryReqModel( GetHistoryReqModel getHistoryReqModel = GetHistoryReqModel(
patientMRN: widget.patientInfo.patientMRN, patientMRN: widget.patientInfo.patientMRN,
historyType: episodeID: widget.patientInfo.episodeNo.toString(),
MasterKeysService.HistoryMedical.getMasterKeyService()); appointmentNo: widget.patientInfo.appointmentNo
GetHistoryReqModel getHistorySportsReqModel = GetHistoryReqModel( );
patientMRN: widget.patientInfo.patientMRN, await model.getPatientHistories(getHistoryReqModel);
historyType:
MasterKeysService.HistorySports.getMasterKeyService());
GetHistoryReqModel getHistorySurgicalReqModel = GetHistoryReqModel(
patientMRN: widget.patientInfo.patientMRN,
historyType:
MasterKeysService.HistorySurgical.getMasterKeyService());
GetHistoryReqModel getHistoryFamilyReqModel = GetHistoryReqModel(
patientMRN: widget.patientInfo.patientMRN,
historyType:
MasterKeysService.HistoryFamily.getMasterKeyService());
await model.getPatientHistories(getHistoryMedicalReqModel);
await model.getPatientHistories(getHistorySportsReqModel);
await model.getPatientHistories(getHistorySurgicalReqModel);
await model.getPatientHistories(getHistoryFamilyReqModel);
if(model.patientHistoryList.isNotEmpty) { if (model.patientHistoryList.isNotEmpty) {
if (model.historyFamilyList.isEmpty) { if (model.historyFamilyList.isEmpty) {
await model.getMasterLookup(MasterKeysService.HistoryFamily); await model.getMasterLookup(MasterKeysService.HistoryFamily);
} }
@ -112,7 +99,8 @@ class _UpdateSubjectivePageState extends State<UpdateSubjectivePage> {
} }
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return BaseView<SOAPViewModel>(
return BaseView<SOAPViewModel>(
onModelReady: (model) async { onModelReady: (model) async {
GeneralGetReqForSOAP generalGetReqForSOAP = GeneralGetReqForSOAP( GeneralGetReqForSOAP generalGetReqForSOAP = GeneralGetReqForSOAP(
patientMRN: widget.patientInfo.patientMRN, patientMRN: widget.patientInfo.patientMRN,
@ -126,8 +114,8 @@ class _UpdateSubjectivePageState extends State<UpdateSubjectivePage> {
episodeID: widget.patientInfo.episodeNo); episodeID: widget.patientInfo.episodeNo);
await model.getPatientChiefComplaint(getChiefComplaintReqModel); await model.getPatientChiefComplaint(getChiefComplaintReqModel);
if (model.patientChiefComplaintList.isNotEmpty) { if (model.patientChiefComplaintList.isNotEmpty) {
complaintsController.text = complaintsController.text = helpers.parseHtmlString(model.patientChiefComplaintList[0].chiefComplaint)
model.patientChiefComplaintList[0].chiefComplaint; ;
illnessController.text = model.patientChiefComplaintList[0].hopi; illnessController.text = model.patientChiefComplaintList[0].hopi;
} }
await model.getPatientAllergy(generalGetReqForSOAP); await model.getPatientAllergy(generalGetReqForSOAP);
@ -390,41 +378,27 @@ class _UpdateSubjectivePageState extends State<UpdateSubjectivePage> {
await postChiefComplaint(model: model); await postChiefComplaint(model: model);
if (model.state == ViewState.ErrorLocal) { if (model.state == ViewState.ErrorLocal) {
helpers.showErrorToast(model.error); helpers.showErrorToast(model.error);
} else { }
if (myHistoryList.length != 0) {
await postHistories(model: model, myHistoryList: myHistoryList); if (myHistoryList.length != 0) {
if (model.state == ViewState.ErrorLocal) { await postHistories(model: model, myHistoryList: myHistoryList);
helpers.showErrorToast(model.error); if (model.state == ViewState.ErrorLocal) {
} else { helpers.showErrorToast(model.error);
if (myAllergiesList.length != 0) { }
await postAllergy(myAllergiesList: myAllergiesList, model: model); }
if (model.state == ViewState.ErrorLocal) { if (myAllergiesList.length != 0) {
helpers.showErrorToast(model.error); await postAllergy(myAllergiesList: myAllergiesList, model: model);
} else { if (model.state == ViewState.ErrorLocal) {
widget.changePageViewIndex(1); helpers.showErrorToast(model.error);
}
} else {
widget.changePageViewIndex(1);
}
}
} else {
if (myAllergiesList.length != 0) {
await postAllergy(myAllergiesList: myAllergiesList, model: model);
if (model.state == ViewState.ErrorLocal) {
helpers.showErrorToast(model.error);
} else {
widget.changePageViewIndex(1);
}
} else {
widget.changePageViewIndex(1);
}
} }
} }
widget.changePageViewIndex(1);
} else { } else {
helpers.showErrorToast('Please add required field correctly'); helpers.showErrorToast('Please add required field correctly');
} }
widget.changePageViewIndex(1);
} }
@ -487,13 +461,12 @@ class _UpdateSubjectivePageState extends State<UpdateSubjectivePage> {
}); });
if (model.patientAllergiesList.isEmpty) { if (model.patientHistoryList.isEmpty) {
await model.postHistories(postHistoriesRequestModel); await model.postHistories(postHistoriesRequestModel);
} else { } else {
await model.patchHistories(postHistoriesRequestModel); await model.patchHistories(postHistoriesRequestModel);
} }
await model.patchHistories(postHistoriesRequestModel);
if (model.state == ViewState.ErrorLocal) { if (model.state == ViewState.ErrorLocal) {
helpers.showErrorToast(model.error); helpers.showErrorToast(model.error);

@ -4,6 +4,7 @@ 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/master_lookup_key.dart';
import 'package:doctor_app_flutter/core/enum/viewstate.dart'; import 'package:doctor_app_flutter/core/enum/viewstate.dart';
import 'package:doctor_app_flutter/core/viewModel/SOAP_view_model.dart'; import 'package:doctor_app_flutter/core/viewModel/SOAP_view_model.dart';
import 'package:doctor_app_flutter/models/SOAP/GetAssessmentReqModel.dart';
import 'package:doctor_app_flutter/models/SOAP/master_key_model.dart'; import 'package:doctor_app_flutter/models/SOAP/master_key_model.dart';
import 'package:doctor_app_flutter/models/SOAP/my_selected_assement.dart'; import 'package:doctor_app_flutter/models/SOAP/my_selected_assement.dart';
import 'package:doctor_app_flutter/models/SOAP/post_assessment_request_model.dart'; import 'package:doctor_app_flutter/models/SOAP/post_assessment_request_model.dart';
@ -36,19 +37,53 @@ class UpdateAssessmentPage extends StatefulWidget {
class _UpdateAssessmentPageState extends State<UpdateAssessmentPage> { class _UpdateAssessmentPageState extends State<UpdateAssessmentPage> {
bool isAssessmentExpand = false; bool isAssessmentExpand = false;
List<dynamic> assessmentList;
dynamic _referTo;
TextEditingController remarksController = TextEditingController();
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
final screenSize = MediaQuery.of(context).size; final screenSize = MediaQuery.of(context).size;
return BaseView<SOAPViewModel>( return BaseView<SOAPViewModel>(
onModelReady: (model) async{
widget.mySelectedAssessment.appointmentId =widget.patientInfo.appointmentNo;
GetAssessmentReqModel getAssessmentReqModel = GetAssessmentReqModel(
patientMRN: widget.patientInfo.patientMRN,
episodeID: widget.patientInfo.episodeNo.toString(),
appointmentNo: widget.patientInfo.appointmentNo);
await model.getPatientAssessment(getAssessmentReqModel);
if(model.patientAssessmentList.isNotEmpty){
if (model.listOfDiagnosisCondition.length == 0) {
await model.getMasterLookup(MasterKeysService.DiagnosisCondition);
}
if (model.listOfDiagnosisType.length == 0) {
await model.getMasterLookup(MasterKeysService.DiagnosisType);
}
if (model.listOfICD10.length == 0) {
await model.getMasterLookup(MasterKeysService.ICD10);
}
MasterKeyModel selectedICD = model.getOneMasterKey(
masterKeys: MasterKeysService.ICD10,
id: model.patientAssessmentList[0].icdCode10ID,
);
widget.mySelectedAssessment.selectedICD= selectedICD;
MasterKeyModel diagnosisCondition = model.getOneMasterKey(
masterKeys: MasterKeysService.DiagnosisCondition,
id: model.patientAssessmentList[0].conditionID,
);
widget.mySelectedAssessment.selectedDiagnosisCondition = diagnosisCondition;
MasterKeyModel diagnosisType = model.getOneMasterKey(
masterKeys: MasterKeysService.DiagnosisType,
id: model.patientAssessmentList[0].diagnosisTypeID,
);
widget.mySelectedAssessment.selectedDiagnosisType = diagnosisType;
widget.mySelectedAssessment.remark = model.patientAssessmentList[0].remarks;
}
},
builder: (_, model, w) => AppScaffold( builder: (_, model, w) => AppScaffold(
isShowAppBar: false, isShowAppBar: false,
baseViewModel: model,
body: SingleChildScrollView( body: SingleChildScrollView(
physics: ScrollPhysics(), physics: ScrollPhysics(),
child: Center( child: Center(
@ -58,66 +93,67 @@ class _UpdateAssessmentPageState extends State<UpdateAssessmentPage> {
mainAxisAlignment: MainAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.start,
children: [ children: [
SizedBox( SizedBox(
height: 30, height: 30,
), ),
HeaderBodyExpandableNotifier( HeaderBodyExpandableNotifier(
headerWidget: Row( headerWidget: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween, mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Row(
children: [ children: [
Texts('ASSESSMENT', Row(
variant: children: [
Texts('ASSESSMENT',
variant:
isAssessmentExpand ? "bodyText" : '', isAssessmentExpand ? "bodyText" : '',
bold: isAssessmentExpand ? true : false, bold: isAssessmentExpand ? true : false,
color: Colors.black), color: Colors.black),
Icon( Icon(
FontAwesomeIcons.asterisk, FontAwesomeIcons.asterisk,
color: AppGlobal.appPrimaryColor, color: AppGlobal.appPrimaryColor,
size: 12, size: 12,
) )
],
),
InkWell(
onTap: () {
setState(() {
isAssessmentExpand = !isAssessmentExpand;
});
},
child: Icon(isAssessmentExpand
? EvaIcons.minus
: EvaIcons.plus))
], ],
), ),
InkWell( bodyWidget: Column(children: [
onTap: () { SizedBox(
setState(() { height: 20,
isAssessmentExpand = !isAssessmentExpand; ),
}); Column(
}, children: [
child: Icon(isAssessmentExpand Container(
? EvaIcons.minus margin:
: EvaIcons.plus))
],
),
bodyWidget: Column(children: [
SizedBox(
height: 20,
),
Column(
children: [
Container(
margin:
EdgeInsets.only(left: 5, right: 5, top: 15), EdgeInsets.only(left: 5, right: 5, top: 15),
child: TextFields( child: TextFields(
hintText: "Add ASSESSMENT", hintText: "Add ASSESSMENT",
fontSize: 13.5, fontSize: 13.5,
onTapTextFields: () { onTapTextFields: () {
openAssessmentDialog(context); openAssessmentDialog(context);
}, },
readOnly: true, readOnly: true,
// hintColor: Colors.black, // hintColor: Colors.black,
suffixIcon: EvaIcons.plusCircleOutline, suffixIcon: EvaIcons.plusCircleOutline,
suffixIconColor: AppGlobal.appPrimaryColor, suffixIconColor: AppGlobal
fontWeight: FontWeight.w600, .appPrimaryColor,
// controller: messageController, fontWeight: FontWeight.w600,
validator: (value) { // controller: messageController,
if (value == null) validator: (value) {
return TranslationBase if (value == null)
.of(context) return TranslationBase
.emptyMessage; .of(context)
else .emptyMessage;
return null; else
}), return null;
}),
), ),
SizedBox( SizedBox(
height: 20, height: 20,
@ -242,7 +278,7 @@ class _UpdateAssessmentPageState extends State<UpdateAssessmentPage> {
height: 6, height: 6,
), ),
AppText( AppText(
widget.mySelectedAssessment.remark, widget.mySelectedAssessment.remark??"",
fontSize: 10, fontSize: 10,
color: Colors.grey, color: Colors.grey,
), ),
@ -263,7 +299,7 @@ class _UpdateAssessmentPageState extends State<UpdateAssessmentPage> {
fontSize: 16, fontSize: 16,
), ),
AppText( AppText(
"R07.1".toUpperCase(), widget.mySelectedAssessment.selectedICD.code.toUpperCase()??"",
fontSize: 10, fontSize: 10,
color: Colors.grey, color: Colors.grey,
), ),
@ -291,44 +327,68 @@ class _UpdateAssessmentPageState extends State<UpdateAssessmentPage> {
isExpand: isAssessmentExpand, isExpand: isAssessmentExpand,
), ),
DividerWithSpacesAround( DividerWithSpacesAround(
height: 30, height: 30,
), ),
AppButton( AppButton(
title: TranslationBase.of(context).next, title: TranslationBase
loading: model.state == ViewState.BusyLocal, .of(context)
onPressed: () async { .next,
await submitAssessment(model); loading: model.state == ViewState.BusyLocal,
}, onPressed: () async {
), await submitAssessment(model);
SizedBox( },
height: 30, ),
SizedBox(
height: 30,
),
],
), ),
], ),
), ),
), )));
),
)));
} }
submitAssessment(SOAPViewModel model) async { submitAssessment(SOAPViewModel model) async {
if (widget.mySelectedAssessment.selectedDiagnosisCondition != null && if (widget.mySelectedAssessment.selectedDiagnosisCondition != null &&
widget.mySelectedAssessment.selectedDiagnosisType != null) { widget.mySelectedAssessment.selectedDiagnosisType != null && widget.mySelectedAssessment.selectedICD !=null ) {
PatchAssessmentReqModel patchAssessmentReqModel =
new PatchAssessmentReqModel( if(model.patientAssessmentList.isEmpty){
patientMRN: widget.patientInfo.patientMRN, PostAssessmentRequestModel postAssessmentRequestModel =
episodeId: widget.patientInfo.episodeNo, new PostAssessmentRequestModel(
appointmentNo: widget.patientInfo.appointmentNo, patientMRN: widget.patientInfo.patientMRN,
remarks: widget.mySelectedAssessment.remark, episodeId: widget.patientInfo.episodeNo,
complexDiagnosis: true, appointmentNo: widget.patientInfo.appointmentNo,
conditionId: icdCodeDetails: [
widget.mySelectedAssessment.selectedDiagnosisCondition.id, new IcdCodeDetails(
diagnosisTypeId: remarks: widget.mySelectedAssessment.remark,
widget.mySelectedAssessment.selectedDiagnosisType.id, complexDiagnosis: true,
icdcode10Id: "1", conditionId:
prevIcdCode10ID: "1" widget.mySelectedAssessment.selectedDiagnosisCondition.id,
); diagnosisTypeId:
widget.mySelectedAssessment.selectedDiagnosisType.id,
icdcode10Id: widget.mySelectedAssessment.selectedICD.code)
]);
await model.postAssessment(postAssessmentRequestModel);
} else {
PatchAssessmentReqModel patchAssessmentReqModel =
PatchAssessmentReqModel(
patientMRN: widget.patientInfo.patientMRN,
episodeID: widget.patientInfo.episodeNo,
appointmentNo: widget.patientInfo.appointmentNo,
remarks: widget.mySelectedAssessment.remark,
complexDiagnosis: true,
conditionId:
widget.mySelectedAssessment.selectedDiagnosisCondition.id,
diagnosisTypeId:
widget.mySelectedAssessment.selectedDiagnosisType.id,
icdcode10Id: widget.mySelectedAssessment.selectedICD.code,
prevIcdCode10ID: model.patientAssessmentList[0].icdCode10ID
);
await model.patchAssessment(patchAssessmentReqModel);
}
await model.patchAssessment(patchAssessmentReqModel);
if (model.state == ViewState.ErrorLocal) { if (model.state == ViewState.ErrorLocal) {
helpers.showErrorToast(model.error); helpers.showErrorToast(model.error);
@ -363,9 +423,9 @@ class _UpdateAssessmentPageState extends State<UpdateAssessmentPage> {
class AddAssessmentDetails extends StatefulWidget { class AddAssessmentDetails extends StatefulWidget {
final MySelectedAssessment mySelectedAssessment; final MySelectedAssessment mySelectedAssessment;
final Function() addSelectedAssessment; final Function() addSelectedAssessment;
final PatiantInformtion patientInfo;
const AddAssessmentDetails( const AddAssessmentDetails(
{Key key, this.mySelectedAssessment, this.addSelectedAssessment}) {Key key, this.mySelectedAssessment, this.addSelectedAssessment, this.patientInfo})
: super(key: key); : super(key: key);
@override @override
@ -376,13 +436,13 @@ class _AddAssessmentDetailsState extends State<AddAssessmentDetails> {
// MasterKeyModel _selectedDiagnosisCondition; // MasterKeyModel _selectedDiagnosisCondition;
// MasterKeyModel _selectedDiagnosisType; // MasterKeyModel _selectedDiagnosisType;
TextEditingController remarkController = TextEditingController(); TextEditingController remarkController = TextEditingController();
TextEditingController appointmentIdController = TextEditingController( TextEditingController appointmentIdController = TextEditingController();
text: "234567");
GlobalKey key = new GlobalKey<AutoCompleteTextFieldState<MasterKeyModel>>(); GlobalKey key = new GlobalKey<AutoCompleteTextFieldState<MasterKeyModel>>();
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
remarkController.text = widget.mySelectedAssessment.remark??""; remarkController.text = widget.mySelectedAssessment.remark??"";
appointmentIdController.text = widget.mySelectedAssessment.appointmentId.toString();
final screenSize = MediaQuery final screenSize = MediaQuery
.of(context) .of(context)
.size; .size;
@ -644,7 +704,7 @@ class _AddAssessmentDetailsState extends State<AddAssessmentDetails> {
class PatchAssessmentReqModel { class PatchAssessmentReqModel {
int patientMRN; int patientMRN;
int appointmentNo; int appointmentNo;
int episodeId; int episodeID;
String icdcode10Id; String icdcode10Id;
String prevIcdCode10ID; String prevIcdCode10ID;
int conditionId; int conditionId;
@ -655,7 +715,7 @@ class PatchAssessmentReqModel {
PatchAssessmentReqModel( PatchAssessmentReqModel(
{this.patientMRN, {this.patientMRN,
this.appointmentNo, this.appointmentNo,
this.episodeId, this.episodeID,
this.icdcode10Id, this.icdcode10Id,
this.prevIcdCode10ID, this.prevIcdCode10ID,
this.conditionId, this.conditionId,
@ -664,28 +724,28 @@ class PatchAssessmentReqModel {
this.remarks}); this.remarks});
PatchAssessmentReqModel.fromJson(Map<String, dynamic> json) { PatchAssessmentReqModel.fromJson(Map<String, dynamic> json) {
patientMRN = json['patientMRN']; patientMRN = json['PatientMRN'];
appointmentNo = json['appointmentNo']; appointmentNo = json['AppointmentNo'];
episodeId = json['episodeId']; episodeID = json['EpisodeID'];
icdcode10Id = json['icdcode10Id']; icdcode10Id = json['Icdcode10Id'];
prevIcdCode10ID = json['prevIcdCode10ID']; prevIcdCode10ID = json['PrevIcdCode10ID'];
conditionId = json['conditionId']; conditionId = json['ConditionId'];
diagnosisTypeId = json['diagnosisTypeId']; diagnosisTypeId = json['DiagnosisTypeId'];
complexDiagnosis = json['complexDiagnosis']; complexDiagnosis = json['ComplexDiagnosis'];
remarks = json['remarks']; remarks = json['Remarks'];
} }
Map<String, dynamic> toJson() { Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>(); final Map<String, dynamic> data = new Map<String, dynamic>();
data['patientMRN'] = this.patientMRN; data['PatientMRN'] = this.patientMRN;
data['appointmentNo'] = this.appointmentNo; data['AppointmentNo'] = this.appointmentNo;
data['episodeId'] = this.episodeId; data['EpisodeID'] = this.episodeID;
data['icdcode10Id'] = this.icdcode10Id; data['Icdcode10Id'] = this.icdcode10Id;
data['prevIcdCode10ID'] = this.prevIcdCode10ID; data['PrevIcdCode10ID'] = this.prevIcdCode10ID;
data['conditionId'] = this.conditionId; data['ConditionId'] = this.conditionId;
data['diagnosisTypeId'] = this.diagnosisTypeId; data['DiagnosisTypeId'] = this.diagnosisTypeId;
data['complexDiagnosis'] = this.complexDiagnosis; data['ComplexDiagnosis'] = this.complexDiagnosis;
data['remarks'] = this.remarks; data['Remarks'] = this.remarks;
return data; return data;
} }
} }

@ -84,8 +84,7 @@ class _UpdateObjectivePageState extends State<UpdateObjectivePage> {
}, },
builder: (_, model, w) => AppScaffold( builder: (_, model, w) => AppScaffold(
isShowAppBar: false, isShowAppBar: false,
//TODO: retrun it back baseViewModel: model,
// baseViewModel: model,
body: SingleChildScrollView( body: SingleChildScrollView(
physics: ScrollPhysics(), physics: ScrollPhysics(),
child: Center( child: Center(
@ -379,7 +378,11 @@ class _UpdateObjectivePageState extends State<UpdateObjectivePage> {
)); ));
}); });
await model.patchPhysicalExam(postPhysicalExamRequestModel); if(model.patientPhysicalExamList.isEmpty) {
await model.postPhysicalExam(postPhysicalExamRequestModel);
} else {
await model.patchPhysicalExam(postPhysicalExamRequestModel);
}
if (model.state == ViewState.ErrorLocal) { if (model.state == ViewState.ErrorLocal) {
helpers.showErrorToast(model.error); helpers.showErrorToast(model.error);

@ -63,8 +63,8 @@ class _UpdatePlanPageState extends State<UpdatePlanPage> {
await model.getPatientProgressNote(getGetProgressNoteReqModel); await model.getPatientProgressNote(getGetProgressNoteReqModel);
if (model.patientProgressNoteList.isNotEmpty) { if (model.patientProgressNoteList.isNotEmpty) {
progressNoteController.text = progressNoteController.text = helpers
model.patientProgressNoteList[0].planNote; .parseHtmlString(model.patientProgressNoteList[0].planNote);
} }
}, },
builder: (_, model, w) => AppScaffold( builder: (_, model, w) => AppScaffold(

@ -9,7 +9,7 @@ import 'package:doctor_app_flutter/util/translations_delegate_base.dart';
import 'package:doctor_app_flutter/widgets/patients/profile/SOAP/assessment_page.dart'; import 'package:doctor_app_flutter/widgets/patients/profile/SOAP/assessment_page.dart';
import 'package:doctor_app_flutter/widgets/patients/profile/SOAP/objective_page.dart'; import 'package:doctor_app_flutter/widgets/patients/profile/SOAP/objective_page.dart';
import 'package:doctor_app_flutter/widgets/patients/profile/SOAP/plan_page.dart'; import 'package:doctor_app_flutter/widgets/patients/profile/SOAP/plan_page.dart';
import 'package:doctor_app_flutter/widgets/patients/profile/SOAP/steps_widget.dart'; import 'package:doctor_app_flutter/widgets/patients/profile/soap_update/steps_widget.dart';
import 'package:doctor_app_flutter/widgets/patients/profile/SOAP/subjective/subjective_page.dart'; import 'package:doctor_app_flutter/widgets/patients/profile/SOAP/subjective/subjective_page.dart';
import 'package:doctor_app_flutter/widgets/patients/profile/patient-page-header-widget.dart'; import 'package:doctor_app_flutter/widgets/patients/profile/patient-page-header-widget.dart';
import 'package:doctor_app_flutter/widgets/patients/profile/soap_update/subjective/update_subjective_page.dart'; import 'package:doctor_app_flutter/widgets/patients/profile/soap_update/subjective/update_subjective_page.dart';

@ -239,6 +239,13 @@ packages:
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "2.1.5" version: "2.1.5"
csslib:
dependency: transitive
description:
name: csslib
url: "https://pub.dartlang.org"
source: hosted
version: "0.16.2"
cupertino_icons: cupertino_icons:
dependency: "direct main" dependency: "direct main"
description: description:
@ -385,6 +392,13 @@ packages:
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "1.0.6" version: "1.0.6"
html:
dependency: "direct main"
description:
name: html
url: "https://pub.dartlang.org"
source: hosted
version: "0.14.0+4"
http: http:
dependency: "direct main" dependency: "direct main"
description: description:

@ -63,6 +63,9 @@ dependencies:
#Autocomplete TextField #Autocomplete TextField
autocomplete_textfield: ^1.7.3 autocomplete_textfield: ^1.7.3
# Html
html: ^0.14.0+4
#speech to text #speech to text

Loading…
Cancel
Save