Community Documentation

Complete

Documentation contributed by the community for users of OpenVPMS.

NOTE: if you are looking for information on the current versions of the OpenVPMS software, then you should look here.

1.5 User Handbook Contents

Complete

This document is intended to provide basic user instructions to an average user. This includes mastery over all the basic functions in the system from the persective of a nurse, doctor, or business user.

This document does not cover administration, or implementation. Please see other resources for information on those topics.

The pages below are organized into chapters. Please feel free to comment, correct, edit, append, or anything else you can think of to improve this document!

System Overview

Complete

OpenVPMS is built on Web technologies. That is, it uses the very same technologies that power many popular websites. This has several advantages:

  • Continued support of these tools due to the broad reach they have gained in the industry.
  • Accessibility through standardized means -- the web browser.
  • Scalability and robustness.
  • Availability of documentation, libraries, and 3rd party support.
  • Centralization for upgradability, data management, etc...

There are some disadvantages to web based technologies as well:

  • The web is "stateless".
  • Graphics are more difficult.

If you're not sure what that all means, don't worry about it. The trade-off is a good one.

In order to get started with OpenVPMS, it's useful to bear this in mind. Sometimes the user might think all the work being done is on the computer right in front of them. It's not the case here. All the work happens on a single server machine.

The intent of this book is not to describe, in gory detail, all the technologies behind OpenVPMS, but instead, to give the every day user a good guide in the usage of the system. 

enlightened Takeaway: All work done on the system is through a web browser.

Navigation

Complete

This part of the handbook is to help you get oriented within the system. It also offers information about the various modes of usage that you might encounter.

Navigation and Layout

Complete

Layout

Let's get oriented. The basic user interface for OpenVPMS looks like this:

There's a lot going on here. Let's step through each element.

Main Menu / Sections

In this top area, you'll be able to see all the primary sections of the system. You may not see all of them. Each of these sections houses a different type of functionality of the system. Here's brief list of what each section contains. (Note: This list is not remotely exhaustive!)

  • Customers: Billing, account information, basic contact information, etc.
  • Patients: Basic patient information, medical records, reminders, etc.
  • Supplier: Suppliers and their contact information
  • Workflow: Scheduling, task lists, messaging, investigations
  • Products: The full product catalog, and configuration
  • Reporting: Till balancing, financial reports, patient reports, reminder printing
  • Administration: System setup
  • Help: Help

You'll come to understand what is in each of these through usage of the system. You're encouraged to click through each one, and explore what information you can find in that section.

Submenus

Each section has its own list of subsections. These are different in each section you go to. We won't enumerate all of them here, but will discuss elements in each of these submenus throughout the rest of the handbook.

enlightenedTip: You can always tell where you are (main and submenu) by looking at the blue lettering at the top of the page. It's labeled "Current Selection" in the screenshot above.

Current Customer

To the left of the screen, the current customer and patient information is displayed. The most useful information about customers and patients is displayed here. This is to accelerate your workflow. It's not convenient to have to dig deeper into the customer and patient records to find basic information. You'll find information here such as:

  • Contact information
  • Alerts and warnings about the customer or patient
  • Current balance
  • Age, weight, breed

Other Elements

There are other elements on the main screen that aren't highlighted in the screenshot above. See if you can find them! Each of these has a useful function in the system.

Navigation

There are numerous ways to navigate the system. In order to master navigation, it's necessary to have an urderstanding of the basic modalities that are used in the system.

Action Buttons

Any of the large buttons, that are green rectangles in the screenshot above, perform a meaningful action in the system. You will find many of these throughout the system. Action buttons can have many meanings from deleting information, to finding or printing information.

These buttons are generally located at the bottom of a screen or pop-up window. When they are at the bottom of the window, remember that they apply to everything in that window.  For instance, if I click an "Edit" button, it will then edit the entire record that is current displayed. Go ahead and try it!

Lists

Sometimes action buttons are not at the bottom of the screen. In this case, they are usually representing a list. The screenshot above has two big action buttons on the screen. Can you find them?

The reason the "Select" button is at the top is because it's controlling a list that is about to be displayed on the screen. You'll find this type of button throughout. Look for it in these areas:

  • Patient lists for customers
  • Invoice items
  • Reports
  • Product lists

You'll find that adding records to a list happens in two different ways. For larger things (top level data like customers and patients), there will be an action button ("New") at the bottom of the screen. For smaller items (like invoice items) you may find an "Add" button at the top of the list.

enlightenedTip: When editing lists, the current editing window counts as an item of the list. Go ahead and try it!

Shortcuts

For those that are inclined to be as efficient as they can, keyboard shortcuts are available. Anywhere that you see an underlined letter, you can hold down "Alt", and hit that letter (or number). This will have the same effect as clicking on it.

A second shortcut is the blue underlined items. These are hyperlinks. They will generally jump you to another section in the system. You'll find them almost everywhere throughout the system. It's part of what makes getting around very easy.

Searching

This chapter discusses the various ways to retrieve and input information. Getting familiar with the various ways to do this in OpenVPMS will help you navigate the system effectively. It turns out that finding and entering information rely heavily on one thing in OpenVPMS: searching.

There are numerous times that you might want to find information in OpenVPMS. Let's start with the simple case of looking up a user. Keep in mind, that this same strategy can be used for looking up prouducts, patients, and almost every other type of information you might be looking for.

Here's the select box in the patients section. You can get to this by clicking Patients->Select.

There are several elements here. Let's discuss each one.

First, you'll notice the search box. This is where you can enter the actual text that you're looking for.

Second, there is a series of tick boxes. Each tick box is to the right of the item it represents. Note that in the screenshot, the "All Patients" tick box is checked. This means that this search will search throughout all of the patients in the database. This is meaningful because the default in the system is to search through all the patients for the current customer. If no customer is selected, it will look through all the patients however.

Next, we see the Find button. You will see this button throughout the system. It's very important. Sometimes, it means that you'll initiate a search, and sometimes it will re-run an existing search that happens to be on the screen.

enlightenedTip: Get in the habbit of clicking the find button when you see it on the screen. This will refresh the information that is displayed. 

At the bottom of the dialog box, you'll see the Cancel and New buttons. The Cancel button will close the window and stop the current search. The New button is there for convenience. If you happen to be looking for something that isn't in the system yet, you can click this to add that item.

Imagine that we're creating an appointment for a new patient. Maybe we're not sure that it's a new patient, so we search. Having not found the patient we're looking for, we can click New right from that screen to add the patient to the database. This is a convience feature because there is another (longer) way to add a patient that is discussed in the Patient section.

After clicking Find, you will see a list of all results in the system that match the criteria you've specified.

Wildcards

What if we only know part of the thing we're looking for? This could make it difficult to find a particular item. Not to worry, OpenVPMS has a mechanism for searching for just part of a string. In order to do this, we use the wildcard character "%". Take the following example:

In this example, we were sure that our patient was "something" Vader, but couldn't remember the first part. To search for "something", simply put a "%" in the search string, as shown in the screenshot. Note that it has returned Darth Vader as a result. And before you ask, yes, this cat is actually named Darth Vader.

It also turns out that there is an implied "%" at the end of every search string. That means that these two search strings are identical: "%Vader" and "%Vader%". This again is for convenience. Generally, you would only need to type the first couple letters of the thing you're searching for and it will come up. If I'm looking for all the patients starting with "Fi", I can just enter "fi" and I'll get a list of "Fido", "Fidette", "Fidel" or any other "Fi%" name.

enlightenedTip: Searches are case insensitive. You don't need to capitalize anything.

enlightenedTip: You can hit enter instead of clicking find to run the search. Once you've found the item you're looking for, you can click on it to select it.

Lookups

There is another very frequent case that you'll be searching for information. These are lookups. There are many forms in the system that require you to enter information.

These fields are almost the same as the search dialog above, with one difference: searching is enabled right in the field you're trying to fill out. Let's take a look at an invoicing screen.

This screen is discussed in detail in the Customers section of the manual.

The point of interest right now, is the binocular symbols just to the right of the Patient, Product, and Clinician fields.

As you may have guessed, clicking on the binoculars brings up the search dialog from above. You should have no problem finding items by clicking on the binocular, and the following the instructions above.

However, that can be tedious if you're entering a lot of data. So, the designers of OpenVPMS have made it easier by adding a shortcut. You don't have to click on the binoculars if you already know a little bit about what you're looking for.

Let's say that the patient Tiny needs a Collar. In order to add that to the invoice, I can simply type in the first couple letters and then hit enter.

If there are more than one thing that start with the letters I'd typed in, then it will display a list of possible matches. The same thing applies for any field with binoculars next to it. Many fields you'll use over and over.

For instance, if each Doctor's name starts with a different letter, you can simply type the first letter and hit enter in the Clinician field shown here. Also, the same restrictions as in the default search dialog apply. So, searching for a patient in this field, will limit the search to patients of the current client. All of these restrictions are designed to make using the system more efficient. Give it a try and see!

enlightenedTip: There's no need to go to the search dialog if the binoculars are there to help you.

Customers

Complete

This section is meant to deal with the customers section of OpenVPMS. In this section, you'll find all functions regarding customer interaction. These include billing, payments, basic information, patient lists, notes and alerts, et cetera.

The pages below represent each of the main functions that you can accomplish in this module. These pages are not meant to be specific to any submenu within the customers sections because some activities require probing into multiple submenus. Dealing with customer accounts is certainly one of these.

Basic Customer Information

Complete

We can get a pretty good handle on what types of information are in this screen by looking at the screen itself.

While the most basic information is shown directly on this screen, there are several other types of information that are in the tabs toward the bottom of the screen (Patients, Contacts, Identities, etc.). We'll step through all the elements of this screen. 

Actions

The action buttons at the bottom are most likely fairly familiar to you at this point. Here's a description of their functions:

  • New: Create a new customer
  • Edit: Edit the current customer
  • Delete: Delete the current customer
  • Merge: Merge this customer into another customer

enlightenedTip: The "Merge" button, as shown above will not appear unless you're logged in as administrator.

Name and other Basic Information

The information that's shown right on this screen is the basic information. Here we must enter, at a minimum the name of the customer. All other fields are optional, but highly recommended.

enlightenedTip: In general, if there is a single value associated with a record (like Customer and Name), it will show in the main window. If there can be multiple values associated, then it is a list -- and will appear slightly differently, as some of the information in the tabs.

enlightenedTip: Your system administrator can configure your system to change the default value of the Title field, or any other pull-down type field.

Further Customer Information

The rest of the information for a customer is housed in the tabs toward the bottom of the screen. We'll discuss each one. Note that we won't put a screenshot of each one in this document, but you're encouraged at this point to click through each tab and get a feel for what information lives in each.

Patients

The patients tab is a list of patients for the current customer. You can add and remove patients to the current customer here. OpenVPMS is flexible in the way it handles the relationships between patients and customers. It's possible to have multiple owners associated with a single patient, as well as the more typical multiple patients to a single owner. Here, however, we're just showing what patients are associated with this customer.

It is also possible to add patients from here. When editing the record, and searching for a patient to add, you can click the "New" button directly from the search box and it will jump to the new patient screen. The details of this are covered further in the Patients section.

Contacts

All different types of contacts are consolidated into this one tab. The screenshot below shows this tab under the customer edit dilaog.

enlightenedTip: The customer edit button edits the entire customer record, not just the current tab or field.

As shown in this field, using the list edit modality (as discussed previously), you can add numerous types of contact information into this list. Contacts consist of Addresses (Location), Phone, Email, and Fax types of contact.

