10 min readLab owners, managers, senior technicians, and catalog admins.

Tests catalog

Create tests with bilingual names, codes, sample type, turnaround time, result mode, parameters, and reporting settings.

Why the Tests catalog matters

The Tests catalog is the foundation for order creation, sample labels, reference ranges, result entry, report layout, public website browsing, pricing, packages, and lab-to-lab work. A test that is configured carefully can move from reception to final report with very little manual correction. A test that is configured loosely creates repeated problems for reception, technicians, reviewers, and patients.

Use this page when you need to create a new test, update a test name or code, configure sample and processing requirements, define reference behavior, or attach reusable preparation requirements.

General settings

The first section defines the identity of the test. The Code Name must be unique within your lab because it is used in formulas, result logic, search, and operational references. Use stable lab codes such as CBC, ALT, FBS, or TSH instead of changing marketing names.

Keep the English name accurate because Kashef displays laboratory test names in English across order entry, samples, results, reports, invoices, worksheets, partner pages, and patient-facing pages. Arabic interface labels and instructions still follow the selected language, but a Test name is never replaced with name_ar. The Arabic name remains available for catalog compatibility and integrations. Historical orders use the captured English snapshot when available, then a legacy English name, code, or Unnamed Test when necessary. The category controls where the test appears in browsing and reporting lists. The test type decides whether the record is a single test, a profile that includes other tests, or the built-in CBC. Lab Unit links the test to a unit such as Hematology so reports can group it under that unit with the unit manager's signature; see Lab units.

Turnaround time sets the expected completion window in hours. Available for Ordering controls whether reception can add the test to new orders.

The built-in CBC

The Complete Blood Count is a built-in test type because its report is different from other tests. To add it, open Catalog > Tests and choose Add built-in CBC (or pick CBC (built-in) as the type when creating a test). Kashef starts it with these parameters, which you can then change to match how your lab reports a CBC:

  • Red blood cells: Hemoglobin, RBC count, Hematocrit, MCV, MCH, MCHC, RDW-CV, RDW-SD.
  • White blood cells: Total leucocytic count (WBC).
  • Differential: Neutrophils, Stab (Band) Neutrophils, Segmented Neutrophils, Lymphocytes, Monocytes, Eosinophils, and Basophils, each as a percentage and an absolute count. The absolute count is filled in from WBC × % automatically.
  • Platelets: Platelet count, MPV, PDW, Plateletcrit (PCT), P-LCR, and P-LCC.

Some results are calculated for you from the others:

Result Calculated as
Hematocrit (HCT) RBC × MCV ÷ 10
MCH Hemoglobin × 10 ÷ RBC
MCHC Hemoglobin × 100 ÷ Hematocrit
Plateletcrit (PCT) Platelets × MPV ÷ 10,000
Neutrophils % Stab % + Segmented %

MCV, RDW-SD, PDW, MPV, P-LCR and P-LCC are measured by the analyzer from its histograms, so they are always entered or sent by the analyzer. Values sent by an analyzer are always kept as sent, even for calculated results. To stop calculating a result, clear its Formula in Result Parameters.

Reference ranges are added by age (newborn, first month, infancy, childhood, adolescence, adult) and by sex where they differ, so children are flagged against children's values.

Customize your CBC

Every lab writes its CBC differently, so open the Result Parameters tab to make it your own. It works like any test with several results (see below):

  • Rename parameters in English and Arabic, change units, decimal places and reference ranges.
  • Add parameters (for example Reticulocytes or Band cells), remove the ones you do not report, and move parameters and section headings up or down to change the print order.
  • Rename, add or remove section headings. Headings are highlighted in the list so you can find them quickly.

The Differential count section (shown in blue) holds the white cell differential. Move the whole section anywhere in the list; the cells below it, up to the next heading, belong to it. For each cell choose Differential value:

  • Percentage (%) — the percentages of the section must add up to 100% before the CBC can be released. The worksheet shows the running total. Stab and Segmented make up Neutrophils, so they are counted once, through Neutrophils.
  • Absolute count — filled in automatically as WBC × % ÷ 100 from its percentage. A code ending in _ABS uses the percentage whose code ends in _PCT (NEUT_ABS uses NEUT_PCT); any other code uses the percentage with the same English name. If no single percentage fits, saving the test asks you to fix it. Leave it out if your lab reports percentages only.

A CBC has one differential section. Keep a parameter with the code WBC if you report absolute counts. The codes WBC, RBC and PLT cannot be changed because absolute counts and analyzer histograms use them. Analyzers without their own code mapping send results by parameter code, so update the mapping in Instrument Management when you add or recode a parameter.

The worksheet and the printed CBC follow your order. Results already entered for a parameter keep it in past reports even after you remove it.

The printed CBC page can also show the WBC, RBC and PLT histograms. Histograms are measured by the CBC analyzer, so Kashef shows them only when the analyzer sends them; they are never estimated from the indices. When a histogram arrives, it appears on the result worksheet and on the printed report. When results are typed by hand, or the analyzer does not send histograms, the CBC prints without them. To have them arrive, map the analyzer's histogram codes to the CBC's WBC, RBC and PLT parameters in Instrument Management (see Device inbox). To hide or restyle them, open the built-in CBC Report template in Report Templates.

