Giter Club home page Giter Club logo

chocan's People

Contributors

alexanderjdupree avatar alexsalazarj avatar dannymendez90 avatar dom26 avatar kzalewski11 avatar remyabel2 avatar

Stargazers

 avatar

Watchers

 avatar  avatar

Forkers

mackfoggia

chocan's Issues

2.3.6 View Summary Reports

Actors: Manager

Use Case Overview: The manager wishes to see a summary of provider activity for the week.

Precondition: Manager is logged into the system.

Basic Flow:

  1. Manager requests the system to generate summary reports for the current week.
  2. Report is generated and displayed to the manager. Summary report may include details such as a list of providers to be paid that week, the number of consultations each had along with their total fee.

Integrate Clang support ( Optional )

Currently Circle CI only runs continuous integration on the GCC compiler, we should add a build job to the Circle CI configuration file to run a job on the Clang compiler as well. This is an entirely optional feature, but it would be nice to know that the project is supported across multiple platforms.

2.3.3 Update Member or Provider Record

Actors: Provider or Manager

Use Case Overview: Provider or Manager will update or edit a record.

Precondition: Member has their membership card and a Provider or Manager is logged into the system.

Basic Flow:

  1. A ChocAn ID is entered into the terminal by either physically sliding the Members ID card through the reader or by entering a providers IDl.
  2. The Provider/Manager may update the name and contact information fields of the record. Transaction records will not be able to be updated.

Alternative Flow 1:

  1. A1 - The number is not valid, an error message is displayed and the
    system awaits a valid ChocAn ID.

3.1 System Access

  • 3.1.1 - The system shall validate system access through a provider or manager unique identification number.
  • 3.1.2 - Invalid identification numbers shall be rejected with an explanation given.
  • 3.1.3 - The system shall provide a role based access login system that restricts certain system functions to a specific role
  • 3.1.3.a - Providers will be limited to viewing and updating their own record as well as the record of the current patient they are provided service for
  • 3.1.3.b - Managers will be able to create, edit, and delete both provider and member records as well as receive on-demand reports compiled from the ChocAn data center. Managers are also limited within member/provider records to non-confidential data.

Refactor DateTime library

Recommend we switch the datetime primitive type wrappers to the std::chrono libraries duration types. These types provide strong type safety (which was a requirement of the datetime library) without any excess boiler plate code. Furthermore, duration types provide easy methods for converting into other duration types. Like converting years to days to hours to minutes etc.

More on the benefits of std::chrono can be found here.
https://www.youtube.com/watch?v=P32hvk8b13M&t=336s

Ctrl+D sends program into infinite loop

Currently, if we enter Ctrl+D at any point in the application the application will be sent into an infinite loop. I believe this is because Ctrl+D sends an EOF character to STDIN and the Terminal Input Controller does not seem to discard this character from the stream. So we need to refactor the Terminal_Input_Controller.hpp file to check for EOF, or somehow discard that character from the stream.

Implement better ID Generator algorithm

This is the current algorithm for generating unique ID's:

unsigned ID_Generator::yield() const
{
    int id = 111111110;
    while(database->id_exists(++id));
    return id;
}

Essentially it says 'find the first 9 digit id that isn't taken by counting up from 111111111'. This sequential algorithm is O(N) and not great. So If someone wants to get rid of my quick prototype code with something more robust that'd be great.

Add hours/minutes/seconds fields to DateTime

As per the initial requirements document, for the add transaction part of the app we need to record the current time as (MM-DD-YYYY HH:MM:SS). Currently the DateTime object only has fields for Months, days, and years. We need to add these extra attributes to the date time object and create constructors for those fields.

Add Valgrind to CircleCI system tests

We should run the system tests within Valgrind so we can have a printout of memory usage and ensure there are no memory leaks for the application.

It should be a simple enhancement, just add the call to valgrind in the 'Run System Tests' section of the .circlci/config.yml file.

Update Catch2 library to latest version

The current version of the Catch2 testing framework in our repository is v2.9.2. Recommend we update to the latest version, v2.11.0 which offers a better reporter and bench-marking support.

Whoever wants to take this on just follow these simple directions:

  • Create a new branch git checkout -b update_catch2
  • Download the latest release here
  • Replace the file catch.hpp in the third_party/ folder with the latest version
  • Build and run to ensure all tests still pass
  • Commit changes and push to GitHub
  • On the GitHub repo page, open a new pull request.
  • Let the automated tests pass and allow time for review before merging.

Make Terminal State Viewer use absolute paths

Currently, if you try to run the application outside of the repository root folder you won't be able to load the state views because the Terminal_State_Viewer uses relative paths. We need to update this to use absolute file paths so the application can find the views from anywhere in the file system. I am thinking that during the build phase we define an environment variable like "CHOCAN_VIEWS=[absolute path to views folder here]" and then prefix that variable to the view name.

2.3.5 Delete Member or Provider Account

Actors: Manager

Use Case Overview: The manager will delete a member or provider account.

Precondition: Manager is logged into the system

Basic Flow:

  1. Manager enters the ChocAn ID of the account to be deleted
  2. System displays account information and prompts manager to confirm that they want to delete this account.

2.3.4 Create Member or Provider Account

Actors: Manager

Use Case Overview: The manager will create a member account.

Precondition: Manager is logged into the system

Basic Flow:

  1. The manager indicates whether they are creating a provider account or a member account.
  2. Name and contact information is entered into account fields
  3. Account information is displayed and manager verifies information is correct.
  4. A unique ChocAn ID is generated for the account and attached to the record.

Alternative Flow 1:
3. A1 - Incorrect information can be edited before account is finalized.

Update Build Script

Since we're using C++17 language features, and build script itself has dependencies we should update it to be more robust. I propose the following features:

  • Check for GCC version >= 7.0 and/or Clang Version >= 4.0 (Need this for C++17)
  • Print error message if the above check fails
  • Attempt to download lib-bash library (this is used for the pretty printing)
  • If above download fails then execute the alternative build process without lib bash
  • (optional) add a 'clean' command that will remove the bin/ lib/ gmake/obj/ folders

2.3.2 Add Service Transaction

Actors: Provider, Member

Use Case Overview: Provider will add a service transaction to a members record.

Precondition: Provider is logged into the terminal
Basic Flow:

  1. Provider enters the date and time the service was provided.
  2. Provider uses the Service Directory to look up the appropriate service code and enters it into the terminal
  3. Provider may enter additional comments in the comments field.
  4. The complete transaction record will be displayed. This includes the service code, service description, current date time, date of provided service, and additional comments.
  5. Both provider and member will verify the accuracy of the record by entering their respective ChocAn IDs

Alternative Flow 1:

  1. A1 - The provider enters a non-existent date, error message is displayed then loop

Alternative Flow 2:
2. A1- Provider enters a non existent service number, error message is displayed then loop.

2.3.1 View Member or Provider Records

Actors: Member, Provider or Manager

Use Case Overview: Provider or Manager may view a member’s record.

Precondition: A provider or manager is logged into the system

Basic Flow:

  1. A ChocAn ID is entered into the terminal by either physically sliding the Members ID card through the reader or by entering a providers ID.
  2. If the number is valid, the record for that account number may be viewed.

Alternative Flow 1:

  1. A1 - The number is not valid, an error message is displayed and the
    system awaits a valid ChocAn ID.

Alternative Flow 2:

  1. B2 - The number is valid, but the account is suspended. A message will be displayed outlining the nature of the suspension.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.