Often the system will look for this type of information when printing forms, invoices, or other types of documents. Forms will pull either a) the preferred contact address (there's a checkbox for that), or b) the first contact location the system encounters. For this reason, you must have at least one location and phone contact per customer.

Other Customer Functions

Complete

There are several other customer related functions that you can find in this section. They're not used as often, but are important to know about.

Documents

The documents section allows you to store documents associated with the customer. The types stored here are: Attachments, Forms, and Letters.

Estimations

Estimations are almost the same as invoices. The only difference is that they allow you to specify a minimum and a maximum for certain charges, mainly those that have a quantity attached.

Notes & Alerts

This is a general function that allows you to store notes and alerts about the customer. Alerts will show up the same way that patient alerts will show up - right in the current customer information area. Depending on your configuration, you may have certain pieces of information that you'd ilke to be sure are seen in reception. This make good alerts.

Payments, Charges, and Accounts

Complete

Account Basics

There are 4 primary types of transactions that are used to manage customer accounts in OpenVPMS: Invoice, Credit, Payment, and Refund. Understanding the relationship between these is necessary to being able to handle tasks such as invoicing customers.

Let's start with this basic chart. This will become more clear as we discuss below. Basically, the four transaction types can be broken into smaller groups. Also, please note here that a positive account balance means the customer owes the practice money, not the otherway around.

There are transactions that influence a customer's account because something happened, or some good changed hands. These are invoices and credits. Invoices and credits are opposites.

There are other transactions that represent the transfer of money. These are payments and refunds. Payments and refunds are opposites.

enlightenedTip: When a good is returned, a credit is processed, not a refund. A refund can later be processed if the customer wants money back, instead of having a negative account balance.

Navigation

In the Customer screen, there are 3 areas for working with transactions: Charges, Payments, and Account.

  • Charges: For creating invoices and credits (returns).
  • Payments: For creating payments and refunds.
  • Account: For viewing all (finalized) account history. This is also used for more advanced transaction types - account adjustments.

As you can see, the opposites are grouped together.

Charges

Managing these transaction types generally means creating them, and then finalizing them. OpenVPMS allows for staging of each of these transaction types. This is very useful when trying to get ahead of the work. For instance, if you know a customer is coming to pick up a prescription later in the day, you can create that invoice immediately, and leave it in the staging area. It becomes a "Work in Progress". These are discussed further in the Reporting section.

Once an invoice is truly complete, generally just before the customer pays, it must be finalized. This moves it to the account balance, and out of the "Work in Progress" state.

enlightenedTip: Once finalized, transactions cannot be edited. This is to ensure proper accounting.

To create a new invoice, go to Charges and click "New", then select "Invoice". You will see a window appear that allows you to add sale items.

Once the invoice screen appears, you can add as many items as you wish. Note that you can override prices as you go. When you've completed all of them, click on "Ok". Note that this does NOT finalize the invoice. You've completed editing it, but you haven't actually billed the customer yet.

Once you're sure that it's ready to bill, click on the "Finalize" button. At this point, OpenVPMS will ask if you'd like to make a payment. This is a convenience because finalization almost always occurs just before a payment (you wouldn't otherwise be able to know if the customer wanted to purchase something more). If you click "Yes", it will jump to the payments section, as described below.

Payments

The payments area is simpler than charges because there is no staging area. It here we have basic payments, and refunds.

A refund would be useful if the customer had a negative account balance perhaps as a result of a credit (return). A refund is what allows the practice to pay him back for that refund. It will most likely be the least

In order to create a new payment, go to Payments and click "New", then select "Payment". You will see a window appear that allows you to add payment types.

Next, click on the type of payment you would like to receive (Cash, Credit, etc). Once you've created the line-item, you can fill in the details for the payment. When done, click "Ok".

Note that OpenVPMS uses a list edit style for payments. The reason is because some customers will want to pay with multiple tender types. They may have some cash in their pocket, but want to cover the rest with a credit card. You can add multiple payment types by repeating the steps above with a different selection (before clicking "Add").

enlightenedTip: On cash transactions, after you've entered the tendered amount, hit Enter and OpenVPMS will calculate the change for you.

Workflow

As an aside, the workflow takes you through most of the steps above. There is no need to manually go and create an invoice. It is done automatically as part of the workflow. There are more details about this in the Workflow section.

Account

The account section displays a list of all transactions against a particular customer account. You can click on each one and see the details of it.

This section also has a facility to create more advanced transaction types. These can be created by clicking on the "Adjust" button. Here's an overview of each one:

  • Credit Adjustment: Decrease the customer account balance.
  • Debit Adjustment: Increase the customer account balance.
  • Initial Account Balance: Self explanatory.
  • Customer Bad Debt: Used for writing off debt.

enlightenedTip: Each transaction type above allows you to type notes along with it. Particularly in the advanced transactions, it is important to note why the transaction is being entered.

Patients

Complete

The patients area allows modification of basic patient information as well as all the medical history associated with a particular patient.

Basic Patient Information

Complete

The basic patient information screen is very similar to the basic customer information screen. There are some notable differences.

Name and Other Basic Information

The information shown at the top of the screen comprises the basic information for the patient. The various fields are relatively self evident.

enlightenedTip: ID numbers in OpenVPMS are unique, even across customers and patients. This number may be the easiest way to ensure everyone's talking about the same patient.

enlightenedTip: Note the record above has an 'Active' field. There's never a need to delete records from OpenVPMS... just deactivate them when you don't want to see them anymore.

Further Patient Information

The remaining tabs at the bottom each serve a different function specific to patients. Below is a description of each tab, and how it can be used.

Customers

The first question might be "Why is this a list?" It turns out that sometimes a patient will have more than one customer. It may be the case that you have decided to make customers individuals instead of couples perhaps, or you might have a boarding farm as a customer as associated with a patient, as well as the owner of the patient. This makes sense for numerous reasons.

This list can be edited just as any other list in OpenVPMS.

Identities

Identities in this context are very similar to identities in the customer context. This is a list of alternate ways to identify the patient. These ways can include:

  • Alias: This would represent a secondary name, or nickname for the patient.
  • Microchip: The number associated with the microchip can be entered via this tab. It can be retrieved through the search functionality.
  • PetTag: Any tag that is associated with the patient can be put here.

As the need arises, patients can be found in OpenVPMS through these values.

enlightenedTip: In order to search for these items, be sure to click the "Search Identities" checkbox in the search window.

Referrals

Referrals provide a way to track where a patient was being seen previously, or where it will be seen in the future. The system allows specification of a single veterinarian stating whether it was referred from that doctor, or to that doctor.

Discounts

It's often the case that a particular patient will have a discount above and beyond what discounts the customer has. When a customer has a discount, it applies to all patients. When the patient has  adiscount applied, it applies only to that patient.

Medical Records

Complete

One of the most important areas in the system, the Medical Records section allows control over all the records and history regarding a patient. To get to this area, click on Patients->Medical Records.

Once in the medical records section, you will see a series of tabs. Each of these allows you to view different aspects of the patient's history. There are also some tabs that allow you to control things such as reminders, alerts, etc. All of this is described below.

Summary

The summary section shows the top-level medical information that doctor's may want to look at first. This is a series of notes, and other elements of the patient record that compose the whole medical history for the patient.

The main grouping of this list is a visit. All medical records in this view must be associated with a visit. Generally, the workflow will create a visit for you, but sometimes you may need to create one manually. In order to create new items, including a visit, click "New" at the bottom of the screen. You will then be able to select the type of item you would like to create. Here's a brief list of things you can create in this screen:

  • Attachment: This can be an attachment of any file to the record.
  • Form: Forms are generally printed, and then filled out manually.
  • Image: For attachement of any type of image, including animal photos, X-rays, et cetera.
  • Investigation: Used for outside processes, such as bloodwork, etc.
  • Letter: This is a document that would get printed out of the system and delivered to the customer.
  • Medication: This is a medication. It permits printing of labels, etc.
  • Note: This is where doctor's can add notes to the patient record.
  • Problem: For taking note of a particular problem of a patient.
  • Visit: The overall grouping item for all of the above.

Problems

It turns out that there is some structure underneath the overarching summary view above. The system is designed for doctors to create a "Problem" under their patient, and then associate notes directly with this problem. This is further useful because we can then track when the problems resolve. Once they resolve, they can be filtered and not shown any longer. This keeps what's being shown to the doctor relevant. It also makes sure the notes shown are directly linked to a problem. There can be no confusion regarding notes and medications, and what they are talknig about or designed to treat.

enlightenedTip: When you create a problem, and associate notes to it, they will all automatically show up in the summary view. The same goes for many documents that you can access from other places in the system.

To create a problem, click "New" and fill in the information. You can add notes and/or medication at the same time.

Reminders/Alerts

While these two things are grouped together, they have very diffirent functions in the system. They're discussed separately below.

Alerts

Alerts are for flagging things that other staff at the practice might want to know about a patient, as soon as the patient walks in the door. Alerts can be configured (by your administrator) to have any text associated with them that you want, and the same goes for color. When you add an alert, it will show up in the current patient information area.

The screenshot to the right shows the alert "Aggression", which may or may not be setup on your system. Also note that it's color coded in red making it stand out. As soon as someone clicks on this client, presumably at check-in time, they will be able to see the alert. This will help keep the staff aware of any special precautions that need to be taken with this patient.

In orde to create a new alert click "New" and then select "Alert" from within the Reminders/Alerts tab.

Reminders

Reminders are useful for inside the practice, and for generating continued business from outside the practice. The general purpose of a reminder is to make sure that customers and doctors are aware of when a patient is due for a certain procedure, checkup, test, or any other thing.

Internal to the system, there are three values that are associated with a reminder. Your system administrator can help you set these values for each reminder.

  • Reminder Interval: When added automatically, when should the next due date be?
  • Sensitivity Interval: How long before (and after) the reminder, should we note it as relevant.
  • Cancellation Interval: How long after the reminder, should we begin ignoring it?

Note the bell symbol in the picture above. That bell means that there are reminders for that patient. If you were to click the bell, you would see a list of reminders, color coded according to the above. They are coded as follows:

  • Green: Not due yet.
  • Yellow: Within the sensitivity interval above.
  • Red: Late.

Printing reminders can be accomplished through the Reporting section. More discussion of this can be found there.

To create a new reminder, click "New", then "Reminder", and fill in all the fields. If there's a particular reminder that you don't see there, your system administrator can add a new reminder for you.

There are many different kinds of reminders, and they behave differently (depending on your configuration)! Some reminders can be set to be added to the patient record automatically when you sell a particular item. For instance, when you bill a customer for an annual examination, you can configure the system to automatically create a reminder for the next annual examination. Not only will the system create a new one, but it will mark the current one as completed.

We won't dive any deeper into this subject because a lot of it ends up being hidden from the users, and hence is much more relevant to the administrator. For now, just understand that some reminders get created automatically, and some don't. Work with your administrator to configure how they all behave.

Documents

The documents area is a way to see all documents associated with the current patient. Here you can create new documents, edit existing documents, and print any document.

Charges

The charges area shows all the invoice items that are associated with the current patient. This can be useful if you'd like to see what this patient has been charged for in the past. 

enlightenedTip: The charges list displays charges and credits. To see just invoices or just credit, click on the "Types" pull-down and select one or the other.

Suppliers

Complete

The supplies section allows you to edit supplier information. This is a contact list that is not significantly different from the customer list. The difference is that these vendor data relate back to product and cost. The detailed usage of this is currently outside the scope of this basic user handbook.

Workflow

Complete

Practice management systems are great for managing all the data associated with the practice. Is it turns out, most practices have similar practices that can be generalized into shortcuts to help get work done. I think you'll agree that you couldn't imagine not having these shortcuts once you get used to them.

This section discusses the data that is related to, and the primary work flow functions. That is, how do we bring patients into the clinic, perform work, and then release them from the clinic. Workflow is all about things that change from minute-to-minute, not day-to-day... and all of those things are housed in this section.

The 3 C's

Complete

Workflow refers to all of the functionality within the workflow section of OpenVPMS. You'll find however, that because workflow is so entangled with the rest of the system (that's the point), that you'll see elements of it throughout the system. Those parts that you'll see most frequently, and the three most important elements of workflow are these.

Furthermore, as you have seen from all the other sections, there is a number of steps that you need to take to make sure that all the data are updated in the right places throughout the system. Workflow automates that process.

 

Usage Notes