Add interpretation rules to the CBC (for example "Hemoglobin is low → Anemia") so the CBC comment is written for you. Remarks such as a blood film description go in the CBC comment.

If your catalog already has a CBC you built yourself (for example a profile of WBC, RBC, Hemoglobin and Platelets), the button is called Switch to built-in CBC. Keep Replace existing CBC selected: the built-in CBC takes over its code, price, category, and lab unit, so every new order for CBC uses the built-in test. The old test is renamed with "-OLD" and switched off; past orders are not changed. If the old CBC was part of a package, add the new CBC to that package.

The type of a CBC test cannot be changed after it is created.

Tests with several results (parameters)

Some tests report many results under one name, such as Complete Urine Analysis, Stool Analysis, Semen Analysis, PT with INR, or a body fluid examination. Build these as a single test and add its results in the Result Parameters tab.

Results and section headings share one list, in the order they print. Choose Add parameter or section heading:

  • A Section heading groups the parameters below it, up to the next heading, under a printed heading such as Physical Examination, Chemical Examination, or Microscopic Examination. Give it an English and an optional Arabic heading.
  • A Parameter is one result of the test, with:
    • Code — a short code such as PUS_CELLS. Formulas use it.
    • Name (English) prints on the report; Name (Arabic) is optional.
    • Unit and Decimals control how the result prints.
    • Formula (optional) calculates the parameter from the other parameters of the same test, for example PR + NP for total motility, CONCENTRATION * VOLUME for total sperm count, or pow(PT_PATIENT / PT_CONTROL, PT_ISI) for INR. Calculated parameters fill in automatically. On the results sheet, staff see which results a value is calculated from and can choose Enter manually to type it instead.
    • Image result makes the parameter an image instead of a value, such as the electrophoresis graph. Staff attach it on the results sheet or the analyzer sends it, and it prints across the report table. An image result has no unit, decimals, formula or reference ranges.
    • Hide from results report keeps a parameter off the printed report and the patient, doctor and partner portals, such as a working value used only to calculate another result. Staff still enter it on the results sheet and formulas still use it.
    • Reference Ranges belong to each parameter. Use List of Values for results picked from a list (for example Absent, Trace, (+), (++) with Absent marked normal) so staff choose the value instead of typing it and abnormal choices are flagged.

Move a heading or a parameter with its arrows to change where it prints; parameters above the first heading, or below a heading left empty, print without a section. On the worksheet each such test has its own block with its own comment and release, and on the report it prints under its test name, with its sections and comment, in the report template that collects it. When a test has parameters, its ranges and formula are set per parameter, so the test-level Reference Ranges and Calculated Formula tabs are hidden.

Turn on Draw a curve on the report for a test whose results are measured over time, such as the Oral Glucose Tolerance Test. The report then prints a line chart of its numeric results in parameter order (for example fasting, 60 min and 120 min) under the test.

Profiles and included tests

When the test type is profile, the Profile Composition section requires at least one active single test and lets you drag components into their clinical display order. Use profiles for groups that should be ordered together, such as a lipid profile or liver profile.

Do not duplicate the same single test inside a profile. Do not create a profile when a package is more appropriate. A profile is clinical composition; a package is commercial bundling and pricing.

Sample settings

Sample Settings define which sample and tube combinations can be used. Each row has the sample type and the tube or container. The first row is the primary combination used by automatic planning; additional rows are accepted alternatives.

Volume used per test is optional. Leave it blank for routine tests: the test then uses its tube's default per-test volume (for example 50 µL of serum), so many tests share one tube. Enter a value only when the test needs more, such as 0.5 mL. This is the amount the analyzer consumes, not the amount to draw — the draw volume is set once on the tube type. See Sample types for tubes and containers.

Use sample types that already exist whenever possible. If you create a new sample type inline, give it a clear name because it will appear in the Sample Log and barcode workflows.

Processing settings

Processing settings now focus on decisions that are not already owned by Sample Settings:

  • Processing Workflow: choose In-house when the test is performed inside your laboratory, or Partner Lab when it is sent out. You do not pick the partner here: add the test to the partner's Tests & Prices list in CRM > Partner Labs. When several partners list it, the sending branch's priority decides where it goes. The form shows which partners currently list the test.
  • Sample Retention After Completion (Days): define how long physical material must be kept after results are submitted or the sample is rejected. When one sample contains several tests, Kashef uses the longest configured period to calculate its EOL. Leave it blank to use the lab's Default sample retention from Lab Settings.
  • Collection & Stability: enter the collection amount and display unit used in order guidance, then select the transport temperature and validated stability window in hours. The volume consumed by planning stays in Sample Settings, so staff do not have to maintain it twice.
  • Preparation & Sample Use: choose one main preparation workflow, add a short controlled detail when needed, and record fasting in hours. Mark a dedicated sample only when sharing is prohibited. Allow aliquots only when the procedure permits them, then mark Requires Aliquot when separation is mandatory. Tick Collection sensitivities such as hemolysis-sensitive, protect from light, transport on ice, or record the exact collection time; the technician must confirm each one before marking the sample collected.

