Welcome to PharmaShip’s documentation!

PharmaShip is a project from DSM born from the lack of software to manage medicine spares, communication between ship and medical centers (CCMM [1] in France) and requisitions.

PharmaShip is designed to:

  • manage medicine inventory;
  • manage medical material;
  • import inventory (flag regulation);
  • update stock according to the inventory by law;
  • manage and edit medicine and material requisition;
  • page of contact of Purpan.

In the next version, you will have also documentation and easy to use cheat sheet for medicines and materials.

Please, find below the user manual for this application:

Installation steps

Software Requirement

To install Pharmaship on your server you need :

For Windows users, you should install also:

Regarding the last link, for a valid Weasyprint installation, make sure that Set up PATH environment variable is checked.

That’s the only external application needed, the other one are dependencies and there installation will be described on the installation process.

Installation process

Once the requirements are satisfied, you have to download the extract the git from the repository to the folder of your choice. Please, be advised that it is the folder where you will store your application definitely.

Once done, with administrator/superuser privileges, run python setup.py develop. This will install all required dependencies.

Just before starting

In MySQL, you have to create a dedicated DataBase. To do so, follow the next steps in MySQL console:

> CREATE DATABASE pharmaship;
> GRANT ALL PRIVILEGES ON pharmaship.* TO 'pharmaship'@'%' IDENTIFIED BY 'pharmaship';