There are several things that will assist you in using the "3 C's". Please pay very close attention to these.

  • Each action (3 C's) kicks off a series of other actions throughout the system. This is a shortcut, on a grand scale.
  • If ever clicking the "Cancel" during a workflow operation, it will cancel the workflow, not just that step. This seems to be particularly befuddling to new users. The simple solution is to never click cancel, and only click "Ok" or "Skip".

Check-In

Check-in refers to anytime a patient enters the practice in such a way that we want to monitor its status. (Almost all of the time.) The idea here is very similar if you were to go to the hospital yourself. The check-in process gears up the practice to accept a patient into the facility. Here is a list of all the things that occur during a check-in:

  • Patient forms are printed
  • Work-list task is created (and linked to appointment if checked-in from appointment)
  • A visit is created in the medical records
  • Medical records can be edited
  • Weight entry occurs (optional)
  • Appointment status is updated (to waiting)

enlightenedTip: If you don't use the workflow, you'll be stuck doing all this manually!

The check-in button is most prominently found in the patient information, and on the appointment schedule.

Consult

The consult activity is much simpler than the others. This generally allows one to:

  • Edit the medical records
  • Edit the invoice

Often, a doctor will be using this functionality. When they're complete, they can click "Complete". This will have the effect of updating the associated task or appointment to the "Billed" status -- meaning read to check-out.

Check-out

Check-out represents the departure of a patient. The Check-out workflow does the following (not in this order):

  • Completes the worklist task.
  • Completes the appointment.
  • Prints all associated documents (including ones added through consultation).
  • Allows for editing and finalization of the invoice (for last minute items).
  • Payments can be made

Statuses

There are several status in the system that should be used as cues to move patients from one step to the next. We're only considering the status as shown on the schedule for now. There is an associated set of statuses for task lists that may be added in a later version of this document. Here's a brief list of them, and how to bring them about:

Appointment Status

  • Pending - Default status when appointment created.
  • Waiting - Check-in from the schedule.
  • In-Progress - Consult activity from schedule (or Worklist)
  • Billed - Consult activity with pressing "Complete" at end of consult workflow.
  • Admitted - Set manually in the schedule.
  • Cancelled - Set manually in the schedule.
  • Complete - Check-out activity from schedule (or Worklist).

Notice how the more important statuses are a direct result of a workflow activity.

Scheduling

Complete

The scheduler is the mechanism in the system to plan out appointments, surgeries, boarding, or any other type of time slots that are planned in your practice. Here's that it looks like.

Elements

In the screenshot shown above, the practice has three separate schedules that they choose to show all on one screen. Your practice might have a very different setup, but the basics set out in this chapter will be the same for usage of the scheduling facility.

The top portion of the screen has various controls for showing different days, different time areas, and even entirely different schedules (technically views, please refer to administration documentation). Here's a brief overview of what each element does.

  • View: Allows you to select different schedules or sets of schedules.
  • Date: Allows you to choose which date is shown, advance or rewind by day or by week, and snap to today (the square button).
  • Schedule: When there are multiple schedules shown at the same time, this will allow you to show just one of them. Note that some formatting and extra information will be lost when you do this.
  • Highlight: There are several different ways to highlight the data. If you have many doctors in at once, you may want to highlight based on clinician. The highlight shown above is based on status -- meaning that Completed, In Progress, and Pending (for example) will all be different colors.
  • Clinician: This allows you to sort for a specific doctor's appointments.
  • Time: Often, the whole schedule won't fit on the screen. This allows you to narrow the time period of interest down to AM, PM, evening, etc.

enlightenedTip: Many of the features of OpenVPMS are configurable. Your screen may not look like this at all. Work with your administrator to setup what calendars and timeslots you'd like to see.

The remaining elements are the core part of the schedule. The time of the appointment is shown to the left and right, and the name of the schedules are listed across the top.

Creating an Appointment

In order to create an appointment, click the "New" button. You'll see this dialog come up.

Creating the appointment can be done by filling out all these fields. Note that the system will automacally populate some fields if they have already been selected in the system.

Here is a brief description of each field:

  • Customer: The customer whose appointment it is.
  • Patient: The patient whose appointment it is.
  • Appointment Type: The system can allow for default scheduling based on appointment type. You can have 15 minute, 30 minute, or any other length of appointment associated with this field. You can also override the times using Start and End Time.
  • Start Time, End Time: Self explanatory, the start and end times of the appointment.
  • Reason: This useful field is shown on the schedule to indicate the basic reason for the appointment.
  • Notes: This is for further details that might not be covered by the Reason field. These notes will appear in a baloon window when the mouse hovers over the appointment.
  • Clinician: Who the patient is coming to see.
  • Status: The current status of the appointment.

enlightenedTip: Multiple appointments can occupy the same time period on the schedule. Have your administrator turn this feature on. You'll notice that the schedule will create an extra column to accomodate.

In order to complete the appointment, ensure each of these fields is correct, and click "Ok".

enlightened"Ok" and "Apply" both save the work. The only difference is that "Ok" will close the window after it saves the work.

Editing an Appointment

To edit an appointment, you'll be dealing with exactly the same screen as when you add an appointment. The only difference is that you first need to click on the appointment.

You can tell when an appointment is selected by one of two ways:

  • It will be highlighted (this works only in the multiple schedules view, not the single schedule view)
  • You can also see which appointment is selected by confirming the customer and patient information on the side of the screen. When an appointment is selected, the current customer information area changes to the information for that appointment.

Next, to bring up the edit window, click on "Edit". You can now change the fields you'd like to change in the same way as when adding an appointment.

Other Functions

You'll notice there are several other functions available on this screen. Some of these (Consult and Checkout) are discussed extensively elsewhere (Workflow). Here's a brief description of each:

  • Delete: Deletes the currently selected appointment.
  • Print: For printing an appointment (appointments?).
  • Consult: Workflow function for medical notes and invoicing.
  • Checkout: Workflow function for invoicing and payment.
  • OTC: Over the counter.

The only one worth discussing further here is OTC. The OTC functionality allows for reception to quickly make sales that have nothing to do with appointments. A good general policy is to tie as many sales to patients as possible, as a matter of record keeping. However, there are always those times that someone who may not even have any patients would like to purchase something. This button is a shortcut to a screen that permits this type of sale. It's place here so that you don't need to leave the schedule at the reception area.

Work Lists

Complete

Work lists are basically lists of tasks that are queued up for completion within the practice. To get to the this section, click "Workflow" then "Work Lists". You'll see the following when you get there.

This header section of the worklists area shows that worklist tasks can be filtered and highlighted in numerous ways, similar to the schedule view. Here's a brief list of how you can configure your view.

  • View: The system will have been configured with 1 or more views into the worklists. Some have multiple worklists showing at once, and some show only one, or a subset of all worklists.
  • Date: This works identically to how the schedule date controller works.
  • Work List: Which worklist to view. This can filter the current view.
  • Clinician: Show only tasks for a particular clinician.
  • Highlight: Change the view highlighting to be based on Status, Event Type, or Clinician.
  • Status: Show all tasks, just incomplete tasks, or just complete tasks.

Tasks in the worklists can be used for almost any type of task in OpenVPMS. There is however, one type of task that is automatically part of the system, and part of the overall workflow -- the Consultation.

Consultations

A consultation is the primary activity as related to an appointment. That is, a consultation gets linked to an appointment. When checking-in a patient from the schedule, this task gets automatically created.

The benefit here is that doctor's, theoretically, have no need to look at the schedule. They can merrily go from consultation to consultation, or surgery to surgery without worrying about scheduling and reception. Of course, many doctor's do care to look at the appointment schedule as well. And so, the "Consult" workflow action has been placed in both of these places.

enlightenedTip: Any changes to a patient appointment or task, affected through the workflow or otherwise, will result in changes to the task and the appointment.

It's important to realize that the task is completely separate (although linked) from the appointment. As such, it's important to manage both.

Roll Call

One of the most important uses of tasks is that they hold the information of when a patient was in the practice. This is valuable information, and should be preserved as well as possible. Many pratices, therefore, have setup separate task lists just to track hospitalization. This work list can therefore become a list of all hospitalized patients -- very useful at a glance.

Other uses can include medical observation (or boarding), general appointment scheduling, phone callback scheduling, etc. We won't dictate here what the optimal configuration for your practice is.

You can also transfer patients from worklist to worklist. Say for instance you had a worklist called "Consultation List" and had another worklist called "Hospitalized List". It's often the case that during a consultation, it's decided to hospitalize a patient. In this situation, you would "Transfer" the patient from the Consultation List to the Hosptilazed List.

enlightenedTip: When you do the "Check-in" workflow action, you can select what task list to create a task on.

Tasks in the Workflow

The tasks that make up the worklist are an integral part of the workflow. When you click on a task, you'll notice that the associated (3 C's) buttons appear at the bottom of the screen. You can interact with the task or the appointment to achieve the same result.

Messaging

Complete

This section can be used for intraoffice communication. You can get to this section by clicking "Workflow" then "Messaging".

When you first get to the messaging area, you will see a list of messages to you, and their status.

To create a new message click "New" at the bottom of the screen. You will then see the screen to the right appear to create a new message. Fill out all the fields and then click "Ok".

The advantage of creating messages in this way is that the message can be directly linked back to the customer or patient within the system. It also reduces clutter throughout the practice. (Remember stick notes?)

enlightenedTip: A good habit is to check the messages section every day to see what new messages have been left for you!

Note that this mechanism is not recommended for things like patient callbacks. Messages are directed at a single individual. If work is to be shared amoung many individuals, it may make more sense to use the task list.

Investigations

Complete

Can someone else fill this in?... we're not using this fucntionality right now.

Products

Complete

Stubbing out for now

Product Types

Complete

There are several different types of product in OpenVPMS. The reason behind this is that different classes of product need to behave differently... and so they do!

One of the basic functions of the system is creating and maintaining products. It's unlikely that everyone in the practice will have this responsibility, but for those who do -- this section is crucial.

Products are broken into three core categories in the system:

  • Merchandise
  • Services
  • Medications

You'll notice that there are some other "types" available as well. We'll discuss those further below. The system uses this type to decide what to do with various products. Some need entries into the medical records, some need treatment in inventory, etc. It is possible that when creating an item, it may not fall into the category that you found most intuitive.

Merchandise

Merchandise is something physical. It may be taxed, or may not be taxed -- depending on your tax rules. The key thing to note about merchandise is that inventory is relevant, where it is not relevant for services (we have an infinite supply of service).

Generally, merchandise will have unit pricing -- that is, it's price is multiplied by how many the customer has purchased. Doggie biscuits are a great example of this.

Services

Services are products that are sold without inventory treatment. There is no supplier for these, other than people's time. These products will often have fixed pricing -- just a single price. A surgery is a great example of this product class.

Medications

Medications look similar to merchandise in that they can count inventory, however there is an impact by medications on the medical records. Any time a medication is sold, the user is able to attach usage notes, print a label, and insert that history into the patient's record.

Product Details

Complete

There is a large number of configuration settings for each product. Products are a very integral part of the system, and therefore can have influence on many other parts of the system. Setting up a product requires configuration of all these interactions that a product might make in the course of its sale. This section describes all these configurations. But first, let's have a look at the screen we'll be working in.

To get to this screen, choose a product, and click "Edit". Alternatively, you can create a new product, or copy an existing product to get to the same place. As you can see, the tabs are numerous. Below is a description of the information in each tab.

enlightenedCaveat: To properly configure this, please work with your administrator. Adding products is not a trivial process because of the impact they have throughout the system.

Prices

Prices come in three flavors in OpenVPMS: Fixed, Unit, and Markup. These are:

  • Fixed: Regardless of quantity, will always be the same. This is useful for services, or anything that won't be counted at checkout.
  • Unit: Just the opposite of of fixed, this price will be multiplied by the quantity when creating an invoice.
  • Markup: This takes the cost of an item, and marks it up by a percentage.

Linked

This allows linkind to a price template. This is a method by which you can associate many products with a similar template to work from. This can be useful, for instance, to deal with dispensing fees.

Type

Product types can be arbitrarily created by your administrator. These product types are distinct from product classes (Merchandise, Service, Medication). Instead, these can be used to group products according to discounts and tax types for instance.

Investigation Type

This permits linking of an investigation to the product. When the product is added to an invoice, an investigation will automatically begin. This information will be attached to the patient record as a result.

Suppliers

This allows you to specify where you can obtain the item (if it is an item). This is the mechanism by which cost is specified in the system. The system also permits calculation of lead-time, and multiple suppliers for a single item.

Stock Location

This area lets you specify where the item is stored, and how it is tracked. It will trigger re-orders based on the critical quantity.

Reminders

When products are sold, reminders can automatically be generated. Note that the system does not support automatic completion of all reminders, but if it is configured to automatically generate a reminder based on a product sale, it will automatically complete all reminders that are in the same group as the one generated.

Documents

What documents are associated with the sale of this product?

Discounts

What discoutns are specific to this product? Discounting occurs when the discounts on the product, whether specified here, or through the product type match a discount in the customer account.

Species

Products can be limited to certain species. This helps ensure we don't sell fish food to a dog. 

Updates

Certain products create changes to the status of the patient. This is controlled in this section. The updates available are:

  • Patient Desexed: When selling the product, possibly a spay or neuter, the patient will be marked as desexed.
  • Patient Deceased: When selling the product, presumably a euthanasia, the patient will be marked as deceased.

Classifications

Can someone fill in this section?

Identities

Can someone fill in this section?

Equivalents

If you stock more than one of a similar type of product, this allows you to specify that relationship. When one product is a substitute for another, then it should be marked as such here.

Taxes

Some products are taxed differently. The system supports specification of different types of taxes. Here, you can specify which taxes are applicable to the product.

Reports

Complete

