POST /v1/data, POST /v1/files, and POST /v1/extract.
The pipeline
null and keeps the raw name.
Before / after
What you send (or what a lab PDF says) vs. what the store holds:| Before (as written) | After (standardized) | |
|---|---|---|
| Indicator | "血糖(空腹)" / "FBG" / "Glucose, fasting" | loinc_code: "1558-6", canonical_name: "Fasting glucose [Moles/volume] in Serum or Plasma" |
| Value | "5.4 mmol/L" (one string) | parsed_value: 5.4, parsed_unit: "mmol/L" (UCUM) |
| Unit spelling | "mg/dl", "MG/DL", "mg/dL" | "mg/dL" (one UCUM form) |
| Interop | free text | FHIR R4 Observation (fhir_resource_id) |
| Original | — | kept: value stays the human-readable string; raw names/units preserved |
Where you see it
| Surface | What surfaces |
|---|---|
POST /v1/data | Response counts standardized alongside ingested. |
GET /v1/data | Every row carries parsed_value / parsed_unit / loinc_code / canonical_name / fhir_resource_id. |
POST /v1/extract | The whole pipeline as a synchronous call — dry-run by default, so you can inspect standardization before committing a write. |
| The agent | Grounded answers query the standardized series — which is why “how’s my glucose?” finds records written as “FBG”. |
Cookbook: one call, report → structured data
indicator_raw, loinc_code, confidence, …).