Retail medicine prices are regulated in South Africa through the Single Exit Price Mechanism. These prices are published on a regular basis at www.mpr.gov.za. The information is only available in a large and unwieldy excel spreadsheet making it inaccessible to casual users.
This projects builds an API and basic user interface to query this database. You can find a running instance at mpr.netlify.com.
A typical use-case would be for a consumer to look for alternative products for a particular medicine, often generic medicines can be much cheaper than the branded product. Another use-case allows consumers to ensure that they are not being overcharged for their medicines. This database publishes the maximum price at which a medicine can be sold. A pharmacy cannot legally increase the price of a particular medicine above the price listed here.
In addition to providing this simple web interface, we make available a rudimentary API that you can use to access the most up-to-date prices to be used in third party applications.
A more comprehensive search that makes available additional fields https://mpr.code4sa.org/api/v2/search?q=lamictin
Accessing product details https://mpr.code4sa.org/api/v2/detail?nappi=703312001
Finding generic products (based in active ingredients) https://mpr.code4sa.org/api/v2/related?nappi=703312001
Basic search e.g. https://mpr.code4sa.org/api/v2/search-lite?q=lamictin
Downloading a dump of the entire database https://mpr.code4sa.org/api/v2/dump
Get the last updated date https://mpr.code4sa.org/api/v2/last-updated
- Clone the repository by running
git clone git@github.com:codebridge-za/medicine-price-registry.git
. - Make sure you have the latest release of NodeJS installed.
- Run
npm install
in the root folder of the repository to install all dependancies.
- Please review the branches and commits sections in the following documentation.
- Create a new branch before adding a new feature (skip this step if you are contributing on a specific branch)
- This project is using Gatsby.js. You can run
npm start
in the root folder - This will open a local version of the project at localhost:8000
- If you are making a public pull request (i.e. you do not have write access) use the forking Git workflow.
- If you are a project contributor (.e. you have write access) use the feature branch Git workflow.
- Make a pull request via the Github dashboard to the
develop
branch. - The designated owner of the repository will automatically be tagged in all pull requests via the
docs/CODEOWNERS
file. - Once your code has been accepted and merged into
master
Netlify will automatically deploy the changes to mpr.netlify.com/.
- This project is currently making use of CSS Modules for styling purposes temporarily.
- When adding to the project, please follow the folder and file structure already in place.
- This project is following the eslint-config-airbnb styleguide.
- Change style convention to make use of Styled Components as well as Material UI components.
- Add CSS spinner before each ajax call.
- Redesign and submit new feature ideas.
- Create a script that downloads the latest database instead of shipping a sqlite db with the repo.
- It might be useful to compare prices over time.
- Seems like there are some spelling errors in the database - e.g. paracetamol and paracetemol. Might need to clean the database through some sort of fuzzy match and possibly report those errors back to mpr