The reporting section of OpenVPMS is possible the most comprehensive section that you'll deal with day-to-day. This area contains many types of reports. Hopefully the mystery can be mitigated in this section.

Till Balancing

Complete

Till balancing is how we keep track of money in OpenVPMS. At the end of the day, many practices will "close the till". This is the tool to accomplish that. First let's look at the display.

This screen allows you to search for balances using date criteria, as well as status. The status is either "Cleared" or "Uncleared" (or both).

When a balance is "Cleared", that money has been reconciled with what's actually in the till. The till comprises actual cash on hand, checks, and records of online transactions such as credit cards, EFT, or any other transfer types you have setup (such as debit). To clear the till, is to move money out of the operational part of the business. These funds are no longer available for refunds, or any other usage except depositing. This is covered in the deposit section.

Upon clicking on one of the balances that your seach yields, you will see all the payments associated with that balance in the area below.

Closing the Till

We presume that most practices will want to check the till balance daily. So, this makes a daily procedure, usually at the end of the day.

In order to close the till, first select the balance you want to clear. There should be only one that is unbalanced. Next, print (or preview) the current balance by using the "Print" action button at the bottom of the screen.

The goal, is to ensure that all the cash on hand, and receipts from electronic transactions match what OpenVPMS believes happened for the day. The printout will show totals for each transaction type. The sums of cash, cheques, credit on hand must match the printout. If it does not, then an adjustment must be made to document the discrepancy. When this happens, please work with your financial controller to reconcile the situation.

Once the balance has been confirmed, you can click the "Clear" action button at the bottom of the screen. This button will prompt you for a new "Float" balance. Type in the new amount of cash that has been left in the till. This is the balance that the practice will begin with the next day.

Once this is complete, remit all payments to whatever location has been established for this, and you're done!

Adjusting the Balance

Another button at the bottom of the screen is the "Adjust" action button. This button can be used to make an adjustment. If some money is not found, or there is extra money, this can help you balance the till. This functionality is considered advanced, and depending on policy, may be unused except for by your financial controller.

Deposits

Complete

The deposits section is for tracking bank deposits. This functionality outside the scope of this handbook at this time.

Debtors

Complete

Debtors are people that owe the practice money. This reporting section allows you to track who owes the practice money, and several other pieces of information to understand debt status.

More than just status, this section also allows you to take action against the debt, and file petitions for reclamation through whatever format you'd like. The default in the system is to send an account statement, but you can be more or less aggressive simply by changing reports (with the help of your administrator).

Let's take a look at the screen to understand a little more. To get to this section, click on "Reporting" then "Debtors".

The interface has several controls. Here's a brief summary of each:

  • Customer Account Type: The type of customer you'd like to filter.
  • Statement Date: The "as-of" date that you're interested in. This allows you to look and see who your debtors were at a particular point in the past.
  • Balances: The type of balances you're searching for. Discussed below.
  • Overdue From,To: How many days from the statement date are you interested in?
  • Customer From,To: Searches for particular customer names.
  • Exclude Credit: Shows only balances owed to the practice, not the other way around.

Searching

It's probably that you don't care about all your debtors at any given moment in time. The search functionality ("Find" button) lets you whiddle down the results until you find exactly the set of customers that you're interested in.

There are two types of balances that appear in the search: current and overdue. The current balances come from any invoice that is "Completed", but not "Finalized". All overdue balances have been finalized. You'll notice some overlap between the current balances here, and the works in progress report section. If, for example, we wanted to send notice to all customers that are overdue, we would want to filter out the current balances by selecting "Overdue" in the "Balances" selector.

The next filter we'll discuss is the "Overdue From,To" filter. Here, you can filter for balances based on their age. If, for instance we'd like to get all balances that are more than 90 days old, we might set the overdue "from" date to 90. If we wanted to find only balances overdue from 60-90 days of age, we could put in from=60 and to=90. Note that the balance type must be set to "Overdue" for this to work.

"Customer From,To" allows you to filter the list by customer names. If, for instance you wanted to process just names starting from A-F, you could simply put "A" in the from field and "G" in the to field. Note: it goes up until the last letter but doesn't include it.

Actions

Once you've found the set of debtors that you're interested, you can take action. The buttons at the bottom of the screen allow you to perform several actions. Here's a brief summary:

  • Send All: Prints out the related report (default is Account Statement) for all customers in the list.
  • Print: Prints a single related report for the selected customer.
  • Report: Prints a report about all the customers in the list.
  • End Period: Converts all completed invoices to finalized invoices.

Work in Progress

Complete

The Work in Progress area is a reporting area that shows all invoices that are "In Progress" or "Completed", but not finalized. We won't go deeply into this because it's rather straight forward. This area is mostly for house keeping.

Many practices may have a policy to prepare invoices ahead of when they're needed. A prime example of when this is benificial is when customers might be coming to pick-up medications or other items. It's useful to create those invoices ahead of time because it will facilitate a smooth checkout later. However, sometimes the customer never shows up. There is where you can see the progress of all those types of situtaions.

It is recommended that once works in progress reach a certain age, they are dispatched to maintain data cleanliness and to ensure that piles of unpurchased inventory are not accumulating anywhere in the practice.

Reminders

Complete

Reminders are a critical part of the business. They help make sure that you're effectively leveraging your customer base, and making sure their pets stay healthy. This reporting area helps you get from the reminders in the system, to actual print-outs (or email reminders) to communicate with your customers.

Here's a look at the basic screen:

This screen allows you to search for reminders, and then print them. The search functionality is similar to others in the system. You can select a start and end date (and a type of reminder if you wish), and click "Find" to generate a list.

Once you've generated the list, you'll notice several pieces of information about each reminder that's found. These are:

  • Due Date: As entered in the system through the medical records.
  • Next Due: Can someone offer a description of this field?
  • Reminder Type: As configured in the system.
  • Customer: The customer name.
  • Patient: The patient name.
  • Reminders Sent: How many reminders have been sent for the item due.
  • Last Sent: The date this item was last sent.
  • Error: Any error that has occured in generation of this reminder.
  • Action: The next action to take when clicking "Send All".

Reminders are one of the more complex aspects of OpenVPMS. The implementation is extremely flexible, but as a result has some learning associated with it. We won't delve into the details of how to configure reminders here. This is a task for your system administrator and/or implementor.

Generating Reminders

To generate reminders, click "Send All" at the bottom of the screen. This will begin a process to print out all the reminders that are in the current search results.

Once they have been printed, they will be marked as sent in the system, and will not print again. If you have the need to reprint, you should do it immediately while the printing process is still active. Before closing the print window, the system will ask if you'd like to reprint. This is useful if there was some error with the printer, or otherwise.

If you'd like to generate a single reminder, you can use the "Print" button at the bottom of the screen. This won't mark the reminder is printed, but allows you to generate an individual reminder ad-hoc. Note however that this functionality does not work with grouped reminders.

Other Reports

Complete

The general reports section under "Reporting" is used for all other reports that you might want to run in the system. These reports are customizable and as such will be different for most implementations of OpenVPMS.

To run a report, click on it and then click "Run".

You'll notice that some reports will ask you for more information. When this happens, type in the information and click "Ok" to print the report.

enlightenedTip: Anytime you see "Preview", you can view the report without printing it.

In the process of running the report, it's also possible to export the data. This is useful if you'd like to perform some other calculation on the data, or send the information to someone in a different format.

Don't forget to get involved in the OpenVPMS community. There are many reports that users have created and have contributed back to the community that don't ship with OpenVPMS. Working with your administrator, you can load any of these community created reports.

Further Information

Complete

There is a wealth of other information available regarding OpenVPMS.

On the website you can find documention including:

  • Implementation Documentation
  • Frequently Asked Questions
  • Demonstration System
  • Developer Documentation

Aside from available documentation, there is a host of information in the searchable forums. If you have any questions, you might find an answer to it there. If you don't find your answer, you can ask the community.

If you would like to contribute to this documentation, please don't hesitate. Having read through to the end, you may find it lacking in certain areas. Don't stand for it! We'd love for you to contribute your opinion, or even better yet -- improved documentation.

Document merging with Open Office Writer

Complete
OpenVPMS utilises OpenOffice Writer to produce client and patient forms and letters. 
 
Within these open office documents we can utilise field names that get automatically replaced by OpenVPMS with the information associated with the form or letter being produced. 
 
As OpenVPMS is based on a archetyping principle which allows the data being stored to be readily modified, we had to define a field naming approach that catered for this as well. 
 
The following tables outlines  the currently defined fields that can be included in different document types:
 
Field
Document Type(s)
Description
Applicable to All Documents
 
Applicable to All Documents 
startTime
All
The date associated with the document in the current locale format.  i.e dd/MM/yyyy 
description
All
The document description 
[party:getPartyFullName(party:getPractice())]
All
Returns the Full Name of the Practice 
[party:getPracticeAddress()]
All
Returns a single line version of the Practice address 
[party:getBillingAddress(party:getPractice())]
All
Returns the formatted Billing address of the Practice 
[party:getCorrespondenceAddress(party:getPractice())]
All
Returns the formatted Correspondence address of the Practice
[party:getWorkTelephone(party:getPractice())]
All
Returns the Practice work telephone. 
[party:getFaxNumber(party:getPractice())]
All
Returns the Practice fax number 
[party:getEmailAddress(party:getPractice())]
All
Returns the Practice Email Address 
Applicable to All Customer Documents
 
Applicable to All Customer Documents
customer.entity.id
Customer
The customer ID
customer.entity.title
Customer
The customer Title 
customer.entity.initials
Customer
The customer Initials 
customer.entity.name
Customer
The customer Name in format <Lastname>,<FirstName> or <name> for organisations. 
[party:getPartyFullName(openvpms:get(.,'customer.entity'))]
Customer
The customer Full Name in format <Title> <FirstName> <Lastname> or just name if an organisation. 
customer.entity.firstName
Customer
The customer First Name 
customer.entity.lastname
Customer
The customer Last Name 
[party:getBillingAddress(.)]
Customer
Gets the first location contact for the customer which has a Billing Purpose.  If no location with this purpose then gets first preferred location contact.  If no preferred location gets first location contact found. 
[party:getCorrespondenceAddress(.)]
Customer
Gets the first location contact for the customer which has a Correspondence Purpose.  If no location with this purpose then gets first preferred location contact.  If no preferred location gets first location contact found.
customer.entity.description
Customer
The customer Preferred Address and Home Phone Number in the format
<street>
<city> <state> <postcode> - <home phone number>
[party:getEmailAddress(.)]
Customer
The customer email address
[party:getHomeTelephone(.)]
Customer
Gets the first telephone contact with a  purpose of Home.  If no telephone contact with Home gets first preferred telephone contact.  If no preferred get first telephone number found. 
[party:getWorkTelephone(.)]
Customer
Gets the first telephone contact with a  purpose of Work.  If no telephone contact with Work gets first preferred telephone contact.  If no preferred get first telephone number found.
[party:getMobileTelephone(.)]
Customer
Gets the first telephone contact with a purpose of Mobile.
[party:getFaxNumber(openvpms:get(.,'customer.entity'))]
Customer
 

Gets the first fax number found for the customer. 
[party:getAccountBalance(.)]
Customer
 

Returns the current account balance for the customer 
Applicable to All Patient Documents
 
