saveTestOrDiagnosis function

Future<void> saveTestOrDiagnosis({
  1. required BuildContext context,
  2. required String name,
  3. required String code,
  4. required String diagnosisID,
  5. required String diagnosisName,
  6. required QuickAccessType type,
})

Implementation

Future<void> saveTestOrDiagnosis({
  required BuildContext context,
  required String name,
  required String code,
  required String diagnosisID,
  required String diagnosisName,
  required QuickAccessType type,
}) async {
  Navigator.pop(context);

  // handle form validation and saving of the problems
  const String testStatus = 'active';
  const String diagnosisStatus = 'Active';
  final String recordingDoctor = getRecordingDoctor(context)!;
  final String dateRecorded = DateTime.now().toIso8601String().split('T')[0];
  final PatientInfo patientInfo = getPatientInfo();
  final String? encounterReference = getPatientInfo().encounterReference;

  Map<String, dynamic> _variables;
  if (type == QuickAccessType.test) {
    _variables = addTestMutationVariables(
      testName: name,
      testCode: code,
      testStatus: testStatus,
      recordingDoctor: recordingDoctor,
      patientReference: patientInfo.patientReference!,
      patientName: patientInfo.patientName!,
      encounterReference: encounterReference!,
      dateRecorded: dateRecorded,
      diagnosisID: diagnosisID,
      diagnosisName: diagnosisName,
    );
  } else {
    _variables = addDiagnosisVariables(
      clinicalStatus: diagnosisStatus,
      dateRecorded: dateRecorded,
      selectedDiagnosis: diagnosisName,
      recordingDoctor: recordingDoctor,
      patientReference: patientInfo.patientReference!,
      encounterReference: encounterReference!,
      diagnosisCode: code,
    );
  }

  final dynamic result = await showDialog(
    context: context,
    useRootNavigator: false,
    builder: (BuildContext context) {
      return BewellSubmitDialog(
        data: _variables,
        query: type == QuickAccessType.test
            ? addTestMutation
            : addConditionMutation,
      );
    },
  );

  if (result['createFHIRCondition'] != null ||
      result['createFHIRServiceRequest'] != null) {
    type == QuickAccessType.test
        ? ExamChangeObject().onAddTestListener.add(true)
        : ExamChangeObject().onDiagnosisChangeListener.add(true);

    Navigator.of(context).pop();

    // success snackbar
    ScaffoldMessenger.of(context).showSnackBar(
      SnackBar(
        content: Text(type == QuickAccessType.test
            ? addTestsSuccessMsg
            : diagnosisAddedSuccessMsg),
        duration: const Duration(seconds: kShortSnackBarDuration),
        action: dismissSnackBar('close', white, context),
      ),
    );
  } else {
    // error snackbar
    ScaffoldMessenger.of(context).showSnackBar(SnackBar(
      content: Text(UserFeedBackTexts.getErrorMessage()),
      duration: const Duration(seconds: kLongSnackBarDuration),
      action: dismissSnackBar(closeBtnText, white, context),
    ));
  }
}