That makes a DataBase called pharmaship and then a user with full access on it (password is also pharmaship, so you won’t have to modify ~/conf/mysql.conf, but you should personalised it for security reasons.

Now, you might go through a terminal to the location of your newly uncompressed PharmaShip application, and then launch:

> python manage.py migrate
> python manage.py createsuperuser

My advice is to give there a login as root, then a strong password (multiple characters, numbers, and special chars) in order to preserve your application in the future.

Then, in order to be allowed to change the language of the application, run:

> python manage.py collectstatic
> python manage.py compilemessages

And finally, to run PharmaShip, you have to launch (and make [CTRL]+c to stop it):

> python manage.py runserver

First launch

At that step, by entering http://localhost:8000, you should see the following window:

_images/login.png

Where you have to enter your login created above and the password you choose. You should arrive on the first page, like that one:

_images/default.png

On that page, you will find a lot of information. Let’s make a round over there...

On top, you have a dark menu bar with from the left to the right the following items:

  • The application logo, which bring you back to the home page.
  • The main branches of the application:
    • Pharmaship,
    • Purchase,
    • Contact.
  • Then, on the right side of that menu bar, you will find some icons:
    • A flag icon, to change the language interface. On that version, only French or English are available. To use it, just click on the language you want to use, it should change straight.
    • A settings icon, which is a link to the setting page. We will see the detail of all those pages later on, that one will be the first.
    • A user icon, with two fields : my account and administration.
    • A logout button, to disconnect from your session.

On the right menu bar, you will find:

  • Medicine Inventory,
  • Material Inventory,
  • Requisition Overview,
  • Emergency Contact button.

Main page is empty, but you might explore a little, we will continue with the initial configuration. So far, the application is also empty...

Let’s go back to the top menu bar, on the right, you have the settings button. firstly note that on user > administration you might damage seriously the database, so please avoid to go there, or do it with an extreme caution.

User Configuration

By going to user > my account, you will open the settings view. You might also click on the configuration button to go there.

Fill the fields of medical responsible and click on `` Update User Information``.

_images/user_settings.png

Ship configuration

Once data are updated, you will find Data updated close to the button, in green. Taking the chance to be there, go down and fill the vessel particular fields.

_images/vessel_particular.png

Trusted key & inventory

Then, you have to go to import page - on the left menu bar - in order to update the inventory you will need. In order to do so, first add the public key in order to allow the readings of the inventory file.

Once imported, you will find the following view:

_images/trusted_key.png

Now you can add the first set of data you need to PharmaShip in the import data fieldset. You will have to wait a little:

_images/import_data_processing.png

And finally:

_images/import_data.png

Please note that when you receive a new allowance file, it has to be loaded in order to keep your stock in accordance with regulation/company.

Dotation in force

Once this is done, you have to activate the imported allowance. To do so, using the left menu, go to inventory page. Once there, adapt the value of Warning Delay for Expiration Dates in number of days and click to Update Pharmaship Settings.

Then, on Allowances fieldset, you might see the dotation you import on the previous paragraph. Click on enable in order to enable it. This toogles the link to disable value, meaning you might disable it, if you click on it.

_images/inventory.png

On the top bottom of that page, you have also to set the location where you can store medicines or medical material. Please, note in further developpement that if some articles in stock are stored on those location, they will be assign to Pharmaship, straight.

_images/location.png

Initial inventory

In most of the case, you won’t have wait this software does exist to start to manage you medicines... Unfortunately, to get PharmaShip working fine, you will have to initialize it with a full inventory of your stock.

Once you done every steps of Chapter 1, especially setting up all the locations where you store molecules and/or material, you should click on Pharmaship in the top bar menu.

There you will find a summary of your inventory according to the allowance(s) you enable previously.

_images/before_inventory.png

As you figured out, all is empty, and you could even click on medicine in short supply to develop. But we will see this on a further chapter...

Instead of that, click on Medicine Inventory on the left menu bar, you will arrived on the following window:

_images/inventory0.png

You might now click on each molecule line (ie: Acide acétyl salicylique in order to develop it at to add medicines & remarks.

_images/inventory1.png
  • Click on Remarks to add any remark concerning that molecule, if any (then apply or discard your changes).
_images/inventory2.png
  • Click on Add a medicine to add a new medicine to a molecule. Fill name, expiration date, shelve, composition & quantity, then validate.
_images/add_medicine.png

You should then arrive on the inventory page like that one, we will see how to use those new three buttons that appeared on the right line of the new medicine, once we finished the inventory:

_images/inventory3.png

By Clicking on the arrow close to Add a medicine you might also Add an equivalent. The main difference, as shown below is the fact that you have to enter the exact molecule of this equivalent. An equivalent medicine might be as well the same molecule, but at an other composition.

_images/inventory4.png

By doing so, you will find a new line in your inventory - as shown in image below - with the equivalent added. But, there, please note that :

  • there is a “non-conform!” label raised;
  • in our example, composition is the non-valid part, so it appears in red;
  • finally, as you may already have noticed, quantity in inventory (or inventory summary) did not updated as that medicine is not a valid one.
_images/inventory5.png

Once this is done, you might continue filling all your inventory: medicines as well as materials.

Search Panel

Description

In the top of the window (medicine inventory or material inventory) you have the following window:

_images/search_bar_s.png

Inside, you can see 4 zones:

  • Text field : where you may enter some letters of anything you are looking for. It can be either a medicine, either a molecule (in medicine inventory). Please note that as soon as you enter a letter in the search box, it starts to filter the view area with your criteria.
  • Toggle button “Common use” : Shall you toggle this button, with the dotation A from CCMM, you should only see the two following molecules :
    • Acide acétyl salicylique,
    • Paracétamol
  • Simple button, with three horizontal lines: you will open the unpacked search box by clicking on.
_images/search_bar_b.png
  • Close button. This will reset all settings to default, and display all.

Once you clicked on the unpacked button, you can see the full search bar (see above picture) where:

  • you can filter by group (depending of your dotation),
  • or by location.

However, if you want to use the third filter: “by allowance”, be sure to set it before any other search parameters. Otherwise you will have to enter again all your parameters, as this is an higher level filter.

Tips and tricks

Usage of this panel is the most intuitive one, ... once you know that trick: when unpacked, fill the fields from the bottom to the top!

At the time when those lines are written, it is not possible to search by name and with “Common Use”. The last one is selected at a time. So keep it in mind if you are making some combined searches.

Requisition

Requisition overview

That page opens an other Onboard Assistant module, the purchase one. In that module - so far - you can manage Pharmaship requisition(s) by creating, editing and deleting ones. Empty after the installation process, we will create our first requisition.

New Requisition

Once you complete your inventory, you should create your first requisition. That is an important point to fulfil the inventory before to prepare the first requisition, as we will use the “populate function”.

By clicking on the “new requisition” button, you will access to the following window:

_images/new_req.png

There, you have to fill the requisition name, the date where you want to receive your requisition as well as the port of delivery. There you can use as well a port code on 5 characters, or a full name of the port. There is no verification at that step (follow your company procedure).

Finally, choose the range of application of your requisition: molecule or equipment. And choose “Populate automatically”, in order for Pharmaship to find the molecule or the equipment missing in your stock inventory compared to the allowance needed by regulation.

Now, click on “create” and wait... as shown below, this will generate the requisition with all quantity missing in regard to your stock and expiry dates.

_images/new_req2.png

On that window, you can find:

  • the requisition title,
  • its reference code,
  • the status of the requisition,
  • and the type of requisition (there, it is molecule requisition).

Below, you have two tabs: items and instructions. Instructions is the tab where you might instruct your purchaser about what you are exactly asking for.

Then on items tab, you have a text-box where you can search or just add new items, quantity and then validate. It will be added at the end of your requisition.

Also, line by line, you can modify the quantity or delete the line. This is confirmed by a green tick, on the right side of the delete button as soon as you quit the quantity box.

Once your requisition is ready, you might go back to Requisition Overview, and you will find a short resume of your newly added requisition. In order to re-open it, just click on the eye.

Additional note: As you can see, there is a print button, allow you to print the requisition and when you receive it, to write on it the quantity of medicine received... (See below how to update your stock.)

Requisition Status

When you want to update the status of a requisition, you have to re-open it, then close to its reference, you might select the status you want to drop this requisition to.

On this button, you might click on the name (left side) what will show you that following screen, where you could change the requisition status.

_images/status.png

Or you might click on the right side, where you can:

  • change the status - same window as previously,
  • change name of requisition,
  • or delete the requisition.

The different status are:

  • Draft - only for local requisition, when working on it.
  • Pending approval - when draft is ready, but requisition is not yet approved. At that stage, it is still possible to re-edit it if needed.
  • Approved - when approved, there is only the possibility to cancel it.
  • Quoted - when you received the quotation.
  • Ordered - when requisition has been ordered (quotation approved).
  • Partially received - if you received only some parts from that requisition.
  • Fully received - all is received.
  • Cancelled - if you have to cancel the requisition after it has been approved (not to delete it).

Please note that on this version of Pharmaship, whatever is the status, there is no change in your inventory. In other terms, even if you mark a requisition as fully received, you still have to update manually your stock.

Update/Modify items

Once you print the requisition and inventoried what you received on board, you might change the status to “partially received” or “fully received” ; and then change the current page to “Medicine inventory” or “Material inventory”.

Open the molecule where you want to add a medicine. and on the right side, click on the middle button: “Edit this medicine”.

_images/update_med.png

There you can modify data from this medicine, as well as its quantity.

Consumption of items

In case that you have to consume some medicine, do not update the stock as above but click on the blue button instead of. That button called “use this medicine” will open the following sub window, where you just have to enter the number of medicine you used:

_images/consume.png

Remove items

The last icon there - the red one - is to delete completely the medicine. This should be done if the medicine is outdated for example.

At that stage, you are able to install Pharmaship, to set it up, to fill Pharmaship inventory and to make a requisition, and finally you know how to update your stock in the software database when you receive it.

The next chapter will show you how to add another allowance.

Common errors

This section will be completed with your questions and the answers / solutions we (or the other users) will provide. To contact developpement team, you can send a message directly on https://github.com/tuxite/pharmaship, or send an email to pharmaship@devmaretique.com.

Allowance importation

Q> Why doesn’t importation of allowance work after installation?

A> Check if you already import the valid public key as explain in chapter 1.7.

Printing issues

Q> Why are generated PDFs unreadable - text are over-written?

A> You have to install DROID SANS font in order to correct that bug.

About the author

Matthieu MORIN, lead programmer of Pharmaship, is currently Dual Officer in the merchant navy. He graduated the STCW Master/ Chief Engineer unlimited diploma in France in 2012 and during during his year of studies he created the DSM association with Hugues DESVAUX.

Based on their respective experiences on board as Deck and/or Engine Officers, they wanted to provide modern and efficient software solutions to main seafarer’s issues on board.

In order to compete for the 2012 edition of the Seagital awards contest, DSM submitted various projects including OnBoard Assistant & Pharmaship. The goal of these two projects is to use/develop open source software to standardize daily work and duties on board under one common and ergonomic interface. Pharmaship, originally carried by DSM member Julien SCHEPERS, won the first prize of the 2012 edition of the Seagital Awards and was, afterwards, assigned to Matthieu for the development.

Combining his on board experience with the CCMM (French maritime medical center) advices, Matthieu used his knowledge about Linux environment and open source databases to create a fully functional and user friendly hospital management software.

After several trials and demonstrations, Pharmaship was unanimously appreciated by French Officers and CCMM doctors as an efficient alternative to existing Excel workbook to maintain hospital inventories.

PharmaShip is part of a larger project called Onboard Assistant. (link for more details)

[1]Centre de Consultation Médical Maritime is also called PURPAN. See dedicated chapter for more details.

Indices and tables