Applicable to All Patient Documents
[openvpms:get(party:getPatientOwner(.),'id')]
Patient
The customer ID
[openvpms:get(party:getPatientOwner(.),'title')]
Patient
The customer Title
[openvpms:get(party:getPatientOwner(.),'initials')]
Patient
The customer Initials
[openvpms:get(party:getPatientOwner(.),'name')]
Patient
The customer Name in format <Lastname>,<FirstName> or <name> for organisations. 
[party:getPartyFullName(party:getPatientOwner(.))]
Patient
The customer Full Name in format <Title> <FirstName> <Lastname> or just name if an organisation for the owner of the Patient associated with the document as at the date of the document. 
[openvpms:get(party:getPatientOwner(.),'firstName')]
Patient
The customer First Name
[openvpms:get(party:getPatientOwner(.),'lastName')]
Patient
The customer Last Name
[party:getBillingAddress(party:getPatientOwner(.))]
Patient
Gets the first location contact for the customer which has a Billing Purpose.  If no location with this purpose then gets first preferred location contact.  If no preferred location gets first location contact found.
[party:getCorrespondenceAddress(party:getPatientOwner(.))]
Patient
Gets the first location contact for the customer which has a Correspondence Purpose.  If no location with this purpose then gets first preferred location contact.  If no preferred location gets first location contact found.
[openvpms:get(party:getPatientOwner(.),'description')]
Patient
The customer Preferred Address and Home Phone Number in the format
<street>
<city> <state> <postcode> - <home phone number>
[party:getEmailAddress(party:getPatientOwner(.))]
Patient
The customer email address
[party:getHomeTelephone(party:getPatientOwner(.))]
Patient
Gets the first telephone contact with a  purpose of Home.  If no telephone contact with Home gets first preferred telephone contact.  If no preferred get first telephone number found. 
[party:getWorkTelephone(party:getPatientOwner(.))]
Patient
Gets the first telephone contact with a  purpose of Work.  If no telephone contact with Work gets first preferred telephone contact.  If no preferred get first telephone number found.
[party:getMobileTelephone(party:getPatientOwner(.))]
Patient
Gets the first telephone contact with a purpose of Mobile.
[party:getFaxNumber(party:getPatientOwner(.))]
Patient
Gets the first fax number found for the customer.
[party:getAccountBalance(party:getPatientOwner(.))]
Patient
Returns the current account balance for the customer who is the current owner of the current patient  
patient.entity.id
Patient
The patient's ID 
patient.entity.name
Patient
The patient's name 
patient.entity.species
Patient
The patient's species 
patient.entity.breed
Patient
The patient's breed 
patient.entity.sex
Patient
The patient's sex 
[party:getPatientDesexStatus(.)]
Patient
Returns status as "Entire" or "Desexed" 
[party:getPatientWeight(.)]
Patient
The patient's weight
patient.entity.colour
Patient
The patient's colour 
patient.entity.dateOfBirth
Patient
The patient's date of birth 
patient.entity.age
Patient
The patient's age including words years, months and weeks as appropriate. 
[party:getPatientMicrochip(.)]
Patient
The last microchip id for the patient. 
patient.entity.description
Patient
Returns string of <sex> <colour> <breed> (Microchip: <microchip>)
eg "Male Black Kelpie (Microchip: 956000001111234)".
patient.entity.customFields.target.customFieldName Patient returns the name of custom fields.(You need to change "customFieldName" to match the name of the node that you want)
clinician.entity.name
Patient
The name of the clinician associated with the document as derived from Administration | Users | Pick User | Name.
clinician.entity.description
Patient
The description of the clinician associated with the document as derived from Administration | Users | Pick user | Description.
id
Patient
Investigation Request id number.
product.entity.name
All Patient Forms
The name of the product associated with the form. 
product.entity.printedName
All Patient Forms
the printed name of the product associated with the form. 
[openvpms:get(., 'invoiceItem.source.batch.entity.name')]
Patient
the Batch Number associated with a product. Note that for its use in a vaccination document the template must be attached to the vaccination product so that the certificate is generated when the vaccination is invoiced. This links the certificate to the invoice item, enabling the batch number to be located. 
[openvpms:get(., 'invoiceItem.source.batch.entity.product.activeEndTime')]
Patient
the Expiry Date of the batch associated with a product. Note that for its use in a vaccination document the template must be attached to the vaccination product so that the certificate is generated when the vaccination is invoiced. This links the certificate to the invoice item, enabling the batch expiry date to be located. 
[openvpms:get(., 'invoiceItem.source.batch.entity.manufacturer.target.name')]
Patient
the Manufacturer of the product associated with the batch number. Note that for its use in a vaccination document the template must be attached to the vaccination product so that the certificate is generated when the vaccination is invoiced. This links the certificate to the invoice item, enabling the batch manufacturer to be located. 
[openvpms:get(party:getPatientReferralVet(.),'firstName')]
Patient
Returns the first Name of the  Referring Vet associated with the Patient.  The referring vet is selected based on the referral information for the patient and the date of the document. 
[openvpms:get(party:getPatientReferralVet(.),'lastName')]
Patient
Returns the first Name of the  Referring Vet associated with the Patient.  The referring vet is selected based on the referral information for the patient and the date of the document.
[openvpms:get(party:getPatientReferralVetPractice(.),'name')]
Patient
Returns the name of the Referring Practice associated with the current Referring Vet for the patient.  The referring practice is selected based on the dated associations with the referring vet and the document date. 
[party:getFaxNumber(party:getPatientReferralVetPractice(.))]
Patient
Returns the fax number of the referring practice.
[party:getFaxNumber(party:getPatientReferralVetPractice(.))]
Patient
Returns the work telephone number for the referring practice
[party:getBilling Address(party:getPatientReferralVetPractice(.))]
Patient
Returns the formatted Billing Address for the Referring Practice. 
[party:getCorrespondence Address(party:getPatientReferralVetPractice(.))]
Patient
Returns the formatted Correspondence address for the Referring Practice 

Searching

This chapter discusses the various ways to retrieve and input information. Getting familiar with the various ways to do this in OpenVPMS will help you navigate the system effectively. It turns out that finding and entering information rely heavily on one thing in OpenVPMS: searching.

There are numerous times that you might want to find information in OpenVPMS. Let's start with the simple case of looking up a user. Keep in mind, that this same strategy can be used for looking up prouducts, patients, and almost every other type of information you might be looking for.

Here's the select box in the patients section. You can get to this by clicking Patients->Select.

There are several elements here. Let's discuss each one.

First, you'll notice the search box. This is where you can enter the actual text that you're looking for.

Second, there is a series of tick boxes. Each tick box is to the right of the item it represents. Note that in the screenshot, the "All Patients" tick box is checked. This means that this search will search throughout all of the patients in the database. This is meaningful because the default in the system is to search through all the patients for the current customer. If no customer is selected, it will look through all the patients however.

Next, we see the Find button. You will see this button throughout the system. It's very important. Sometimes, it means that you'll initiate a search, and sometimes it will re-run an existing search that happens to be on the screen.

enlightenedTip: Get in the habbit of clicking the find button when you see it on the screen. This will refresh the information that is displayed. 

At the bottom of the dialog box, you'll see the Cancel and New buttons. The Cancel button will close the window and stop the current search. The New button is there for convenience. If you happen to be looking for something that isn't in the system yet, you can click this to add that item.

Imagine that we're creating an appointment for a new patient. Maybe we're not sure that it's a new patient, so we search. Having not found the patient we're looking for, we can click New right from that screen to add the patient to the database. This is a convience feature because there is another (longer) way to add a patient that is discussed in the Patient section.

After clicking Find, you will see a list of all results in the system that match the criteria you've specified.

Wildcards

What if we only know part of the thing we're looking for? This could make it difficult to find a particular item. Not to worry, OpenVPMS has a mechanism for searching for just part of a string. In order to do this, we use the wildcard character "%". Take the following example:

In this example, we were sure that our patient was "something" Vader, but couldn't remember the first part. To search for "something", simply put a "%" in the search string, as shown in the screenshot. Note that it has returned Darth Vader as a result. And before you ask, yes, this cat is actually named Darth Vader.

It also turns out that there is an implied "%" at the end of every search string. That means that these two search strings are identical: "%Vader" and "%Vader%". This again is for convenience. Generally, you would only need to type the first couple letters of the thing you're searching for and it will come up. If I'm looking for all the patients starting with "Fi", I can just enter "fi" and I'll get a list of "Fido", "Fidette", "Fidel" or any other "Fi%" name.

enlightenedTip: Searches are case insensitive. You don't need to capitalize anything.

enlightenedTip: You can hit enter instead of clicking find to run the search. Once you've found the item you're looking for, you can click on it to select it.

Lookups

There is another very frequent case that you'll be searching for information. These are lookups. There are many forms in the system that require you to enter information.

These fields are almost the same as the search dialog above, with one difference: searching is enabled right in the field you're trying to fill out. Let's take a look at an invoicing screen.

This screen is discussed in detail in the Customers section of the manual.

The point of interest right now, is the binocular symbols just to the right of the Patient, Product, and Clinician fields.

As you may have guessed, clicking on the binoculars brings up the search dialog from above. You should have no problem finding items by clicking on the binocular, and the following the instructions above.

However, that can be tedious if you're entering a lot of data. So, the designers of OpenVPMS have made it easier by adding a shortcut. You don't have to click on the binoculars if you already know a little bit about what you're looking for.

Let's say that the patient Tiny needs a Collar. In order to add that to the invoice, I can simply type in the first couple letters and then hit enter.

If there are more than one thing that start with the letters I'd typed in, then it will display a list of possible matches. The same thing applies for any field with binoculars next to it. Many fields you'll use over and over.

For instance, if each Doctor's name starts with a different letter, you can simply type the first letter and hit enter in the Clinician field shown here. Also, the same restrictions as in the default search dialog apply. So, searching for a patient in this field, will limit the search to patients of the current client. All of these restrictions are designed to make using the system more efficient. Give it a try and see!

enlightenedTip: There's no need to go to the search dialog if the binoculars are there to help you.

Various Other Pages

Complete

Adding New Users

Complete
  1. Login as a user with an administration role and select the Administer link in the primary menu
  2. Enter the users administration workspace but selecting users on the left hand side menu
  3. Click the new button at the bottom of the page to create a new user

You will now have a dialogue displayed like the one below:

New User dialogue window

The following is a guide to the fields that need to be entered:

id:

don't change this value, the software will automatically generate a user id

Login Name:

The name that the user will use to login to openvpms (case insensitive)

Password:

Used to access openvpms in combination with the login name

Full name:

The user's real name displayed when they are logged in in the upper right of the screen and also used in some templates

Colour:

Select a colour that will display when User information is used to highlight fields eg. in the appointment scheduler when highlight the clinician is used. Use the colour picker to select a colour or manually enter it's hex value.

User Level:

Used for restricting access to the reports. Users will only see reports that are the same or less than their user level. You can set the user level for each report in the report template.

Roles:

By default the only role that is available is Administration. If you want the user to be able to perform administration tasks you need to add this role. It will apply the following rules:

Other roles can be created with different authorities to change archetypes but this is an implementation task.

Category:

Categories are defined under administer > lookups > user types. Categories might include nurses, vets, reception staff, etc.

Business Continuity Plan Outline

Complete

 




I helped my daughter setup a practice about a year ago and had to learn how to setup and use OpenVPMS.  The system runs on a small Windows XP network which uses one of the desktop machines as the server – they only have three machines because it is a very small practice. As a precaution  I also installed OpenVPMS on two other machines but did not set it to start-up just in case they ever had any problems with the server machine. 

True to form the server started to automatically reboot on a busy working day so I had to switch across to another machine to get them up and running.  The practice is in the country so they were lucky I happened to be there on the day the problem occurred – so  I put together a set of notes on how they would switch to another server themselves if it happened again.  I have called the document a Business Continuity Plan and attempted to write it as a set of instructions for an end user to bring a server online from scratch!

I thought others might find it usefull as a starting document if they currently do not have any sort of plan in place if their primary server were to begin to play up?

I have posted a PDF version as a general example and a Word version which you could edit to suit your individual setup.

Create a New Appointment for a New Customer

Complete

This 'How To' demonstrates how to add a new customer whilst adding a new appointment simultaneously. This is a very common procedure in veterinary practice.