Write both patient and collector instructions in English and Arabic. Patient instructions should explain what the patient must do before collection. Collector instructions should cover identity checks, collection, labeling, mixing or clotting, temperature, transport, and processing. Patient instructions appear in Patient preparation when the order is created; collector instructions appear in the Sample Collection Workbench, where the technician confirms them. Both are captured on the planned sample so later staff use the rules that applied when it was created.

Kashef keeps the primary sample type, container, and consumed volume synchronized from the first Sample Settings row when the test is saved. Catalog JSON export and import preserve these structured collection rules by sample code and container name, making the configuration portable without carrying branch-specific database identifiers.

Reference and interpretation setup

The reference unit is the default unit used for result interpretation. Reference ranges and interpretation rules use this setup to evaluate results during entry and review. The unit is optional: leave it empty for tests that have no unit, such as ratios, titers or qualitative results, and no unit prints beside the result or its normal range.

Interpretation rules write the results comment automatically, from top to bottom. Each rule has a condition and a comment:

  • The result flag is — matches when the result is Abnormal (any), High, Low, Critical, or Normal. This is the easiest rule for list results, for example "Protein is abnormal → Proteinuria".
  • The result equals — matches an exact value, for example Calcium Oxalate.
  • The result is between — matches a numeric range.
  • A reference block condition — compares the result with a value for one reference block.
  • Always — always adds the comment, for example a method note.

On a test with parameters, choose the Parameter a rule reads; save new parameters first so they appear in the list. Keep comments clinically clear; staff can still edit the comment before release.

Calculated formulas

Calculated Formula Settings derive a numeric result from other test results or the patient's age or sex-at-birth encoding, for example LDL from Cholesterol, HDL and Triglycerides, or eGFR from creatinine, age and sex. Enable the calculation, declare the produced result unit and the decimal places, write the expression, and map every uppercase variable to one same-laboratory test or supported demographic source. For test dependencies, declare the unit the formula expects. That contract must match the dependency's configured result/reference unit, and the produced unit must match this test's reference ranges.

Kashef validates formula syntax, unknown variables, duplicate mappings, cross-laboratory references, unit mismatches, self-dependencies, and indirect calculation cycles before saving an active definition. Every material change creates a numbered immutable version; unchanged saves do not. Results retain the exact version and definition hash used for traceability. Disabling calculation returns the test to direct entry but preserves earlier definitions and versions. If a required dependency is not ordered or has no numeric result, no calculated result is saved, so order calculated tests together with the tests they read (profiles such as Lipid Profile do this for you).

Use the formula sandbox with sample values before live use. Formulas support + - * / ^, parentheses, a ? b : c, and the functions min, max, pow, abs, round, sqrt, log, log10, exp, floor, and ceil. Enable accountable override only when laboratory policy allows authorized staff to replace an automatic value; the result retains override metadata for review.

HOMA2 formulas

Kashef includes the Oxford HOMA2 model (the same calculation as the Oxford HOMA2 Calculator v2.2.3), so HOMA2-IR, beta-cell function (%B) and insulin sensitivity (%S) can be calculated instead of copied from another program. Each function takes fasting glucose in mmol/L and the fasting peptide in the model's units:

Result With insulin (pmol/L) With C-peptide (nmol/L)
HOMA2-IR homa2_ir(glucose, insulin) homa2_ir_cpeptide(glucose, cpeptide)
Beta-cell function (%B) homa2_b(glucose, insulin) homa2_b_cpeptide(glucose, cpeptide)
Insulin sensitivity (%S) homa2_s(glucose, insulin) homa2_s_cpeptide(glucose, cpeptide)

If your results are in conventional units, convert them inside the formula with the calculator's factors: glucose mg/dL × 0.0555, insulin µIU/mL × 6.945, C-peptide ng/mL × 0.333. For example, with GLU mapped to fasting glucose (mg/dL) and INS to fasting insulin (µIU/mL), HOMA2-IR is homa2_ir(GLU * 0.0555, INS * 6.945).

The model accepts glucose from 3 to 25 mmol/L (54 to 450 mg/dL), insulin from 20 to 400 pmol/L (about 2.9 to 57.6 µIU/mL) and C-peptide from 0.2 to 3.5 nmol/L. Outside these ranges no HOMA2 result is calculated, as with the Oxford calculator.

Requirements

The Test Requirements section attaches reusable instructions such as fasting, medication, sample timing, or preparation notes. These requirements appear during order creation so reception must mark each one Met, Unmet, or Proceed anyway (with a reason) before creating the order.

Use reusable requirements instead of typing preparation instructions repeatedly into order notes.

Before making a test active

Before turning a test on for ordering, confirm code, names, category, type, turnaround time, sample tube, processing rules, reference unit, reference ranges, pricing, requirements, and report behavior. Then create a test order in a safe environment or with a controlled workflow and verify sample creation, result entry, and report output.