Formulary Management
The formulary domain contains all the configuration of stock, services, healthplans and discount codes used for clinical records and invoicing.
Configuration includes the clinical prompts such as quantities, send-to and treatment label configuration in addition to pricing for the code with deviations of pricing and settings per location.
Formulary in Merlin?
Formulary is also known as Code Entry in Merlin.
Entities within Formulary
- Stock
- Service
- Dispensing Notes
- Formulary Notes - Notes for the formulary administrator.
- Barcodes
- Deviations
- Send-To
- Discount Categories
- Treatment Category
- Formulary Types
- Legal Categories
- Formulary Groups
- Health Plans
- Health plan Contents
- Health plan Groups
Relationships
The formulary domain has some relationships with other domains but acts as the source of truth for pricing and workflow prompts for users.
Related Limitations
- Service entity also manages the Discount formulary Type's special use case of Percentage or Fixed Value discounts.
- Health plans are managed by this domain but the subscription to a plan is managed under the patient domain.
Inventory Schema
Please take note of the following points for this schema:
- Discounts A discount record is a Service of the Formulary Type "Discounts", there is a slightly different use case mentioned below. A Discount is a manually entered discount during clinical as an invoice line.
- Discount Categories Note that Discount records and Discount Categories are different entities, a Discount Category is a value associated with a category which may be associated with a client or patient and automatically calculated as clinical entry.
- Levels Quantity returns the quantity at the time the request is made, no point in time or daily summary is available.
Service and Stock Fields
- archived: soft deleted record
- description: the name of the product as it appears on clinical records and invoices
- formulary code: a unique human usable short hand code users can use.
- overwrite price: sets the price to a fixed value rather than calculated
- prevent hide: when enabled this record cannot be hidden in location deviations
- request quantity: Enables the prompt to ask the user to enter the quantity otherwise a quantity of 1 will be used when adding to clinical.
- request batch: Enables the prompt for a user to enter or select a batch number.
- request chip: Enables the prompt to enter a microchip.
- request alter sex: Enables the prompt for the user to confirm to change the patient sex.
- request repeat prescription: Enables the prompt for a user to create a prescription record.
- request label: Enables the prompt to the user for a label using the other label settings.
- discount category enabled: Turns on or off if the discount categories applied to the record should be used.
- healthplan group: Sets which healthplan group the product belongs to, a plan contains multiple groups. A group may be structured as Vaccinations, health checks, wormers, flea, long term medications, etc.
- hcp eqm: The 'Equivilent Quantity Multiplier' helps adjust the health plan group reduction on a patients subscription. This is used to reduce the allowed quantity on a plan by more than the quantity sold such as a box of 3 or 6 pippettes both sold as a quantity of 1, will be multiplied by 3 or 6.
- formulary group: Formulary group is used in some reporting to help distinguish between professional fees, drugs or other charges.
- formulary type: The parent grouping structure, a Formulary type is either Stock or Service not both.
- tax: Applies this tax rate by default when calculating prices, may be overriden by country specific Tax rules. Used to calculate the overwrite gross price back to Net.
- species: restricts this products to only the specified species.
- account type: Changes the colour to match the account type in Merlin to guide users for the intented
- product alert: Shows this message to a user when they add to the clinical record, use as a warning or national stock shortage, etc.
- wormer enabled: When added to clinical, the patient last wormed date is updated.
- flea enabled: When added to clinical, the patients last flea date is updated.
Discounts
Under the Services entity when using the Formulary Type "Discounts" is used the Net-Price and Overwrite have different uses.
- Fixed Price Discount: Set the
overwrite-price-enabled
totrue
and setoverwrite-price
to the discount fixed value, e.g.5
for £5 - Percentage Discount: Set
overwrite-price-enabled
tofalse
and setnet-price
to the percentage value e.g.25
for 25%
Stock Specific Fields
Stock entities have additional fields used for price calculations
- cost type: Defines which cost value the price calculations should be started from either
COST
,NET
orNETNET
. Cost is the supplier list price, NET or NETNET is the % reduction from COST. - cost net discount: A % value price reduction from the supplier.
- cost netnet discount: A combined % discount price reduction from the supplier and manufactuer.
- quantity per pack: Sell Ratio from the supplier size pack convert to how the practice sells. e.g. 12 Cans in a pallet.
- markup %: Markup % on the calculated unit price from the Cost price divided by quantity per pack.
- dispensing fee: Net value added to the cost when dispensing.
- multi dispensing fee: Enables a prompt to the user to select from a list of available dispensing fees.
- minimum charge: Minimum charge when dispensing the product, if the total items sold is less than this. This value will be used instead.
- supplier sku: The suppliers SKU (Supplier Code) used when updating prices.
- sell at cost: Enables an option to sell the product at Cost price.
- legal category: Sets the legal category associated with the inventory.
- prescription instruction prefix: The default label prefix to be used for label instructions in prescriptions (both basic and advanced) e.g. Apply or Give
- prescription measure: The default measure of the item as sold on label instructions in prescriptions (both basic and advanced), e.g. Tablet(s), Pippette(s)
- prescription frequency measure: The default frequency measure for label instructions in prescriptions (both basic and advanced) e.g. Day(s), Month(s)
- prescription written allowed: Set if this item can have a written prescription issued. Used by both basic and advanced prescriptions.
- Advanced prescription calculate dosage: Sets if doseage is calculated from the active ingredients on this stock item.
- Advanced prescription child mandatory: Sets if an alternative prescription is strongly suggested during prescription creation when the advanced prescription is started from this stock item selection.
- Advanced prescription dispense suggested: When set, a user dispensing the stock item immediately, will have a suggestion to create a prescription first.
- marketing authorisation number: For reference purposes and for use in mail merge fields on written prescriptions.
Prescriptions
From August 2024 there are options for 2 different types of prescriptions with the original (Basic) and newer Active Ingredient (Advanced) models being supported through configuration in the formulary.
For Basic Prescriptions only the following fields are used:
request-repeat-prescription
: Toggles prescriptions on/offprescription-instruction-prefix-uuid
: Optional setting of default prefixprescription-measure-uuid
: Optional setting of measureprescription-frequency-measure
: Optional setting of frequency measure.prescription-written-allowed
: Optional setting if a written prescription can be created for this item.
For Advanced Prescriptions the above fields are used in the same manner and also have the additional fields for advanced prescription only:
prescription-advanced-calculate-dosage
: Optional, Will use the set active ingredients to calculate dosage during prescription created.prescription-advanced-child-mandatory
: Optionalprescription-advanced-dispense-suggested
: Optional- Active Ingredients (multiple) are setup against each stock items for prescriptions; Each ingredient includes the following fields:
active-ingredient-uuid
: Set the active ingredient for which the values are being set.strength-per-unit
: Sets the value per unit by the measure. e.g. 0.5strength-active-ingredient-measure-uuid
: Sets the strength measure e.g. mg/mlprescription-dosage-active-ingredient-measure-uuid
: Set the measure to use in the dosage instruction e.g. mg
Health plans
Health plans have several entities which makes the master plan which patients are then subscribed to.
- The Plan - This is the header record with information such as the name and price and dates the plan can be joined to.
- The Groups - A categorisation of groups with some defaults for Content.
- The Contents - This is where Groups and are joined to a Plan, a group can be added multiple times usually for different date ranges to restrict when the plan allowance is dispensed, e.g. 1-190 days and 180-364 days with a quantity of 6 for the same group added twice.
- Stock and Services - These records are associated to a group for use on the plan.
This arrangement allows clinical choice for the Practitioner within the allowances of the plan.
Composites
Composites are a list of child relationships to other formulary records with specific expectations used during clinical recording.
A Parent formualry record is the trigger record for prompting to dispense/charge for other formulary records (child formulary record).
A Child formulary record, can also be a parent formulary record itself. Therefore if a child formulary record has composite-inherit
as true
then you need to fetch the composite records for this embedded parent formulary record.
Some notes about composite fields:
- composite-mandated: Identifies that this record is configured by the main site, and is applicable for all sites regardless of the location.
- composite-quantity: Sets the default quantity for every 1 of the parent quantity
- composite-view-order: Sets the view order as displayed to the user
- composite-no-charge: Set the composite to have No Charges, this overrides all pricing that would usually be enacted.
- composite-inherit: Indicates that this child formulary record is also a parent. All the child-parent's composite children need to be included.
- composite-mandatory: Indicates that this child item is mandatory and must be included along with the parent.
- composite-opt-in: When not mandatory, this determines if the item is by selected or unselected by default. Allows you to provide options, e.g. different sizes.
- composite-no-destocking: Sets inventory behaviour for this composite, this will stop the inventory being destocked when this composite is used. Useful for when you have made packages under the parent code.
- composite-non-billing-destocking: Set pricing and inventory behaviour to destock inventory but with no charges and will not appear on invoices, useful for consumables like gloves.
- composite-do-not-use-parent-quantity: Decouples the quantity multiplication from the parent, e.g. 5 parents created, will not default to 5 times the parent.
Cross Domain UUID References
Reference | Domain | Resource | Note |
---|---|---|---|
location-uuid | location-management | /locations | Location, e.g. work location. |
location-space-uuid | location-management | /locations/:uuid/spaces | Space the item was used from, e.g. stock location. |
supplier-uuid | inventory-management | /suppliers | Supplier of the inventory item. |
manufactuer-uuid | inventory-management | /manufactuers | Manufactuer of the inventory. |
Security Scopes
The following authorisation scopes are required to access different resources within this domain:
- formulary:read
- formulary:config:read
- formulary:config:create
- formulary:config:update
- formulary:config:remove
- formulary:config:location:read
- formulary:config:location:update
- formulary:plans:read