The customer search dialogue. The new customer button is at the bottom

  1.  Navigate to the scheduler

    Navigating to the scheduler

    For mouse users:

    1. Select Workflow from the main menu
    2. Select Scheduler from the Submenu (if it isn't already selected- it is when you first login)

    For Keyboard users:

    1. press ALT + W to select Workflow from the top menu
    2. Click on Scheduling from the left-side submenu (if it isn't already selected- it is when you first login)
    3. Press tab and then use the down arrow to choose the Main Appointment Schedule if required
  2. Making the appointment.

    • Ask the customer for which day/date they would like an appointment.

      To select the required day/date either:

      1. Highlight the date shown in the date text box and type the requested date, over the top of the existing date (you do not need to press delete)
      2. Click the down button (down button) next to the text box and select a date using the mouse.
      3. Use the forward and back buttons to skip to the required date
    • Ask the customer what time would they like the appointment.

      If the time slot is available highlight it with the mouse. ('New...' will appear in the slot)Highlighting the appointment slot

    Mouse Users

    Either Double click the appointment slot or Press the New button at the bottom of the Scheduler.

    Keyboard Users

    Press ALT + N to create a new appointment.

     

     

     

     

     

     

     

     

    You are now in the New Appointment Dialog:

    The New Appointment Dialog

  3. Making a new customer

    When the new appointment dialogue comes up the customer field is active. An existing client's surname can be entered here but if they are a new customer they will not be there yet. Either press the tab key to move to the binoculars or use the mouse to press the binoculars. You will now see the customer search dialogue which has a button to create a new client down the bottom. Either press it with the mouse or using the keyboard enter ALT N

    • Choose Customer (Person)
    • Add Customer details
      • Enter Last Name
      • Enter Title
      • Use keyboard arrows to scroll to correct title or press the 1st letter of title (eg. Type D for Doctor)
      • Enter First Name
  4. Adding a new animal.

    This procedure is essentially the same as that adding the new customer above

  5. Completing the New Appointment

    Now that the customer and patient have been entered you can go ahead and complete the remaining entries in the new appointment such as the appointment type and reason enter any notes. Finally Press the OK button or enter ALT O on the keyboard.  

Creating And Using Macros

Complete

Using Macros.

CONTENTS

1. Introduction


Macros are similar to "auto correct" function in Microsoft Word where a small string of text can be expanded into a sentence or even a paragraph of text. The text fields can contain up to 5000 characters.

For example, setting up a macro called "nadx" might expand to "Clinical examination of the chest and abdomen was normal". Once set up, anytime you write nadx in the note field and then press enter, it will expand to the text you have chosen (Clinical examination of the chest and abdomen was normal) in the expression field.

You can examine the list of default macros by clicking on Administration | Lookups select Macros from the Type drop-down box and click Find.

This is a very handy tool to decrease typing time in consultations; it can also be useful to create headings in the notes section of the consult page.

2. Creating Your Macro

Let's set up the example macro from the introduction above.

  1. Click on Administration | Lookups | New, scroll down and click on Macros
  2. You are now presented with a blank form.
     
    Code: this field contains the actual code you wish to use: the code must consist of alphanumeric characters and @ and _ - hence abc, A4b, a_B, a_4, _abc, @aBc, ab@c are all valid. Take care not to name the code an actual word as it will expand into text inappropriately, for example bid can transform into twice daily when you may just mean bid. Perhaps end the code in "x" to avoid this mishap. In the example above, we've called the code nadx. Alternatively you can use @ or _ as a prefix.

    Name: A descriptive name for your macro. You can search for your macro by this name in the search field at the top of the macro window.

    Expression: Enter the text you wish the code to expand to. You have a 5,000 character limit and can format with leading spaces and paragraphs. The text should be enclosed in double quotes. Actually you can use single quotes BUT there's a "gotcha" if you do: if you use the single quote as an apostrophe in the text (few if any keyboards have a separate apostrophe key), the macro will fail. For example, if you want to have text such as today's temperature, the single quote in today's will cause the macro to fail if the whole of the text is not enclosed in double-quotes.

    In the example below, we've used nadx, NAD, "Clinical examination of the chest and abdomen was normal" in the three fields.
    Click Ok when you're done.

3. Using Your Macro


When writing your notes, simply type in nadx and press Enter

Your macro will be expanded to the text you've specified.

As mentioned above, macros can insert up to 5,000 characters of text: here's an example for a cat spey:


Entering text and you can't remember the macro? Press Alt-m - this will display the available macros so you can click the one required.

4. Trouble-shooting

  1. The most common error is when you haven't enclosed the macro in quotes - it simply doesn't expand when you type in the macro code. Solution is obvious - make sure you have double-quotes at the beginning and end of the macro.
     
  2. If you created the macro in 1.4 or earlier and have now upgraded to 1.5.1 or higher, you will get the error shown below if you try to save after editing the macro.

    The upgrade from 1.4 to 1.5 added a new field in the Macro lookup display called Description. The problem arises because the upgrade procedure populates the description field with the code-name of the macro.

    As soon as you try to save the macro you are editing, openVPMS tries to expand the macro in Description, and generally can't because of the macro's length, and then returns the error below.

    Solution again is simple: when editing a macro, make sure the Name and Description fields are NOT the same as the Code field.
    An entry in the Description field is not required for the macro to work.

5. Expression Features

The Expression can contain more that just text - it can incorporate the preceding number, it can invoke another macro, and it can perform a lookup.  You can also use the concat function to concatenate things.

$number: If you define a macro, say @hrs to have the expression concat('every ',$number,' hours') then when you enter 6@hrs, it will be replaced by "every 6 hours".  That is, the number preceding the macro code ('@hrs' in this case) can be accessed using the special variable $number. As well as simple integers (like 6 or 10), you can use decimals (like 2.5) or fractions (like 1/4).

Lookups: If you define a macro, say dispensingUnits, to have the expression openvpms:lookup(openvpms:get(.,'product.entity'), 'dispensingUnits') this will be used to look up the dispensing units for the current product. Other useful examples are:
openvpms:lookup(openvpms:get(.,'product.entity'), 'dispensingVerb') and
openvpms:lookup(openvpms:get(.,'product.entity'), 'sellingUnits')

Obviously, you need a understanding of the archetypes to make extensive use of this facility.

Macros in Macros: We can make use of the above two facilities by defining a macro, say @oid with the expression:

  concat($dispensingVerb, ' ', $number, ' ', $dispensingUnits, '(s) Once Daily')

Here we are invoking two other macros, dispensingVerb and dispensingUnits, and also making use of the $number.  Thus 4@oid will expand to something like "Give 4 tablet(s) Once Daily"

Note that invoked macro (eg 'dispensingVerb') MUST have a name that starts with a letter, otherwise the expansion will not work.

Home Page


Created 25 August 2011 (compiled by Yuri Sos based on forum post by Sam Snelling), amended 24 July 2012

Elements

Complete

There is a pdf attached with the old version of this page. This page needs to be rewritten.

Why not help out fellow current and future OpenVPMS community users by contributing some documentation? To update this information just edit this page and create a new revision of the page.

 

The original images can be found by clicking the insert/edit image button on the toolbar when editing and then browsing the server. The files are located in a folder called "elements_page_images".  

 


Elements

Welcome to Elements

This appendix details the various tools that are found in every page of the web application. Knowing how these different tools work will make learning the new program much easier.

Common Key Strokes

The ALT combinations

Many of buttons and links of the application have an underlined letter. This is the shortcut letter that when combined with the ALT key, will allow you to perform that action as if you had pressed the button or link. Shortcut keys are generally quicker then using a mouse.

The alt key function on a NEW button

On this NEW button pressing ALT, then N, will add a New item:

 

 

The ENTER key

The ENTER or RETURN key has a special behaviour. When pressed it does not move the cursor to the next box (as many people are used to) but rather sends whatever selection or keystrokes the user has entered, to the program. 

What happens next depends on what sort of input you are entering.

Example- Using ENTER to complete a macro

This user is entering an expiry date in a new Estimation. The user wants the estimation to expire in 2 weeks and has entered "2w" as a macro.

To show the calculated date, the user presses ENTER:      Pressing enter on a macro

Note that the cursor has remained in the Expiry Date box, allowing the user to change the date if needed. 

To move to the next box, the user will need to press TAB.The cursor has not moved after pressing enter

The TAB key

The TAB key is used to move to the next box. Generally it will select the contents of that box, allowing quick editing and replacement of text. To move back to the previous box, press SHIFT+TAB.

 

The Mouse

  • The left click - Used to select items from lists or where shortcuts don't exist.
  • The right click - Does not work in browser applications.
  • The wheel - Use to scroll quickly in long lists or the contents of a screen.
 

The Links

Links are shortcuts which can be found in many areas within the program. They allow rapid movement to another area of the program whilst automatically selecting the item of interest.

Links are usually underlined and blue but this is dependent on the settings of the browser you are using.

 



Examples of links from Patients and Schedules
These links are found in the Patient Links tab of the Customers Information workspace. 
If the user clicked on "Sadie" it would take them directly to Sadie's Medical Records workspace in the Patients Module.
These links are from the Appointments Schedule. The allow reception staff to jump directly into either the Customer or the Patient section.
 

The Text Box

Text boxes are just that. Boxes that that allow you to type in them to enter data.
Text boxes can also accept Macros. These are text shortcuts or abbreviations that when ENTER is pressed, expands into more meaningful text.
Spell checking usually appears as a red squiggly line depending on your browser settings.
 

The Search Button

Text boxes also can also be linked to a SEARCH button. This small binocular adorned button  indicates this text box is associated with a list of possible entries (See "The List Dialog" below). 
These elements are very common and a good understanding of their operation, speeds data entry considerably.
Generally the most efficient method is to start typing the beginning of the item being searched for and then press ENTER.
The following logic will be applied;
1. If there is a SINGLE item that matches the letters typed, the box will complete the entry.
2. If there are MULTIPLE items that match the letters typed, the box will open the list and limit the list to those items.
3. If there are NO items that match the letters typed, the box will do nothing.
Clicking on the SEARCHbutton will directly take you to a list.
Some examples follow.


Example 1: Using the List Dialog
In this example the user is searching for a product "CONSULTATION EQUINE STUD". They have typed "CONS" and then pressed ENTER.
Following the logic above, there are multiple items starting with CONS so the following list is shown. There are 2 pages of products.
The user adds "ULTATION E" and then presses ENTER. This results in a list of 2 items.
A selection is made by mouse and the user returns to the original screen with the selection entered in the text box.


Example 2: Autocompletion with unique entry
In this example the user is searching for the product, "PENROSE TUBE". They type "PENR" and then press ENTER.
There is only one item beginning with the letters, "PENR" so the box automatically completes the only possible selection without opening the list dialog.
 

 

 

 

 

Glossary

Complete

Demystifying the jargon that is sometimes used in OpenVPMS in the application itself as well as on the community site.

How to make it easier to see where the cursor is

Complete

There is a pdf attached with the old version of this page. This page needs to be rewritten.

Why not help out fellow current and future OpenVPMS community users by contributing some documentation? To update this information just edit this page and create a new revision of the page.

How to use a Report downloaded from the Community: Shared Resources Area

Complete

New and user contributed reports can be found in the Community area of the OpenVPMS website.

www.openvpms.org/templates

 

These reports are free to use and are very easy to install.

 

Installing downloaded reports

1. Create a new Template

a) Go to Administration -> Templates (you will need to be logged in as a user with administrator privileges).

b) Click New

c) Set the Archetype to Report

d) Set the appropriate user level for whom you want to be able to use/view the reports (I use 9).

e) Report Category (these are variable but "patient report" is an example)

f) Upload the attached jrxml file from where you saved it when you downloaded it.

 

2. To run the report

a) Go to Report ->reports workspace.

b) Select report

c) Click Run

Report Download Instructions

Hi,

We've typed this instruction document (that is attached) on how to download reports from the website and save them into OpenVPMS. I thought other users may find this helpful.

Sandra.

How to Download & Setup a Report on OpenVPMS

Downloading the report and saving it to our system

  • Right click on the Report attachment and select ‘save target as’
  • Save in your preferred location with the file name extension of a full stop immediately after the name and the letters jrxml, eg: Cash Sales Report.jrxml
  • SAVE AS TYPE = ALL FILES and click on SAVE.

Adding a template & loading the Report into OpenVPMS

  • Go to ADMINISTRATION
  • TEMPLATES
  • NEW
  • Name the report
  • Select the template type
  • Set the User level
  • Set the Report Type
  • Set the Paper Size
  • Select the Orientation
  • OK

  • Click on EDIT
  • Click on SELECT and BROWSE to locate the file you saved earlier
  • Select the file to load in OpenVPMS
  • Click on SEND and then OK.

Downloading Reports from the website and importing into OpenVPMS.doc

Introduction to the web application

Complete

How it works

OpenVPMS is a web application. It is run on a webserver which can be either a local machine or a remote server somewhere on the internet (like the demonstration application). So, even if it is installed on a local server it is accessed through a web browser. Any device that has a web browser can access the application by entering the address required to access the application. It depends on the setup but in most cases you would enter:

http://serverIP:8080/openvpms

Logging in

Entering the address (as mentioned above) into your web browser takes you to the login screen:

The login dialogue

You just need to enter your username and password an then enter and you will be logged into the application. If your returned to the login screen you got your username or password wrong (nb. the User is not case sensitive but the password is).

Navigating Around

When you arrive in the application you will be presented with this screen which is the Customer information workspace:

Notice the Links along the white links at the top of the page (Customers Patients ...)- these are the main menu items. For each of these main menu items there is a separate submenu displayed on the left hand side of the page. Each of these submenus links to a separate workspace. 

Navigating with the Keyboard

To navigate with the keyboard you can hold down the ALT key on the keyboard and then press the key which is underlined on the web application. For example, ALT t would take you to the patient menu. 

Once you have selected the Main Menu item it is necessary to use the mouse to select the workspace from the submenu.

Navigating with the Mouse

Click the link on the main menu along the top and then select the submenu item (the workspace) on the left hand side of the page.

Important: Do not use the forward and back buttons on your browser to navigate around the application. They will take you away from your web application session

