Detailed Logic for Step 2 - Calculate the required quantity of each VMP to fulfil the requested dose
Conversion between scaler units of measure, e.g. gram to milligram
A function is required to convert a VTM ingredient strength into the same units as the requested dose quantity.
For example, if a required dose quantity is 12.5 milligram
, but a VMP for that drug is expressed with a strength in micrograms e.g. 500 microgram
, then that strength needs to be expressed in milligrams before the mathematical function can be executed.
Thus 500 microgram
would be converted into 0.5 milligram
.
For example;
/// // Convert 500 micrograms into milligrams // FNC_CONVERT_UNITS(vpi.strnt_nmrtr_val, vpi.strnt_nmrtr_uomcd, dose_uom_cd); /// SELECT FNC_CONVERT_UNITS(500, 258685003, 258684004); // returns `0.5`.
Within the dm+d, units of mass have the greatest range; kilogram, gram, milligram, microgram and nanogram.
Due to this range, the data type used within SQL must be a DECIMAL(30,12)
.
Conversion is required for the following units of measure.
Category | Units | SNOMED Code | Scaler Conversion |
---|---|---|---|
Mass | kilogram | 258683005 | 10^3 |
gram | 258682000 | 1 | |
milligram | 258684004 | 10^-3 | |
microgram | 258685003 | 10^-6 | |
nanogram | 258686002 | 10^-9 | |
Volume | litre | 258770004 | 1 |
millilitre | 258773002 | 10^-3 | |
microlitre | 258774008 | 10^-6 | |
nanolitre | 282113003 | 10^-9 | |
Length | metre | 258669008 | 1 |
centimetre | 258672001 | 10^-2 | |
millimetre | 258673006 | 10^-3 |
Function for quantity
A suitable SQL function to calculate the quantity of a given VMP to fulfil the requested dose quantity would be as follows.
FUNCTION FNC_CALC_QTY( doseQty DECIMAL(9,3) , numerator DECIMAL(30,12) , denominator DECIMAL(9,3) , unitDoseFormStrength DECIMAL(9,3) ) RETURNS DECIMAL(30,12) BEGIN IF denominator = 0 THEN SET denominator = 1; END IF; IF unitDoseFormStrength = 0 THEN RETURN doseQty / ( numerator / denominator ); END IF; RETURN ( doseQty / ( numerator / denominator ) ) / unitDoseFormStrength; END
A description of each variable used in FNC_CALC_QTY
is contained below.
Variable | Description |
---|---|
doseQty |
the required dose quantity - e.g. 12.5 |
numerator |
the VMP strength numerator, but has to be expressed in the same units as the requested dose, e.g. both in milligrams |
denominator |
the VMP strength denominator which may be 0 / NULL for some VMPs, so use a default value of 1 |
unitDoseFormStrength |
the VMP unit dose form strength value, which may be 0 / NULL |