LymeHQ · Standards
Tick-borne illness has no standard shape
Health data standards decide what can be counted. There is no agreed representation for most of what matters in tick-borne disease — which is either a gap or an invitation. This is what we hit while building, and what we would propose.
What this page is, and is not
Nothing here has been submitted to, reviewed by, or endorsed by any standards body. This is a working draft written from the inside of one platform, offered for discussion. It has one qualification and one only: we had to build something, and these are the places the existing vocabulary did not reach.
01 · The problem
A field that does not exist cannot be studied
Which is how a disease stays contested for forty years.
Standards for health data are lists of what is worth recording, and everything outside a list becomes free text, then a note, then nothing. For tick-borne illness that is most of the useful information: how long a tick was attached, which species it was, whether a rash appeared and on what skin, which markers a test actually showed and when the sample was drawn, whether a treatment was followed by any change.
None of that is exotic. It is the ordinary content of a clinical conversation about this illness, and almost none of it survives into a form that can be aggregated. So the research that could settle the arguments cannot be assembled — not because the data was never collected, but because it was collected into a shape nothing can read.
02 · What we built
Five things that work, and are worth generalising
Modelled, running on synthetic data, and load-bearing in the product.
A household sentinel signal
An animal test result, the household it belongs to, and a location no finer than three digits of a postal code — enough to say where ticks are and nothing about whether a person is infected.
Consent scope, as data
Eight named, separately revocable choices, with every change appended to a history the database writes and no update or delete can touch.
An aggregation floor
A minimum group size carried by the data itself rather than applied at the point of release, so a combination describing fewer than five people is never written down.
Where a record came from
Whether a lab value was uploaded, entered, or arrived from a claims feed — modelled from the start, because provenance stops being recoverable the moment it is not recorded.
A treatment response window
A treatment start date, the window either side of it, how much of that window was actually recorded, and a flag when something else started at the same time. Association, never attribution.
03 · Where we ran out
Four gaps we hit, and did not paper over
Parked deliberately rather than improvised — an invented field is worse than an absent one.
How long the tick was attached
The single most clinically useful fact about a bite, and there is no standard field for it. Recording it needs an agreed vocabulary for exposure events first, which is why it is parked rather than improvised.
Which species it was
Different species carry different infections. Without a coded field this arrives as free text, which is the same as not arriving.
Skin tone, where a rash is being described
A rash is identified by appearance, and appearance differs by skin tone — a documented cause of delayed diagnosis. A dataset that never records it cannot notice the disparity it is producing.
Band-level serology, and when the sample was drawn
A two-tier result reduces to positive or negative in every standard representation, which discards both the individual markers and the timing that decides what a negative means.
Why parking beats inventing
A field invented locally looks like data and aggregates like noise. Two platforms recording attachment duration in different vocabularies produce a number that cannot be pooled and cannot be trusted, and the fact that it exists stops anyone asking for the standard. So these stay absent and named rather than present and private.
04 · The element set
Eighteen elements, each traced to an artifact
Not only a diagram — every element below says exactly what a patient's own export carries for it, or exactly why it carries nothing.
Tick-borne illness has no standard shape.
A working draft of one — six classes, derived from a platform that needed them.
- No existing standard covers this element
- Draft for discussion — not a submitted standard
Thirteen of the eighteen elements have no existing standard to carry them. An element with nowhere to go does not travel between systems.
Published to be argued with: an element that is wrong, missing, or already standard somewhere is the useful reply.
A draft for discussion, not a submitted standard. Nothing on this drawing has been submitted to, reviewed by, or endorsed by any standards body, and no element here is one anyone is required to collect.
Orientation only. No figure on this drawing is a measured quantity; the one count in the caption counts marks on the drawing itself. The element set is a working draft assembled from the data model this platform already needed, and it has not been submitted to, reviewed by, or endorsed by any standards body. Which elements an existing standard already covers is a judgement made here, not a survey anyone else has verified.
The set is implemented, not aspirational: a signed-in patient can download their own record in exactly this shape from their account’s tools page. Where a FHIR R4 resource exists the export uses it; where none does, a LymeHQ extension carries the value under our own URL; and where the platform holds nothing, the element is absent from the file and named in a coverage statement inside it — documented, never defaulted. The same discipline as our claims import, pointed the other way.
Tick exposure
New classAttachment durationno existing standard
How long the tick was attached — the single most clinically useful fact about a bite, and no standard field exists for it.
Not held: No exposure-event record exists on this platform; recording one needs an agreed vocabulary first, so it is parked rather than improvised. Absent from the export and named in its coverage statement.
Species identifiedno existing standard
Which tick species it was. Different species carry different infections; without a coded field this arrives as free text, which is the same as not arriving.
Not held: Parked with the exposure event it would belong to. A free-text species field would aggregate as noise, which is worse than absence.
Exposure countyno existing standard
Where the exposure happened, at county grain — where the tick was, which is not always where the person lives.
Not held: No exposure event exists to hang it on. The only geography the platform holds is the household ZIP3, which describes residence, not exposure.
Clinical picture
EM rash present
Whether an erythema migrans rash appeared — the one finding that can settle an early diagnosis on its own.
Not held: A standard shape exists (a coded condition), but the platform holds no structured rash field — a free-text diagnosis list is not a rash observation, and the export does not pretend one into being.
Skin tone recordedno existing standard
The skin tone a rash was assessed on. A rash is identified by appearance, appearance differs by skin tone, and a dataset that never records it cannot notice the disparity it is producing.
Not held: Deliberately not collected until the collection instrument has clinically-informed review — the same rule that holds the rash-identification imagery.
Symptom severityno existing standard
Patient-reported daily severity, per symptom, on a stated scale — the raw material of any before/after picture.
In the export: One FHIR Observation per recorded score — six named symptoms, integers on a 0–10 scale, coded in the LymeHQ code system because no standard code exists for these as patient-reported dailies. Journal text never exports.
Laboratory
Two-tier results
The overall result of the standard two-tier serology protocol.
In the export: A FHIR DiagnosticReport per lab result, one Observation per extracted analyte. Names and values export exactly as extracted from the document — no coded mapping is invented where the source stated none.
Band-level detailno existing standard
Which individual immunoblot bands reacted — the detail every standard representation collapses into positive-or-negative.
Not held: Extraction keeps analyte rows as the document stated them, not immunoblot bands as coded entities. Absent from the export and named in its coverage statement.
Serology timingno existing standard
When the sample was drawn relative to exposure — the fact that decides what a negative means.
Not held: The sample date itself exports (DiagnosticReport.effectiveDateTime). The element is timing relative to exposure, and no exposure event exists to relate it to.
Household sentinel
New classAnimal test resultno existing standard
A household animal’s tick-borne antibody result — an early-warning signal about where ticks are, saying nothing about whether a person is infected.
In the export: The household animal as its own Patient resource carrying the standard patient-animal extension, with an Observation holding the C6 antibody result and its test date.
Household linkno existing standard
That the animal and the person share a household — the link that makes the signal mean something, with no finer relationship claimed.
In the export: A LymeHQ extension on both Patient resources naming a shared household identifier — an internal id, same household, nothing else.
County onlyno existing standard
The geographic grain the signal travels at — coarse enough that it describes an area, never an address.
In the export: Exported at the platform’s own grain: three digits of ZIP code and a state, no street, no city. That is coarser than the county grain this draft names, and the divergence is stated here rather than rounded away.
Treatment
Antimicrobial course
What was taken and when — the anchor every response question hangs on.
In the export: A FHIR MedicationStatement per medication: the name as the patient recorded it, patient-reported dates, current or stopped. No drug code is invented for free text.
Response windowno existing standard
A treatment start date, the window either side of it, and how much of that window was actually recorded — association, never attribution.
In the export: A LymeHQ extension on each dated MedicationStatement: window length, days logged each side, and the per-symptom comparison — computed by the same arithmetic as every other surface, never re-derived here.
Confound flagno existing standard
Whether something else started inside the window — the fact that keeps a before/after picture honest.
In the export: A LymeHQ extension naming any other treatment started inside the window, and any reported stop. Carried beside the figures, never resolved away.
Consent & origin
Data origin
Whether a value was uploaded, hand-entered, or arrived from a claims feed — provenance stops being recoverable the moment it is not recorded.
In the export: A LymeHQ extension on each DiagnosticReport carrying the recorded source value, exactly as the platform stored it at ingestion.
Consent scope
The named, separately revocable choices a person has made about their own data, as data.
In the export: One FHIR Consent resource per named scope — permit or deny from the live record, with the grant and revocation timestamps that exist.
Aggregation floorno existing standard
A minimum group size carried by the data itself, so a combination describing fewer than five people is never written down.
Policy, not data: A property of aggregate release, enforced in the database. An individual export contains no aggregates, so the element appears in the coverage statement as policy rather than as data.
Draft for discussion — not a submitted standard. Which elements an existing standard already covers is a judgement made here, not a survey anyone else has verified — an element that is wrong, missing, or already standard somewhere is the useful reply.
05 · Interoperability
Where the connections are, and are not
The data model landed first, deliberately. The first connection is built, and it runs against a sandbox.
The tables that let clinical and claims data arrive from outside — a connection record, a claims store, and a field on every lab result saying where it came from — are built, and so is the first connection that uses them: an authorisation flow, an import that can be run again safely, and a switch that disconnects it and deletes the credentials. It runs against the insurer’s sandbox, on synthetic records. A working sandbox integration proves nothing about production access, which is a separate question, with a separate answer, decided by the insurer rather than here.
Where credentials for such a connection would be held, the design is already settled and the code exists: the encryption key lives outside the database, so a copy of the database contains identifiers and no way to decrypt anything. Nothing is stored through it today, because nothing is connected.
Where to go next
- For researchersWhat the commons can answerThe dimensions a cohort can be described in, the approval path, and what a floor of five does to study design.
- The mechanismsSecurityHow the de-identification boundary and the aggregation floor are enforced.
- The whole productHow LymeHQ worksThe loop these fields exist to serve, and which parts of it are built.
- What is nextPublic roadmapWhere interoperability sits in the order of work.
If you work on health data standards and any of this is wrong, or already solved, we would rather know than be right — standards@lymehq.com. The story behind the platform explains why a patient ended up writing a data model at all.