Lab Result Interpreter
Overview
Pull laboratory Observation resources for a patient. Organize by panel type (CBC, BMP, CMP, liver, lipids, thyroid, coagulation, urinalysis). Flag abnormal values using the interpretation field and referenceRange. Calculate delta checks against prior results to detect clinically significant changes. Identify critical values requiring immediate action. Correlate abnormal patterns with differential diagnoses. Present results in structured clinical format with trend analysis.
FHIR Resources Used
| Resource |
Purpose |
Key Fields |
| Observation |
Lab results |
code, valueQuantity, interpretation, referenceRange, effectiveDateTime, status, component |
| Condition |
Clinical correlation |
code, clinicalStatus, onsetDateTime |
| MedicationStatement |
Drug-lab correlation |
medicationCodeableConcept, status, effectivePeriod |
| Patient |
Age/sex for reference ranges |
birthDate, gender |
Instructions
Step 1: Retrieve Patient Demographics
Tool: fhir_read
resourceType: "Patient"
id: "[patient-id]"
Extract birthDate (calculate age) and gender. These determine reference range selection -- many analytes have age- and sex-specific ranges.
Step 2: Pull Recent Laboratory Observations
Tool: fhir_search
resourceType: "Observation"
queryParams: "patient=[patient-id]&category=laboratory&date=ge[target-date]&_sort=-date&_count=200"
If user requests a specific panel, narrow with LOINC codes:
- CBC panel:
code=58410-2
- BMP:
code=51990-0
- CMP:
code=24323-8
- Liver panel:
code=24325-3
- Lipid panel:
code=57698-3
- Thyroid panel:
code=3016-3,3026-2,3024-7
Default date range: ge[30-days-ago] unless user specifies otherwise.
Step 3: Organize Results by Panel Category
Group Observations by code.coding LOINC into:
- CBC: WBC (26464-8), RBC (789-8), Hemoglobin (718-7), Hematocrit (4544-3), MCV (787-2), MCH (785-6), MCHC (786-4), RDW (788-0), Platelets (777-3), MPV (32623-1), Differential (WBC subtypes)
- BMP/CMP: Sodium (2951-2), Potassium (2823-3), Chloride (2075-0), CO2 (1963-8), BUN (3094-0), Creatinine (2160-0), Glucose (2345-7), Calcium (17861-6), Albumin (1751-7), Total Protein (2885-2), ALP (6768-6), ALT (1742-6), AST (1920-8), Bilirubin Total (1975-2)
- Liver: ALT (1742-6), AST (1920-8), ALP (6768-6), GGT (2324-2), Bilirubin Total (1975-2), Bilirubin Direct (1968-7), Albumin (1751-7)
- Lipids: Total Cholesterol (2093-3), LDL (18262-6), HDL (2085-9), Triglycerides (2571-8), VLDL (13457-7)
- Thyroid: TSH (3016-3), Free T4 (3024-7), Free T3 (3026-2)
- Coagulation: PT (5902-2), INR (6301-6), aPTT (3173-2), Fibrinogen (3255-7), D-dimer (48066-5)
- Urinalysis: specific gravity (5811-5), pH (5803-2), protein (5804-0), glucose (5792-7), ketones (5797-6), blood (5794-3)
Step 4: Flag Abnormal Values
For each Observation:
- Check
interpretation.coding.code:
H = High, L = Low, HH = Critical High, LL = Critical Low, A = Abnormal
- If no interpretation present, compare
valueQuantity.value against referenceRange[0].low.value and referenceRange[0].high.value
- Classify severity:
- Normal: within reference range
- Abnormal: outside reference range but not critical
- Critical: matches critical value thresholds (see references/critical-values.md)
- For critical values, prepend
[CRITICAL] tag and include recommended immediate action
Step 5: Calculate Delta Checks
For each abnormal result, pull the prior value:
Tool: fhir_search
resourceType: "Observation"
queryParams: "patient=[patient-id]&code=[loinc-code]&_sort=-date&_count=5"
Calculate:
- Absolute change: current - previous
- Percent change: ((current - previous) / previous) * 100
- Rate of change per unit time
Flag significant deltas:
- Hemoglobin drop > 2 g/dL
- Potassium change > 1.0 mEq/L
- Creatinine increase > 0.3 mg/dL or > 50% from baseline (AKI criteria)
- Platelet drop > 50% (consider HIT if on heparin)
- Sodium change > 8 mEq/L in 24 hours (osmotic demyelination risk)
Step 6: Identify Abnormal Patterns and Differentials
Cross-reference abnormal values to detect clinical patterns:
- Elevated AST + ALT, AST/ALT > 2: alcoholic hepatitis pattern
- Elevated AST + ALT, AST/ALT < 1: non-alcoholic/viral hepatitis pattern
- Elevated ALP + GGT, normal AST/ALT: cholestatic pattern
- Elevated BUN/Creatinine ratio > 20: prerenal azotemia
- Low MCV + low ferritin: iron deficiency anemia
- High MCV + low B12 or folate: megaloblastic anemia
- Pancytopenia (low WBC + Hgb + Plt): bone marrow failure workup
- Elevated troponin + CK-MB: myocardial injury
- Elevated TSH + low Free T4: primary hypothyroidism
- Low TSH + high Free T4: hyperthyroidism
- Elevated anion gap: MUDPILES (Methanol, Uremia, DKA, Propylene glycol, Isoniazid/Iron, Lactic acidosis, Ethylene glycol, Salicylates)
See references/lab-patterns.md for comprehensive pattern list.
Step 7: Correlate with Medications and Conditions
Tool: fhir_search
resourceType: "Condition"
queryParams: "patient=[patient-id]&clinical-status=active"
Tool: fhir_search
resourceType: "MedicationStatement"
queryParams: "patient=[patient-id]&status=active"
Common drug-lab interactions to check:
- Metformin + elevated lactate: lactic acidosis risk
- Statins + elevated CK/ALT: myopathy or hepatotoxicity
- ACE inhibitors + elevated potassium/creatinine: expected pharmacologic effect vs toxicity
- Warfarin + INR: therapeutic monitoring
- Lithium + renal function + thyroid: toxicity screening
- Heparin + platelet drop: HIT screening
Step 8: Format Output
LAB RESULTS INTERPRETATION -- [Patient Name] -- [Date Range]
=============================================================
CBC (collected [date])
WBC: 8.2 x10^3/uL [4.5-11.0] NORMAL
Hemoglobin: 9.1 g/dL [12.0-16.0] LOW [was 11.2 on MM/DD, delta -2.1]
Hematocrit: 27.3% [36.0-46.0] LOW
Platelets: 145 x10^3/uL [150-400] LOW (borderline)
MCV: 72 fL [80-100] LOW
PATTERN: Microcytic anemia with dropping hemoglobin
- Iron studies recommended to evaluate for iron deficiency
- Delta check: Hgb dropped 2.1 g/dL -- clinically significant
BMP (collected [date])
Potassium: 6.1 mEq/L [3.5-5.0] [CRITICAL] HIGH
Immediate action: Verify specimen (check for hemolysis), obtain ECG,
consider calcium gluconate if ECG changes present
[... additional panels ...]
CLINICAL CORRELATIONS
=====================
- Microcytic anemia: correlate with iron studies, consider GI evaluation
- Critical potassium: patient on lisinopril 20mg -- ACE inhibitor contributing factor
- Recommend: hold ACE inhibitor, repeat potassium stat, ECG
TRENDING SUMMARY
================
Hemoglobin: 12.1 -> 11.2 -> 9.1 (declining over 3 months)
Creatinine: 1.0 -> 1.1 -> 1.0 (stable)
Examples
Example 1: Routine Lab Review
User says: "Review labs for patient 55123 from the last month"
Actions:
fhir_read Patient/55123 -- returns 62-year-old male
fhir_search Observation?patient=55123&category=laboratory&date=ge[30-days-ago]&_sort=-date&_count=200 -- returns 18 Observations: CMP, CBC, lipid panel
fhir_search Observation?patient=55123&code=718-7&_sort=-date&_count=5 -- prior hemoglobin values for delta check
fhir_search Condition?patient=55123&clinical-status=active -- returns Type 2 DM, hypertension
fhir_search MedicationStatement?patient=55123&status=active -- returns metformin, lisinopril, atorvastatin
Result: Structured lab report showing CMP within normal limits, CBC with mild normocytic anemia (Hgb 11.8, stable from prior 11.9), lipid panel at goal on statin (LDL 68). Note: HbA1c 7.8% -- above ADA target for most adults. Recommend diabetes medication optimization. Correlate metformin with normal lactate. Atorvastatin with normal ALT/AST.
Example 2: Critical Value Detection
User says: "What do the latest labs show for patient emr-9981?"
Actions:
fhir_read Patient/emr-9981 -- returns 45-year-old female
fhir_search Observation?patient=emr-9981&category=laboratory&_sort=-date&_count=200 -- returns recent labs with potassium 2.4 mEq/L (interpretation: LL), sodium 118 mEq/L (interpretation: LL)
fhir_search Observation?patient=emr-9981&code=2823-3&_sort=-date&_count=5 -- prior potassium values
fhir_search Observation?patient=emr-9981&code=2951-2&_sort=-date&_count=5 -- prior sodium values
fhir_search MedicationStatement?patient=emr-9981&status=active -- returns furosemide, SSRI
Result:
[CRITICAL] Potassium: 2.4 mEq/L (ref 3.5-5.0) -- Critical low
Prior: 3.8 mEq/L (2 weeks ago) -- delta -1.4 mEq/L
Action: Obtain ECG stat, IV potassium replacement, hold furosemide
Correlation: furosemide 40mg daily -- likely causative
[CRITICAL] Sodium: 118 mEq/L (ref 136-145) -- Critical low
Prior: 134 mEq/L (2 weeks ago) -- delta -16 mEq/L
Action: Assess volume status, check serum osmolality, urine sodium/osmolality
Correlation: SSRI (sertraline) -- SIADH risk factor. Furosemide -- additional contributor
Caution: Correct sodium no faster than 8 mEq/L per 24 hours (osmotic demyelination risk)
Example 3: Trend Analysis Request
User says: "Show me the creatinine trend for patient 7742 over the past year"
Actions:
fhir_read Patient/7742 -- returns 71-year-old male
fhir_search Observation?patient=7742&code=2160-0&date=ge[1-year-ago]&_sort=date -- returns 6 creatinine values over 12 months
fhir_search Condition?patient=7742&clinical-status=active -- returns CKD stage 3, hypertension, diabetes
Result:
CREATININE TREND -- Patient 7742 (71M, CKD Stage 3)
====================================================
2024-02: 1.4 mg/dL (eGFR ~49)
2024-04: 1.5 mg/dL (eGFR ~45)
2024-06: 1.6 mg/dL (eGFR ~42)
2024-08: 1.5 mg/dL (eGFR ~45)
2024-10: 1.8 mg/dL (eGFR ~36)
2025-01: 2.1 mg/dL (eGFR ~30)
Trajectory: declining eGFR, accelerating in last 3 months
Rate of decline: ~13 mL/min/1.73m2 per year (rapid, threshold >5)
Pattern: Progression from CKD Stage 3a to Stage 3b
Action: Nephrology referral, review nephrotoxic medications, check urine albumin
Troubleshooting
No Laboratory Observations Returned
- Confirm
category=laboratory is supported by the FHIR server. Some servers use category=http://terminology.hl7.org/CodeSystem/observation-category|laboratory as the full system URL.
- Widen the date range. Default
ge[30-days-ago] may miss infrequent labs.
- Search without category filter and inspect returned Observation categories to determine what values the server uses.
Observation Has No referenceRange
- Not all FHIR servers populate
referenceRange. Fall back to standard reference ranges by age and sex from references/reference-ranges.md.
- Check if the Observation uses
interpretation coding instead -- this may be the only abnormal flag available.
Panel Observations vs Individual Observations
- Some servers return panels as a single Observation with
component array (e.g., CBC panel LOINC 58410-2 with WBC, RBC, etc. as components). Others return each analyte as a separate Observation.
- Check for
hasMember references on panel-level Observations that point to individual result Observations.
- Always check both
valueQuantity on the parent and component[].valueQuantity to capture all results.
Delta Check Returns Only One Value
- Patient may be new to the system. Note "no prior value available for comparison" and skip delta calculation.
- Try extending
_count parameter or removing date filter to find historical values.
Related Skills
critical-value-alert-generator -- for structured critical value alerting and notification workflows
diabetes-panel-review -- for focused diabetes lab interpretation with ADA guideline application
renal-function-dashboard -- for comprehensive renal function assessment and CKD staging
preoperative-lab-checklist -- for evaluating lab readiness before surgical procedures
Converted and distributed by TomeVault — claim your Tome and manage your conversions.
1---2name: langcare-langcare-mcp-fhir-lab-result-interpreter3description: Lab Result Interpreter4---56# Lab Result Interpreter78## Overview910Pull laboratory Observation resources for a patient. Organize by panel type (CBC, BMP, CMP, liver, lipids, thyroid, coagulation, urinalysis). Flag abnormal values using the `interpretation` field and `referenceRange`. Calculate delta checks against prior results to detect clinically significant changes. Identify critical values requiring immediate action. Correlate abnormal patterns with differential diagnoses. Present results in structured clinical format with trend analysis.1112## FHIR Resources Used1314| Resource | Purpose | Key Fields |15|----------|---------|------------|16| Observation | Lab results | code, valueQuantity, interpretation, referenceRange, effectiveDateTime, status, component |17| Condition | Clinical correlation | code, clinicalStatus, onsetDateTime |18| MedicationStatement | Drug-lab correlation | medicationCodeableConcept, status, effectivePeriod |19| Patient | Age/sex for reference ranges | birthDate, gender |2021## Instructions2223### Step 1: Retrieve Patient Demographics2425```26Tool: fhir_read27resourceType: "Patient"28id: "[patient-id]"29```3031Extract `birthDate` (calculate age) and `gender`. These determine reference range selection -- many analytes have age- and sex-specific ranges.3233### Step 2: Pull Recent Laboratory Observations3435```36Tool: fhir_search37resourceType: "Observation"38queryParams: "patient=[patient-id]&category=laboratory&date=ge[target-date]&_sort=-date&_count=200"39```4041If user requests a specific panel, narrow with LOINC codes:42- CBC panel: `code=58410-2`43- BMP: `code=51990-0`44- CMP: `code=24323-8`45- Liver panel: `code=24325-3`46- Lipid panel: `code=57698-3`47- Thyroid panel: `code=3016-3,3026-2,3024-7`4849Default date range: `ge[30-days-ago]` unless user specifies otherwise.5051### Step 3: Organize Results by Panel Category5253Group Observations by `code.coding` LOINC into:54- **CBC**: WBC (26464-8), RBC (789-8), Hemoglobin (718-7), Hematocrit (4544-3), MCV (787-2), MCH (785-6), MCHC (786-4), RDW (788-0), Platelets (777-3), MPV (32623-1), Differential (WBC subtypes)55- **BMP/CMP**: Sodium (2951-2), Potassium (2823-3), Chloride (2075-0), CO2 (1963-8), BUN (3094-0), Creatinine (2160-0), Glucose (2345-7), Calcium (17861-6), Albumin (1751-7), Total Protein (2885-2), ALP (6768-6), ALT (1742-6), AST (1920-8), Bilirubin Total (1975-2)56- **Liver**: ALT (1742-6), AST (1920-8), ALP (6768-6), GGT (2324-2), Bilirubin Total (1975-2), Bilirubin Direct (1968-7), Albumin (1751-7)57- **Lipids**: Total Cholesterol (2093-3), LDL (18262-6), HDL (2085-9), Triglycerides (2571-8), VLDL (13457-7)58- **Thyroid**: TSH (3016-3), Free T4 (3024-7), Free T3 (3026-2)59- **Coagulation**: PT (5902-2), INR (6301-6), aPTT (3173-2), Fibrinogen (3255-7), D-dimer (48066-5)60- **Urinalysis**: specific gravity (5811-5), pH (5803-2), protein (5804-0), glucose (5792-7), ketones (5797-6), blood (5794-3)6162### Step 4: Flag Abnormal Values6364For each Observation:651. Check `interpretation.coding.code`:66 - `H` = High, `L` = Low, `HH` = Critical High, `LL` = Critical Low, `A` = Abnormal672. If no interpretation present, compare `valueQuantity.value` against `referenceRange[0].low.value` and `referenceRange[0].high.value`683. Classify severity:69 - **Normal**: within reference range70 - **Abnormal**: outside reference range but not critical71 - **Critical**: matches critical value thresholds (see references/critical-values.md)724. For critical values, prepend `[CRITICAL]` tag and include recommended immediate action7374### Step 5: Calculate Delta Checks7576For each abnormal result, pull the prior value:7778```79Tool: fhir_search80resourceType: "Observation"81queryParams: "patient=[patient-id]&code=[loinc-code]&_sort=-date&_count=5"82```8384Calculate:85- Absolute change: current - previous86- Percent change: ((current - previous) / previous) * 10087- Rate of change per unit time8889Flag significant deltas:90- Hemoglobin drop > 2 g/dL91- Potassium change > 1.0 mEq/L92- Creatinine increase > 0.3 mg/dL or > 50% from baseline (AKI criteria)93- Platelet drop > 50% (consider HIT if on heparin)94- Sodium change > 8 mEq/L in 24 hours (osmotic demyelination risk)9596### Step 6: Identify Abnormal Patterns and Differentials9798Cross-reference abnormal values to detect clinical patterns:99100- **Elevated AST + ALT, AST/ALT > 2**: alcoholic hepatitis pattern101- **Elevated AST + ALT, AST/ALT < 1**: non-alcoholic/viral hepatitis pattern102- **Elevated ALP + GGT, normal AST/ALT**: cholestatic pattern103- **Elevated BUN/Creatinine ratio > 20**: prerenal azotemia104- **Low MCV + low ferritin**: iron deficiency anemia105- **High MCV + low B12 or folate**: megaloblastic anemia106- **Pancytopenia (low WBC + Hgb + Plt)**: bone marrow failure workup107- **Elevated troponin + CK-MB**: myocardial injury108- **Elevated TSH + low Free T4**: primary hypothyroidism109- **Low TSH + high Free T4**: hyperthyroidism110- **Elevated anion gap**: MUDPILES (Methanol, Uremia, DKA, Propylene glycol, Isoniazid/Iron, Lactic acidosis, Ethylene glycol, Salicylates)111112See references/lab-patterns.md for comprehensive pattern list.113114### Step 7: Correlate with Medications and Conditions115116```117Tool: fhir_search118resourceType: "Condition"119queryParams: "patient=[patient-id]&clinical-status=active"120```121122```123Tool: fhir_search124resourceType: "MedicationStatement"125queryParams: "patient=[patient-id]&status=active"126```127128Common drug-lab interactions to check:129- Metformin + elevated lactate: lactic acidosis risk130- Statins + elevated CK/ALT: myopathy or hepatotoxicity131- ACE inhibitors + elevated potassium/creatinine: expected pharmacologic effect vs toxicity132- Warfarin + INR: therapeutic monitoring133- Lithium + renal function + thyroid: toxicity screening134- Heparin + platelet drop: HIT screening135136### Step 8: Format Output137138```139LAB RESULTS INTERPRETATION -- [Patient Name] -- [Date Range]140=============================================================141142CBC (collected [date])143 WBC: 8.2 x10^3/uL [4.5-11.0] NORMAL144 Hemoglobin: 9.1 g/dL [12.0-16.0] LOW [was 11.2 on MM/DD, delta -2.1]145 Hematocrit: 27.3% [36.0-46.0] LOW146 Platelets: 145 x10^3/uL [150-400] LOW (borderline)147 MCV: 72 fL [80-100] LOW148149PATTERN: Microcytic anemia with dropping hemoglobin150 - Iron studies recommended to evaluate for iron deficiency151 - Delta check: Hgb dropped 2.1 g/dL -- clinically significant152153BMP (collected [date])154 Potassium: 6.1 mEq/L [3.5-5.0] [CRITICAL] HIGH155 Immediate action: Verify specimen (check for hemolysis), obtain ECG,156 consider calcium gluconate if ECG changes present157158[... additional panels ...]159160CLINICAL CORRELATIONS161=====================162- Microcytic anemia: correlate with iron studies, consider GI evaluation163- Critical potassium: patient on lisinopril 20mg -- ACE inhibitor contributing factor164- Recommend: hold ACE inhibitor, repeat potassium stat, ECG165166TRENDING SUMMARY167================168Hemoglobin: 12.1 -> 11.2 -> 9.1 (declining over 3 months)169Creatinine: 1.0 -> 1.1 -> 1.0 (stable)170```171172## Examples173174### Example 1: Routine Lab Review175176**User says:** "Review labs for patient 55123 from the last month"177178**Actions:**1791. `fhir_read` Patient/55123 -- returns 62-year-old male1802. `fhir_search` Observation?patient=55123&category=laboratory&date=ge[30-days-ago]&_sort=-date&_count=200 -- returns 18 Observations: CMP, CBC, lipid panel1813. `fhir_search` Observation?patient=55123&code=718-7&_sort=-date&_count=5 -- prior hemoglobin values for delta check1824. `fhir_search` Condition?patient=55123&clinical-status=active -- returns Type 2 DM, hypertension1835. `fhir_search` MedicationStatement?patient=55123&status=active -- returns metformin, lisinopril, atorvastatin184185**Result:** Structured lab report showing CMP within normal limits, CBC with mild normocytic anemia (Hgb 11.8, stable from prior 11.9), lipid panel at goal on statin (LDL 68). Note: HbA1c 7.8% -- above ADA target for most adults. Recommend diabetes medication optimization. Correlate metformin with normal lactate. Atorvastatin with normal ALT/AST.186187### Example 2: Critical Value Detection188189**User says:** "What do the latest labs show for patient emr-9981?"190191**Actions:**1921. `fhir_read` Patient/emr-9981 -- returns 45-year-old female1932. `fhir_search` Observation?patient=emr-9981&category=laboratory&_sort=-date&_count=200 -- returns recent labs with potassium 2.4 mEq/L (interpretation: LL), sodium 118 mEq/L (interpretation: LL)1943. `fhir_search` Observation?patient=emr-9981&code=2823-3&_sort=-date&_count=5 -- prior potassium values1954. `fhir_search` Observation?patient=emr-9981&code=2951-2&_sort=-date&_count=5 -- prior sodium values1965. `fhir_search` MedicationStatement?patient=emr-9981&status=active -- returns furosemide, SSRI197198**Result:**199```200[CRITICAL] Potassium: 2.4 mEq/L (ref 3.5-5.0) -- Critical low201 Prior: 3.8 mEq/L (2 weeks ago) -- delta -1.4 mEq/L202 Action: Obtain ECG stat, IV potassium replacement, hold furosemide203 Correlation: furosemide 40mg daily -- likely causative204205[CRITICAL] Sodium: 118 mEq/L (ref 136-145) -- Critical low206 Prior: 134 mEq/L (2 weeks ago) -- delta -16 mEq/L207 Action: Assess volume status, check serum osmolality, urine sodium/osmolality208 Correlation: SSRI (sertraline) -- SIADH risk factor. Furosemide -- additional contributor209 Caution: Correct sodium no faster than 8 mEq/L per 24 hours (osmotic demyelination risk)210```211212### Example 3: Trend Analysis Request213214**User says:** "Show me the creatinine trend for patient 7742 over the past year"215216**Actions:**2171. `fhir_read` Patient/7742 -- returns 71-year-old male2182. `fhir_search` Observation?patient=7742&code=2160-0&date=ge[1-year-ago]&_sort=date -- returns 6 creatinine values over 12 months2193. `fhir_search` Condition?patient=7742&clinical-status=active -- returns CKD stage 3, hypertension, diabetes220221**Result:**222```223CREATININE TREND -- Patient 7742 (71M, CKD Stage 3)224====================================================2252024-02: 1.4 mg/dL (eGFR ~49)2262024-04: 1.5 mg/dL (eGFR ~45)2272024-06: 1.6 mg/dL (eGFR ~42)2282024-08: 1.5 mg/dL (eGFR ~45)2292024-10: 1.8 mg/dL (eGFR ~36)2302025-01: 2.1 mg/dL (eGFR ~30)231232Trajectory: declining eGFR, accelerating in last 3 months233Rate of decline: ~13 mL/min/1.73m2 per year (rapid, threshold >5)234Pattern: Progression from CKD Stage 3a to Stage 3b235Action: Nephrology referral, review nephrotoxic medications, check urine albumin236```237238## Troubleshooting239240### No Laboratory Observations Returned241242- Confirm `category=laboratory` is supported by the FHIR server. Some servers use `category=http://terminology.hl7.org/CodeSystem/observation-category|laboratory` as the full system URL.243- Widen the date range. Default `ge[30-days-ago]` may miss infrequent labs.244- Search without category filter and inspect returned Observation categories to determine what values the server uses.245246### Observation Has No referenceRange247248- Not all FHIR servers populate `referenceRange`. Fall back to standard reference ranges by age and sex from references/reference-ranges.md.249- Check if the Observation uses `interpretation` coding instead -- this may be the only abnormal flag available.250251### Panel Observations vs Individual Observations252253- Some servers return panels as a single Observation with `component` array (e.g., CBC panel LOINC 58410-2 with WBC, RBC, etc. as components). Others return each analyte as a separate Observation.254- Check for `hasMember` references on panel-level Observations that point to individual result Observations.255- Always check both `valueQuantity` on the parent and `component[].valueQuantity` to capture all results.256257### Delta Check Returns Only One Value258259- Patient may be new to the system. Note "no prior value available for comparison" and skip delta calculation.260- Try extending `_count` parameter or removing date filter to find historical values.261262## Related Skills263264- `critical-value-alert-generator` -- for structured critical value alerting and notification workflows265- `diabetes-panel-review` -- for focused diabetes lab interpretation with ADA guideline application266- `renal-function-dashboard` -- for comprehensive renal function assessment and CKD staging267- `preoperative-lab-checklist` -- for evaluating lab readiness before surgical procedures268269---270> Converted and distributed by [TomeVault](https://tomevault.io/claim/langcare) — claim your Tome and manage your conversions.271<!-- tomevault:4.0:skill_md:2026-04-13 -->