{
 "engine": {
  "version": "0.1.0",
  "sourceHash": "d1ed52fb",
  "tests": 156,
  "passed": 156,
  "run": "2026-10-12"
 },
 "vectors": [
  {
   "id": "V01",
   "function": "reconstitute",
   "description": "Whole units, mg entered",
   "inputs": {
    "vial": "10 mg",
    "liquid": "2 mL",
    "amount": "0.5 mg",
    "syringe": "U100_1"
   },
   "outputs": {
    "mg per mL": "5",
    "mL to draw": "0.1",
    "units": "10",
    "units shown": "10",
    "nearest mark": "none (marks not set)",
    "full draws in vial": "20"
   },
   "warnings": [],
   "steps": [
    "Concentration = 10 mg / 2 mL = 5 mg/mL (5000 mcg/mL).",
    "Your amount 0.5 mg = 500 mcg (0.5 mg).",
    "Volume = 500 mcg / 5000 mcg/mL = 0.1 mL.",
    "Units = 0.1 mL × 100 units/mL = 10 units on a U-100 syringe.",
    "Each unit holds 5000 mcg/mL / 100 units/mL = 50 mcg.",
    "Full doses in the vial = 10000 mcg / 500 mcg = 20, so 20 full doses.",
    "Left after the full doses: 0 mcg (0 mL)."
   ]
  },
  {
   "id": "V02",
   "function": "reconstitute",
   "description": "Same amount entered in mcg",
   "inputs": {
    "vial": "10 mg",
    "liquid": "2 mL",
    "amount": "500 mcg",
    "syringe": "U100_1"
   },
   "outputs": {
    "mg per mL": "5",
    "mL to draw": "0.1",
    "units": "10",
    "units shown": "10",
    "nearest mark": "none (marks not set)",
    "full draws in vial": "20"
   },
   "warnings": [],
   "steps": [
    "Concentration = 10 mg / 2 mL = 5 mg/mL (5000 mcg/mL).",
    "Your amount is 500 mcg (0.5 mg).",
    "Volume = 500 mcg / 5000 mcg/mL = 0.1 mL.",
    "Units = 0.1 mL × 100 units/mL = 10 units on a U-100 syringe.",
    "Each unit holds 5000 mcg/mL / 100 units/mL = 50 mcg.",
    "Full doses in the vial = 10000 mcg / 500 mcg = 20, so 20 full doses.",
    "Left after the full doses: 0 mcg (0 mL)."
   ]
  },
  {
   "id": "V03",
   "function": "reconstitute",
   "description": "Smaller barrel",
   "inputs": {
    "vial": "5 mg",
    "liquid": "1 mL",
    "amount": "0.25 mg",
    "syringe": "U100_0.5"
   },
   "outputs": {
    "mg per mL": "5",
    "mL to draw": "0.05",
    "units": "5",
    "units shown": "5",
    "nearest mark": "none (marks not set)",
    "full draws in vial": "20"
   },
   "warnings": [],
   "steps": [
    "Concentration = 5 mg / 1 mL = 5 mg/mL (5000 mcg/mL).",
    "Your amount 0.25 mg = 250 mcg (0.25 mg).",
    "Volume = 250 mcg / 5000 mcg/mL = 0.05 mL.",
    "Units = 0.05 mL × 100 units/mL = 5 units on a U-100 syringe.",
    "Each unit holds 5000 mcg/mL / 100 units/mL = 50 mcg.",
    "Full doses in the vial = 5000 mcg / 250 mcg = 20, so 20 full doses.",
    "Left after the full doses: 0 mcg (0 mL)."
   ]
  },
  {
   "id": "V04",
   "function": "reconstitute",
   "description": "Thirds stay exact (no float error)",
   "inputs": {
    "vial": "10 mg",
    "liquid": "3 mL",
    "amount": "1 mg",
    "syringe": "U100_1"
   },
   "outputs": {
    "mg per mL": "10/3",
    "mL to draw": "0.3",
    "units": "30",
    "units shown": "30",
    "nearest mark": "none (marks not set)",
    "full draws in vial": "10"
   },
   "warnings": [],
   "steps": [
    "Concentration = 10 mg / 3 mL = about 3.3333 mg/mL (about 3333.3333 mcg/mL).",
    "Your amount 1 mg = 1000 mcg (1 mg).",
    "Volume = 1000 mcg / about 3333.3333 mcg/mL = 0.3 mL.",
    "Units = 0.3 mL × 100 units/mL = 30 units on a U-100 syringe.",
    "Each unit holds about 3333.3333 mcg/mL / 100 units/mL = about 33.3333 mcg.",
    "Full doses in the vial = 10000 mcg / 1000 mcg = 10, so 10 full doses.",
    "Left after the full doses: 0 mcg (0 mL)."
   ]
  },
  {
   "id": "V05",
   "function": "reconstitute",
   "description": "Between two lines",
   "inputs": {
    "vial": "10 mg",
    "liquid": "3 mL",
    "amount": "0.5 mg",
    "syringe": "U100_1"
   },
   "outputs": {
    "mg per mL": "10/3",
    "mL to draw": "0.15",
    "units": "15",
    "units shown": "15",
    "nearest mark": "none (marks not set)",
    "full draws in vial": "20"
   },
   "warnings": [],
   "steps": [
    "Concentration = 10 mg / 3 mL = about 3.3333 mg/mL (about 3333.3333 mcg/mL).",
    "Your amount 0.5 mg = 500 mcg (0.5 mg).",
    "Volume = 500 mcg / about 3333.3333 mcg/mL = 0.15 mL.",
    "Units = 0.15 mL × 100 units/mL = 15 units on a U-100 syringe.",
    "Each unit holds about 3333.3333 mcg/mL / 100 units/mL = about 33.3333 mcg.",
    "Full doses in the vial = 10000 mcg / 500 mcg = 20, so 20 full doses.",
    "Left after the full doses: 0 mcg (0 mL)."
   ]
  },
  {
   "id": "V06",
   "function": "reconstitute",
   "description": "U-40 syringe reads fewer units for the same mL",
   "inputs": {
    "vial": "10 mg",
    "liquid": "2 mL",
    "amount": "0.5 mg",
    "syringe": "U40_1"
   },
   "outputs": {
    "mg per mL": "5",
    "mL to draw": "0.1",
    "units": "4",
    "units shown": "4",
    "nearest mark": "none (marks not set)",
    "full draws in vial": "20"
   },
   "warnings": [],
   "steps": [
    "Concentration = 10 mg / 2 mL = 5 mg/mL (5000 mcg/mL).",
    "Your amount 0.5 mg = 500 mcg (0.5 mg).",
    "Volume = 500 mcg / 5000 mcg/mL = 0.1 mL.",
    "Units = 0.1 mL × 40 units/mL = 4 units on a U-40 syringe.",
    "Each unit holds 5000 mcg/mL / 40 units/mL = 125 mcg.",
    "Full doses in the vial = 10000 mcg / 500 mcg = 20, so 20 full doses.",
    "Left after the full doses: 0 mcg (0 mL)."
   ]
  },
  {
   "id": "V07",
   "function": "reconstitute",
   "description": "Over the barrel capacity",
   "inputs": {
    "vial": "10 mg",
    "liquid": "2 mL",
    "amount": "3 mg",
    "syringe": "U100_0.3"
   },
   "outputs": {
    "mg per mL": "5",
    "mL to draw": "0.6",
    "units": "60",
    "units shown": "60",
    "nearest mark": "none (marks not set)",
    "full draws in vial": "3"
   },
   "warnings": [
    "OVER_SYRINGE"
   ],
   "steps": [
    "Concentration = 10 mg / 2 mL = 5 mg/mL (5000 mcg/mL).",
    "Your amount 3 mg = 3000 mcg (3 mg).",
    "Volume = 3000 mcg / 5000 mcg/mL = 0.6 mL.",
    "Units = 0.6 mL × 100 units/mL = 60 units on a U-100 syringe.",
    "Each unit holds 5000 mcg/mL / 100 units/mL = 50 mcg.",
    "Full doses in the vial = 10000 mcg / 3000 mcg = about 3.3333, so 3 full doses.",
    "Left after the full doses: 1000 mcg (0.2 mL)."
   ]
  },
  {
   "id": "V08",
   "function": "reconstitute",
   "description": "Under one unit",
   "inputs": {
    "vial": "10 mg",
    "liquid": "2 mL",
    "amount": "0.02 mg",
    "syringe": "U100_1"
   },
   "outputs": {
    "mg per mL": "5",
    "mL to draw": "0.004",
    "units": "0.4",
    "units shown": "0.4",
    "nearest mark": "none (marks not set)",
    "full draws in vial": "500"
   },
   "warnings": [
    "UNDER_ONE_UNIT"
   ],
   "steps": [
    "Concentration = 10 mg / 2 mL = 5 mg/mL (5000 mcg/mL).",
    "Your amount 0.02 mg = 20 mcg (0.02 mg).",
    "Volume = 20 mcg / 5000 mcg/mL = 0.004 mL.",
    "Units = 0.004 mL × 100 units/mL = 0.4 units on a U-100 syringe.",
    "Each unit holds 5000 mcg/mL / 100 units/mL = 50 mcg.",
    "That is less than one mark on this syringe.",
    "Full doses in the vial = 10000 mcg / 20 mcg = 500, so 500 full doses.",
    "Left after the full doses: 0 mcg (0 mL)."
   ]
  },
  {
   "id": "V09",
   "function": "reconstitute",
   "description": "More than the whole vial",
   "inputs": {
    "vial": "10 mg",
    "liquid": "2 mL",
    "amount": "20 mg",
    "syringe": "U100_1"
   },
   "outputs": {
    "mg per mL": "5",
    "mL to draw": "4",
    "units": "400",
    "units shown": "400",
    "nearest mark": "none (marks not set)",
    "full draws in vial": "0"
   },
   "warnings": [
    "OVER_SYRINGE",
    "OVER_VIAL"
   ],
   "steps": [
    "Concentration = 10 mg / 2 mL = 5 mg/mL (5000 mcg/mL).",
    "Your amount 20 mg = 20000 mcg (20 mg).",
    "Volume = 20000 mcg / 5000 mcg/mL = 4 mL.",
    "Units = 4 mL × 100 units/mL = 400 units on a U-100 syringe.",
    "Each unit holds 5000 mcg/mL / 100 units/mL = 50 mcg.",
    "Full doses in the vial = 10000 mcg / 20000 mcg = 0.5, so 0 full doses.",
    "Left after the full doses: 10000 mcg (2 mL)."
   ]
  },
  {
   "id": "V10",
   "function": "convert",
   "description": "Units to mg from the label strength",
   "inputs": {
    "units": "10",
    "label strength": "5 mg/mL",
    "syringe": "U100_1"
   },
   "outputs": {
    "mL": "0.1",
    "mg": "0.5",
    "mcg": "500"
   },
   "warnings": [],
   "steps": [
    "Volume = 10 units / 100 units/mL = 0.1 mL.",
    "Amount = 0.1 mL × 5 mg/mL = 0.5 mg.",
    "0.5 mg is 500 mcg.",
    "Each unit holds 50 mcg."
   ]
  },
  {
   "id": "V11",
   "function": "convert",
   "description": "mg to units from the label strength",
   "inputs": {
    "amount": "0.5 mg",
    "label strength": "5 mg/mL",
    "syringe": "U100_1"
   },
   "outputs": {
    "units": "10",
    "mL": "0.1"
   },
   "warnings": [],
   "steps": [
    "Volume = 0.5 mg / 5 mg/mL = 0.1 mL.",
    "Units = 0.1 mL × 100 units/mL = 10 units.",
    "0.5 mg is 500 mcg.",
    "Each unit holds 50 mcg."
   ]
  },
  {
   "id": "V12",
   "function": "liquidForUnits",
   "description": "Work backwards from the units you want to read",
   "inputs": {
    "vial": "10 mg",
    "amount": "0.5 mg",
    "units to read": "10",
    "syringe": "U100_1"
   },
   "outputs": {
    "liquid mL": "2",
    "mg per mL": "5"
   },
   "warnings": [],
   "steps": [
    "Volume per draw = 10 units / 100 units/mL = 0.1 mL.",
    "Concentration needed = 500 mcg / 0.1 mL = 5000 mcg/mL (5 mg/mL).",
    "Liquid to add = 10000 mcg / 5000 mcg/mL = 2 mL.",
    "2 mL is exact to 0.01 mL.",
    "Full doses in the vial = 10000 mcg / 500 mcg = 20."
   ]
  },
  {
   "id": "V13",
   "function": "liquidForConcentration",
   "description": "Liquid for a target strength",
   "inputs": {
    "vial": "10 mg",
    "strength": "5 mg/mL"
   },
   "outputs": {
    "liquid mL": "2"
   },
   "warnings": [],
   "steps": [
    "Liquid to add = 10 mg / 5 mg/mL = 2 mL (2 mL to 0.01 mL)."
   ]
  }
 ]
}