Logging out

Simply use the logout link on the upper right hand side of the web application page

How to logout- just press the link

Searching a patient by microchip number

Complete

 In OpenVPMS microchips are stored as an identities.

 

Searching for an identiity

To find a patient with a certain microchip number you need to search for a patient with that identity. To do this go to the patient information screen and press select to find a new patient. The following dialogue will be presented:

 

Make sure that the Search identities and all patients boxes (so you don't just search in the current client) are ticked. Then enter the microchip number in the search box and press find. 

It's important to note that this will only search identities, not the patient names as well. 

To search for a partial number

Use a % as appropriate. For example:

  • %982 will search for a microchip ending in 982
  • 982% will search for a microchip starting with 982
  • %982% will search for a number containing 982 

The Application Tree

Complete

There is a pdf attached with the old version of this page. This page needs to be rewritten.

Why not help out fellow current and future OpenVPMS community users by contributing some documentation? To update this information just edit this page and create a new revision of the page.

Backing Up and Restoring Your OpenVPMS data

Complete

openVPMS: Backing Up and Restoring Your openVPMS Data

 

Home Page

 


CONTENTS

1. Introduction

Why do I need to backup my computer? I've never had a problem before.  ("Famous last words"!)
It's often been said of hard drive failure: " it's not a matter of if, it's a matter of when."

If you haven't lost data yet, count yourself lucky! It WILL happen. It happens if you lose data due to power surges or loss of power whilst writing data (and yes, you're probably thinking your UPS on the server protects you from that eventuality), equipment failure, a computer virus attack, or some other catastrophic event like a fire. Whilst hardware is cheap and easy to replace, consider how much it would cost to restore lost data (do you even have hard copy of your clinical records any more?).

Backing up your data and keeping that information somewhere "safe-and separate" means you will always have a copy of your data, just in case something tragic happens to your server.

2. Backing Up Your Data

Go to

https://openvpms.org/documentation/csh/2.3/topics/how/backup

for the current recommendations on backing up and restoring OpenVPMS.

3. Creating a system image

More extensive than a database back up, creating a system image enables the user to take a complete image of their hard drive and restore it in the event of a hard- or soft-ware failure.

Creating a System Image (Windows 7-10)


Updated 25 Nov 2021 (compiled by Yuri Sos)

Discounts

Complete

The following information has been gleaned from working with release 1.5.

 

The OpenVPMS discount system is quite extensive.

a) you can define different discount types. For each type (eg Staff Discount, Valued Customer, ...) you define  the type: Percentage or fixed amount (ie $10 off), and you can put one or more discount types in a Discount Type Group in which you can specify a start & end date for each Discount Type. 

The DiscountType settings are as follows:

  • Type = Fixed or Percentage
  • Percentage = for percentage, the percentage; for fixed, the $ amount of the discount. Can be negative in order to impose a charge rather than a discount.
  • Include Fixed=yes/no - if the product price has a fixed component  (as well as a per unit component), ie a flag fall charge, then if yes, the discount is also applied to the fixed component
  • Active=yes/no - enable/disable the discount

b) for each customer and each patient you can define what discount types and/or discount type groups they have, and their start/end dates.

For each product you can define what discount types apply to the product and their start/end dates.  However, since you can specify discounts for each product type, it is normal to set the discounts at the type level rather than for each individual product.

c) when the charge is calculated, the only discounts that apply are those that are common to both product and customer/patient.

Hence if the customer has a staff discount, but the product they are buying has no staff discount, then they don't get the discount.

If the same discount has been set for both the customer and the patient, then the discount is only applied once.

However, if there are different discounts set (eg Valued Client for the customer, and Blood Donor for the patient) then both apply (provided that the product has both set).

 

If there are multiple applicable discounts (ie staff + valued customer) then both are applied.  However, you cannot reduce the charge below the max discount set for the product - ie if staff is 20% and valued is 30%, but the maximum product discount is 35% then you don't get 20+30=50% but only 35%.

 

NOTE: all the above simply calculates the applicable discount.  The person creating the invoice/charge can override the calculated discount.

 

d) quantity breaks - these are not currently supported by the system. There is a proposed design for them, but it's not a currently funded project.

Dispensing And Injection Fees

Complete

OpenVPMS: Dispensing And Injection Fees.


Introduction


OpenVPMS calls Dispensing and Injection Fees Product Price Templates. You use these Product Price Templates to define a set of fixed fees that you can share amongst multiple products. Once created, you can link them to any product (you can link more than one if you wish). When invoicing, the fixed fees available on the linked template are automatically added if there's only one, or, if you have more than one, you can select from a drop down box.

In the case of dispensing fees you would generally have these defined only in the template and not in the product but for other services you may want to have standard and product specific ones available. The big advantage of using the Product Price Template is you only need to modify the template to change a dispensing fee for all linked products.
This same procedure can be used for Injection Fees.
 

Creating Your Dispensing Fee (Product Price Template)

  1. Create a new Product Price Template:
    Click on Products (1) | New (2) | Product Price Template (3).

  2. Type in Dispensing Fee (1) in the Name field, then click Add (2) and type in your dispensing fee into the Price field (3).
    Click OK (4).


    The end screen should look like this:

Applying Your Dispensing Fee

  1. Click on Products | Select. In this example, I'm going to add a dispensing fee to Clavulox tablets.
    I type cl into the Name field and click Find. I then click on Clavulox 50mg tablets to bring up that item.

    Click on Edit (1) | Linked (2).

     

  2. Click on Add (3) | Binoculars (4).

     
  3. A new window opens.
    Double-click on Dispensing Fee (5). Window closes. Click OK (6).

     
  4. Now when you invoice the item, the fixed linked price is added to the invoiced price, thus:


     

Multiple Dispensing Fees

  1. You can have more than one Product Price Template per product: to demonstrate this I set up two extra Product Price Templates: an Admin Fee of $6.66 and a Special Fee of $5.55 (the point of this exercise was to see which one was the default and in which order they would be displayed): then I added the new templates to the product (as instructed above): this image show that the three fixed prices are ordered alphabetically in the "Linked" section of your product:


     

  2. At invoicing, the Fixed Prices are ordered in alphabetical order (but only the appropriate price is shown, not the template's name), and thus the "A"dmin Fee is the default. You can of course select any of the other fixed price fees from the drop-down box:

    It may be advantageous then to ensure that if a product has more than one linked Product Price Template, the most commonly used one is the first one in alphabetical order.


Created 28 July 2012

Reminders: Part 1 - Setup

Complete

Reminders: Part 1 - Setup


CONTENTS

Introduction

The ability to send clients reminders is one of the most important functions of any practice management system. The openVPMS reminder system is extremely powerful and customisable to your practice's needs. This tutorial will walk you through setting up reminders for vaccinations for your patients. Once you have this function enabled, you'll no doubt expand your use of reminders to other parts of your practice, such as senior patients, dental care and so on.

1. Setting Up Reminder Groups

Let's do this first, it becomes relevant and important later on in this tutorial.
Click on Administration | Lookups. Select Reminder Group, then click New.

The following screen opens.
Type in Vaccination and click Ok (I've reduced the windows in size to fit the screen, sometimes the Ok button is down below off the screen and you may need to resize the window to find it).

2. Setting Up Reminder Types


Firstly you will need to setup the appropriate Reminder Types.
Click on Administration | Types. Select Reminder Types, then click New.

The following screen opens:

Let's look at the various parts of the screen above:

Name and Description: you need to give this reminder type a name, eg Annual Vaccination, Annual Heartworm, Dental Check, etc.
Group: if you check this box, then if a given customer has say 3 patients with the same reminder, then one reminder letter will printed showing all three patients.  If it is not ticked, then for this customer, three separate letters will be printed.
Reminder Interval and Interval Units: Default reminder interval, expressed as Interval Units, for example 1 and year for annual vaccination.

Cancel Interval and Cancel Units: When the reminder should be automatically cancelled. A reminder is cancelled if its due date plus the cancel interval is less than or equal to the date when you run the reminder generation. For example: if a reminder was due on 15/7/2010 and had a cancel interval of 2 years, it would be cancelled on any reminder run on or after 15/7/2012. This feature has no bearing on the number of reminders sent prior to a reminder being cancelled: that will be discussed later.

Sensitivity Interval and Sensitivity Units: This is used to highlight reminders in the patient summary Reminders popup (when you click on the bell icon in the left-side summary screen) and changes the colour on the reminder indicators from Not Due(green), Due (yellow) or Overdue (red).

The sensitivity interval is used to determine a lower and upper bound to compare reminder due dates with.

ie lower bound = {current date} - {sensitivity interval}
upper bound = {current date} + {sensitivity interval}

The lower and upper bound determines how the reminders are highlighted as follows:

  • Red (overdue) : If a reminder's due date is less than the lower bound;
  • Yellow (remind): If a reminder's due date is less than the upper bound;
  • Green (normal): If a reminder's due date is greater than the upper bound.

For example, using 15/07/2012 as today's date:

  • If the reminder due date was 14/06/2012 (or lower) and the sensitivity interval was one month, it would be highlighted red given today's date.
  • If the reminder due date was anywhere between 15/06/2012 and 15/08/2012 and the sensitivity interval was one month, it would be highlighted yellow given today's date.
  • If the reminder due date was 16/08/2012 (or higher) and the sensitivity interval was one month, it would be highlighted green given today's date.

Interactive check box: An unchecked Interactive box sets the reminder in accordance with the above parameters when you invoice the item attached to the reminder (don't worry, we haven't got to that part yet).

Checking the Interactive box will allow you to modify the due date at the point of invoicing: for example, you have a temporary vaccination reminder of 4 weeks for the next vaccination, and you wish to vaccinate next at 12 weeks of age. This reminder will be set for an eight week old puppy, and if the reminder was unaltered, a six week old puppy would receive its next reminder at 10 weeks of age; if the interactive box is checked, you will be presented with the reminder screen at invoicing, at which point you can type in 6w in the Due Date field, thus setting the next reminder for the puppy at 12 weeks of age.

Here's an example of a reminder that's been set up: an yearly vaccination reminder that highlights yellow within 15 days of the due date and cancels after 2 years. As the interactive box is unchecked, the reminder is automatically set for 12 months' time:

Let's turn our attention to the three tabs, Template, Species, Groups. We'll look at them in reverse order.

Group: groups Reminder Types together so they can reset each other; for example you may set a puppy vaaccination and an annual canine vaccination as two different Reminder Types, but they will belong to the same Reminder Group (eg Vaccination), so that generating a subsequent invoice for a canine annual vaccination Canine Annual reminder will automatically "complete" a previous Canine Puppy or Annual Reminder. When we say "complete", it means that existing reminder disappears from view (as it's completed) and is replaced by a new annual reminder that is "In Progress". Here we've selected the Reminder Group we created above and moved it from Available to Selected.

You can define as many groups as you wish and can assign many Reminder Types to the same Group or a single Reminder Type to many Groups.

Species: You can limit reminder to specific species; to use this function, click on the species and then the right arrow button to move it from Available to Selected.

Templates: this is where it gets "interesting".
This is where you tell OpenVPMS what document to generate for each reminder you want to send:

  • if you only want to list the reminders (like a phone list) no template information is required; or
  • you can print a letter for the first reminder and list subsequent reminders. You can customise this to your practice needs.

Let's suppose that the first reminder you want to send out is a letter (or postcard). Click on Add.

This window opens:

Document Template: this will be the OpenOffice .ODT file that will be use as the merge document. OpenVPMS can only print one reminder at a time (as of v1.6), so letters or postcards are the only option (no 3-across label sheet formats are yet available).
Reminder Count: This field limits this particular reminder template to only printing the reminder appropriate to the number of reminders already sent: so for the first reminder, this should be set to 0 (zero).
Overdue Interval and Units: you can set this template to print current or overdue reminders. As this is the first reminder, set interval to 0 (zero).
List: Check this box if you just want a list of reminders (eg for phone or SMS): no document template is required in this case; unchecking this box prints reminders according to the document template file.

This is an example of the template with the default odt file supplied with v1.5.1:

Once you're done, click Ok to complete your first reminder.
If you want to use your own template document, simply go to Administration | Templates, double-click on Reminder Vaccination First, then
and Browse to your new document and Send it to OpenVPMS.

3. Attaching Reminder To Product/Service


Once you have your reminder setup, the next step is to attach the reminder to a product or service. Click Products and Search for the product or Service you wish to attach a reminder to. In this instance, I've searched for vax, then double-clicked on the item I need. Click on the Reminder tab, then click on Add. Use the binoculars to select the Reminder Type you've just set up, then, because this is an annual vaccination, fill in 1 as Period and years as Period Units, as below:

In a similar fashion, you can set up a temporary vaccination type and add the reminder to a product, checking Interactive to be able to alter the due date at time of billing:

4. Reminder Creation In Action


Let's see how this works in OpenVPMS. You've consulted and vaccinated in the normal way, and have srrived at the billing stage:

You enter the item and press either Ok or Completed:

The reminder icon (the bell) has now appeared in the patient's summary screen and the reminder type, due date and product can be viewed by clicking on the icon:

Similarly if you've set up a product/service with an interactive reminder type (so that you can vary the due date), when you press after billing that item, the reminder screen pops up with a suggested due date (in this case 4 weeks hence):

You may wish to make it, say for 6 weeks' time, simply backspace out the due date, type in 6w.........

.... and press Enter: the due date is now 6 weeks from today:

 



This resource is an openVPMS-enduser created tutorial. Constructive criticism and corrections welcome.

Created 10 July 2012 {compiled by Yuri Sos from many forum posts by Tony De Keizer, Tim Anderson and others}

Setting Up Email To SMS using Generic SMS Gateway: One User's Experience

Complete

openVPMS: Setting Up openVPMS to send SMS Using Your ISP's EmailToSMS facility.

Home Page


CONTENTS

1. Introduction


The ability to send SMSs from within openVPMS is one of the stand-out enhancements to openVPMS v1.5. Whilst two commercial SMS gateways are provided with openVPMS (smsglobal and ClickaTell), you may well be able to use your own clinic ISP to utilise this feature without signing up to these gateways.

I'm going to show you the steps I've taken using the SMS-sending feature that's part of my clinic's ISP. As with all things openVPMS, it's actually quite simple to set up, especially when someone has shown you the way.

My ISP for both clinic and home is Exetel, but your ISP probably offers the same facility. Quoting their website "Exetel provides the ability for any user to send SMS messages using their DSL (Exetel DSL as well as non-Exetel DSL) service instead of a mobile telephone. To send an SMS message all you need to do is to go to your Exetel Members Facilities and select the "SMS" button found on the left sidebar menu. If you do not have an Exetel DSL service you can apply for a prepaid or post-paid SMS only account."

We've used their SMS via ADSL for some years and I was eager to see if I could integrate openVPMS and Exetel's EmailToSMS service. I'm pleased to report that it works like a charm (subject to a "gotcha" I'll explain later in this tutorial).

Whilst most of you probably don't use Exetel, I hope this tutorial will give you some insight that may be of use with your own ISP.

There's thus obviously two components: the openVPMS section and the ISP (in this case, Exetel) section.

2. Configuring the ISP


Log into your ISP account - usually this is the members' section.

EmailToSMS works by sending an email to 04nnnnnnnn[at]sms.exemail.com[dot]au from your registered address with your password as the subject.

The Sender that the recipient sees can be a mobile number (to which they can reply) or a text string of up to 15 characters (alpha characters, no space); thus you can have your SMSs go out with "Myclinic" as the sender: recipients then don't wonder what this unrecognisable number that's texting them belongs to and you don't have to include the now ubiquitous "no reply to this number" advice at the bottom of every SMS. Of course, if you do use text as the sender, the recipient can't reply to that at all.

Insert the following:

  1. Email address: this can be your clinic address, or a separate email address you've invented/created for this function: it'll never be seen or used by anyone: it has no purpose other than it is part of the authentication process.
  2. Password: pick a password of your choice: whilst this will be placed in the "Subject" of the email, it will not appear anywhere as it is also part of the authentication process;
  3. Sender: this is the sender that the recipient of the email will see: your choice - a 10-digit mobile number (04nnnnnnnn) or an alphanumeric string of up to 15 characters: no spaces permitted;
  4. Maximum SMS(s) per email: I selected one SMS per email (I don't see how more than one SMS per email would work in our situation).

Click on the radio button to agree.

Check that you've set everything up correctly and click on Add Registered Email Address/Email Domain To SMS button.

You're done!

If you're like me, you can't wait to try it out: open your email client and try it out (use your own mobile number - (duh!)).......

Click Send. Your test SMS will appear on your phone.

("Capture it" screenshot from my Blackberry Bold 9000)

As you can see, it's much easier to identify the sender if it's text, not numeric.
Ok, that's done - time to move on to configuring openVPMS.

3. Configuring openVPMS


First we need to ensure that your mail server details are correctly set up in openVPMS: it's different in v1.5 than it was in v1.4.

  1. Click on Administration | Organisation | Practice Location.
  2. You need to fill in the data for your outgoing mail host. Probably the best place to get this is to open your email client and look under Tools | Account and Server Settings. You'll need "Outbound Mail Server" for openVPMS's Mail Host, email username and password in the appropriate places as well as the outgoing (SMTP) port.

    Click Ok to save the configuration.
     
  3. Click Administration | Organisation and select SMS Configuration: Generic Email Gateway.
  4. Click New.
  5. Fill in the details as shown below: the To Expression concat($phone,'@sms.exemail.com.au') will return the phone number in the format required. Click Apply when you're done.

    In the lower window, put your own mobile number (you might need to click Apply again). If there's no error message under Status, the test message is ready to be sent (the subject in the lower window will be blank).

  6. If you've done everything right, click Send SMS. Within a few seconds, your test SMS should appear on your phone, complete with your clinic name as Sender.

    ("Capture it" screenshot from my Blackberry Bold 9000)
     

  7. You now need to set up each client's phone details and ensure that the number is set as mobile and the Allow SMS option is checked: see images below:

    Once you click Ok (NOT Apply), a Send SMS button will appear under the panel at left:

  8. You can enable more than one mobile number per client to receive an SMS: when you click on the Send SMS button, you will be presented with a drop-down list of numbers from which you can select.

You should now be ready to send SMSs directly from your openVPMS; while version 1.5.1 collects phone numbers only from the actual number field, version 1.6 will extract the mobile phone number from both area code and number fields, strip off spaces, hyphens and extra text so that a phone number such as (0411) 987-654 (ask for Jane)..............

.......... will appear in your SMS window as 0411987654: see image below:

Hope this is of some help to you.

Home Page



Uploaded 10 June 2012, amended for v1.6 18 June 2012 (Yuri Sos)

The customer module

Complete

There is a pdf attached with the old version of this page. This page needs to be rewritten.

Why not help out fellow current and future OpenVPMS community users by contributing some documentation? To update this information just edit this page and create a new revision of the page.

User Guide

Complete

Introduction

Before exploring this in-depth guide to using OpenVPMS and getting the most out of its functions, please take a moment to read about the product's key concepts:

Key concepts

  • Customers/Clients
  • Patients
  • Supplier
  • Workflow/Schedule
  • Products/Inventory
  • Reporting
  • Administration

How it works

Use the OpenVPMS interface to:

  • Manage your electronic animal health records (EHR)
  • Manage your customers estimates and payments records.
  • Manage your appointment schedule
  • Manage your suppliers and referrals
  • Manage your inventory
  • Get reports

So, those are the basics. Now we'll begin the detailed guide to getting the most out of OpenVPMS. Let's get started!

Module: Customers/Clients

The purpose of this module is to handle all the interactions you might have with the customer.  They range from information about the customer to developing estimates to invoicing to notes about the customer.

Workspace: Information

This workspace display the details about the customer. Manage all aspects of the highly detailed Customer profiles.

Workspace: Documents

This workspace generates documents and stores files that are related to this customer record. Attachments of any file, completed forms or letters.

Workspace: Estimates

This workspace generates estimates for the customer. An "estimate" can be easily converted to a "charge" by pushing the buttom on the bottom of the screen. Estimations are saved and can be used for direct invoicing.

Workspace: Charges

This workspace invoices the customer.   A "charge" can be finalized. Manage invoices, credits or counter sales (non-patient associated billing).

Workspace: Payments

This workspace applies payments on customer invoices.  They are applied in the order of oldest invoice to newest invoice. Manage payments, receipting and refunds.

Workspace: Account

This workspace display the account status of the customer. Summarise all Charges and Payments. View statement history. Alter accounts (if you have the correct permissions).

Workspace: Notes

This workspace display and stores notes about the customer.

Module: Patients

The purpose of this module is to handle all the interactions you might have with the patient (animal).  They range from information about the patient to the electronic health record history of the patient.

Workspace: Information

This workspace display the details about the patient. Manage all aspects of the Patient profile (eg.Account types, contacts, billing types, etc).

Workspace: Medical Records

This workspace stores the medical records history of the patient. Allows management of case records, problem based histories, reminders, alerts, investigations (eg. lab results) and attachments (images, documents or files).

Module: Supplier

The purpose of this module is to handle all the interactions you might have with suppliers (product) and referrals. 

Workspace: Information

Manage the supplier profile. Apart from contact and billing details, suppliers can also be associated with specific products they might supply.

Workspace: Documents

Attach any type of file, completed forms or letters.

Workspace: Orders

Currently allows generation of invoice style orders using the product database. These orders can then issued using pre-existing templates.

Workspace: Deliveries

This is used to acknowledge the receivership of orders.

Workspace: Charges

Manage invoices or credits.

Workspace: Payments

Manage payments, receipting and refunds.

Workspace: Account

Summarise all Charges and Payments. View statement history. Alter accounts if you have the correct permissions.

Module: Workflow/Schedule

The purpose of this module is to handle appointment scheduling.

Workspace: Scheduling

Date-based lists for appointments.

Workspace: Work Lists

Contains lists of tasks relating to a particular Patient. eg. Consultations in a Waiting Room List)

Workspace: Messaging

Allows messages relating to a patient to be left for other users.

Workspace: Investigations

Lab results, digital imaging imaging studies and other scheduled tests are managed here.

Module: Products/Inventory

The purpose of this module is to handle all the interactions you might have with suppliers (product) and referrals. 

Workspace: Information

Considerable detail beyond just pricing information can be stored in the Product profiles which are managed here.

Workspace: Stock Inventory

Information about stock.

Module: Reporting

The purpose of this module is to deliver reports on your veterinary business. 

Workspace: Till Balancing

Tools for clearing and balancing the Till(s). Previous balances can be examined in detail.

Workspace: Deposits

Till balances can be deposited to any number of accounts which are managed here. Deposit slips for banking can be generated.

Workspace: Debitors

Till balances can be deposited to any number of accounts which are managed here. Deposit slips for banking can be generated.

Workspace: Work in Progress

Till balances can be deposited to any number of accounts which are managed here. Deposit slips for banking can be generated.

Workspace: Patient Reminders

Reminder runs with capacity for various posting methods is managed from a similar rich interface as statements.

Workspace: Reports

Running reports and report results are accessed here.

Module: Administration

The purpose of this module is to administer the OpenVPMS application.

Workspace: Organization

Organizations are entities such as Deposit Accounts, Schedules, Practice Locations, etc. Organization objects are what allows the program to be uniquely configured for each different practice.

Workspace: Types

Types are special lists which relate to the organization objects. Examples include; Appointment types (Schedules), Product types, Reminder types and Task types (Worklists).

Workspace: Templates

All documents created the various Document workspaces (ie. Customer, Patients) are based on templates which can be customized here.

Workspace: Lookups

The contents of the various List Boxes are managed here, allowing addition of new items and entries.

Workspace: Users

Managing users accounts within the system.

Workspace: Roles

Managing the group role of users within the system.

Workspace: Authorities

Managing permissions of users/groups within the system.

Workspace: Archetypes

Managing the relationship of data types within the system

 

Modules & Workspaces

The Open VPMS application is divided into Modules and Workspaces. After logging into the application, the Modules are listed across the top of the screen. From left to right, they are:

Modules

Customers
All accounts are based in Customers as well as some documents.
Patients
Animals associated with Customers.
Supplier
Supplier profiles can be kept as well as correct ordering and supplier account management.
Suppliers don't have to be just product suppliers. They can be veterinarians or veterinary practices as might be the case in a referral practice.
Workflow
The day to day operations of the clinic +e.g.+Scheduling, In-patients, staff communications tools.
Financial
Fully documented Till management and banking.
Products
Product profiles and inventory management.
Reporting
Reminder & Statement system and report generation.
Administration
The Implementers domain - unprecedented customization options including list management, practice structure configuration, etc.

Workspaces

Each module has a set of sub-sections called Workspaces. These are listed on the application tree which maps out the structure of the application in broad terms but a detailed reference manual encompassing all areas is beyond the scope of this handbook. We hope that the missing elements will be contributed by the user and implementor community.

Video tutorials

Complete

This section includes user contributed video tutorials.