slcsp_calculator

command module
v0.0.0-...-c7336e6 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 15, 2020 License: MIT Imports: 8 Imported by: 0

README

SLCSP Calculator

This Golang program parses a series of CSV files containing data on health plans, and determines the second-lowest cost silver-level plan for a series of input zip codes. Details can be found here: https://homework.adhoc.team/slcsp.

Installation and Use

On a machine with Go installed (this program uses version 1.13), cd to the directory where you want to install the program and perform the following steps:

  • git clone https://github.com/eoconnor/slcsp_calculator.git
  • cd slcsp_calculator
  • go install
  • slcsp_calculator

The program will run and the output will be written to the terminal window. There will be a series of logging statements, followed by the line *** OUTPUT:, followed by the CSV-formatted output.

Implementation Notes

All application logic is contained in the file slcsp_calculator.go. The file slcsp_calculator_test.go contains some unit tests. The input CSV-formatted data files are located in the data directory.

The program uses the Golang CSV parsing library (https://golang.org/pkg/encoding/csv/), which supports the CSV format described in RFC 4180.

To Do's

This section lists items that could use some additional work.

  • Currently, the code is all in a single file. It could be broken up into separate packages that provide a better logical grouping; e.g., primary business logic, utility functions, etc.
  • Moar tests! I have a few for the getRateArea and contains helper functions, but all the significant logic is untested. This would have required mocking the CSV parsing functionality so that we could supply our own test input to that logic.
  • In a real-world scenario, data of this type would be loaded into a relational database for persistence and easier lookup. I used lists and maps to mimic that kind of access.
  • Better input data validation; e.g., there's no logic that would catch a non-numeric value in the rate_area column in plans.csv.
  • To improve performance, we could get rid of the getInputZips function and just iterate over the records from slcsp.csv.
  • The index values used to grab column values from the various file type records are hard-coded throughout the code. They should be defined as constants in one location.

Documentation

The Go Gopher

There is no documentation for this package.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL