Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 6 additions & 2 deletions .github/scripts/validate_mappings.py
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@
import sys
import xml.etree.ElementTree as ElementTree
from dataclasses import dataclass
from datetime import date
from datetime import date, datetime, timezone

REPO_ROOT = os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))

Expand Down Expand Up @@ -358,7 +358,11 @@ def stored_ids(disease: Disease, prefix: str) -> dict[str, int]:


def check_sssom_rows(rows: list[Row], report: Report) -> None:
today = date.today().isoformat()
# The app stamps `mapping_date` in UTC, so "today" has to be UTC too. Against
# a local date this reported every evening publish west of UTC as tomorrow's
# work — CI runners are UTC and never saw it, curators running the validator
# locally did.
today = datetime.now(timezone.utc).date().isoformat()
seen: dict[tuple, int] = {}
modifiers_by_pair: dict[tuple, dict[str, int]] = collections.defaultdict(dict)
labels: dict[str, dict[str, int]] = collections.defaultdict(dict)
Expand Down
30 changes: 25 additions & 5 deletions changelog.md
Original file line number Diff line number Diff line change
Expand Up @@ -59,13 +59,33 @@
and widens `mapping_date` to accept the ISO 8601 timestamp the app writes: all 548 rows carry
one, and a timestamp sorts after the bare date it falls on, which made every row today read as
tomorrow.
- Two things are deliberately left alone. Some diseases now carry the same review recorded more
- **Judged the four OMOP concepts on Chronic Lyme disease (ARI:0001065)**, which the union had
left unreviewed. The disease is Post-Treatment Lyme Disease Syndrome, not Lyme disease: its
confirmed cross-references are MeSH D000077342 "Post-Lyme Disease Syndrome", MONDO:0700280,
NCIt C119039 and UMLS C3890422, and the curator had already rejected DOID:11729 and
icd10cm:A69.2 — both plain "Lyme disease" — and recorded no term in SNOMED. Resolved against
the local Athena vocabulary in `data/2-databases`:
- `omop:19137845` is MeSH D000077342, the same term already confirmed — **confirmed**.
- `omop:440638` is SNOMED 23502006 "Lyme disease" and `omop:4141757` is SNOMED 33937009
"Lyme arthritis" — the active infection and one of its manifestations, so both are
**flagged wrong**. Storing them contradicted the curator's own "no term in SNOMED" finding.
- `omop:37365579` appears in no local vocabulary file, in any column. It is left stored and
unjudged: an id nobody can look up is not an id anybody can rule on. **Still needs
Athena.**
- `ARI_DXCODE` held 23502006 and 33937009 — the SNOMED codes behind the two rejected OMOP
concepts. Flagging only the OMOP form would have left the same two concepts on the disease
under a second property, so both SNOMED codes are flagged too and the property is now empty.
That also clears one of the standing `dxcode-without-snomed` warnings, taking them from 6
to 5.
- **Fixed a latent bug in the `date-future` check** found while recording the above. The app
stamps `mapping_date` in UTC and the check compared it against `date.today()`, the local date,
so an evening publish anywhere west of UTC read as tomorrow's work. CI runners are UTC and
never saw it; a curator in Toronto running the validator after 20:00 would have.
- One thing is deliberately left alone. Some diseases now carry the same review recorded more
than once under different timestamps, an artifact of the app re-recording a judgment whose
record had been wiped; collapsing them is a curator's call and does not belong in a
restoration, particularly one that adds a rule saying `ARI_ChangeLog` is append-only. And
Chronic Lyme disease (ARI:0001065) now holds four OMOP concepts — two curated on 16 August,
two the stale save put back — with no judgment on any of them; **that pair needs a curator.**
- The six remaining warnings are the standing `dxcode-without-snomed` debt, unchanged.
restoration, particularly one that adds a rule saying `ARI_ChangeLog` is append-only.
- The five remaining warnings are the standing `dxcode-without-snomed` debt.

## disease-target-mapping-sheet

Expand Down
5 changes: 5 additions & 0 deletions mappings/ari.equivalencies.tsv
Original file line number Diff line number Diff line change
Expand Up @@ -544,3 +544,8 @@ ARI 0001002 Acquired hemophilia skos:exactMatch DOID NoTermFound manual-absent g
ARI 0001004 Acute febrile mucocutaneous lymph node syndrome skos:exactMatch ORPHA NoTermFound manual-absent github:KrishnaTO
ARI 0001005 Acute lichenoid pityriasis skos:exactMatch DOID NoTermFound manual-absent github:KrishnaTO
ARI 0001005 Acute lichenoid pityriasis skos:exactMatch ORPHA NoTermFound manual-absent github:KrishnaTO
ARI 0001065 Chronic Lyme disease skos:exactMatch omop 19137845 manual github:KrishnaTO
ARI 0001065 Chronic Lyme disease skos:exactMatch omop 440638 manual-negative github:KrishnaTO
ARI 0001065 Chronic Lyme disease skos:exactMatch omop 4141757 manual-negative github:KrishnaTO
ARI 0001065 Chronic Lyme disease skos:exactMatch SNOMEDCT 23502006 manual-negative github:KrishnaTO
ARI 0001065 Chronic Lyme disease skos:exactMatch SNOMEDCT 33937009 manual-negative github:KrishnaTO
5 changes: 5 additions & 0 deletions mappings/ari.sssom.tsv
Original file line number Diff line number Diff line change
Expand Up @@ -565,3 +565,8 @@ ARI:0001002 Acquired hemophilia skos:exactMatch sssom:NoTermFound DOID semapv:M
ARI:0001004 Acute febrile mucocutaneous lymph node syndrome skos:exactMatch sssom:NoTermFound ORPHA semapv:ManualMappingCuration github:KrishnaTO 2026-08-30T20:37:59+00:00
ARI:0001005 Acute lichenoid pityriasis skos:exactMatch sssom:NoTermFound DOID semapv:ManualMappingCuration github:KrishnaTO 2026-08-30T20:37:59+00:00
ARI:0001005 Acute lichenoid pityriasis skos:exactMatch sssom:NoTermFound ORPHA semapv:ManualMappingCuration github:KrishnaTO 2026-08-30T20:37:59+00:00
ARI:0001065 Chronic Lyme disease skos:exactMatch omop:19137845 omop semapv:ManualMappingCuration github:KrishnaTO 2026-08-31T02:09:20+00:00
ARI:0001065 Chronic Lyme disease skos:exactMatch Not omop:440638 omop semapv:ManualMappingCuration github:KrishnaTO 2026-08-31T02:09:20+00:00
ARI:0001065 Chronic Lyme disease skos:exactMatch Not omop:4141757 omop semapv:ManualMappingCuration github:KrishnaTO 2026-08-31T02:09:20+00:00
ARI:0001065 Chronic Lyme disease skos:exactMatch Not SNOMEDCT:23502006 SNOMEDCT semapv:ManualMappingCuration github:KrishnaTO 2026-08-31T02:09:20+00:00
ARI:0001065 Chronic Lyme disease skos:exactMatch Not SNOMEDCT:33937009 SNOMEDCT semapv:ManualMappingCuration github:KrishnaTO 2026-08-31T02:09:20+00:00
3 changes: 1 addition & 2 deletions ontologies/ari_t1d.owl
Original file line number Diff line number Diff line change
Expand Up @@ -7326,8 +7326,6 @@ Currently, the cause of interstitial cystitis is unknown. There are two main the
<rdfs:label rdf:datatype="http://www.w3.org/2001/XMLSchema#string">Chronic Lyme disease</rdfs:label>
<ARI_Obsolete rdf:datatype="http://www.w3.org/2001/XMLSchema#string">false</ARI_Obsolete>
<ARI_ID rdf:datatype="http://www.w3.org/2001/XMLSchema#string">ARI:0001065</ARI_ID>
<ARI_OMOP rdf:datatype="http://www.w3.org/2001/XMLSchema#string">440638, 4141757</ARI_OMOP>
<ARI_DXCODE rdf:datatype="http://www.w3.org/2001/XMLSchema#string">33937009, 23502006</ARI_DXCODE>
<rdfs:comment rdf:datatype="http://www.w3.org/2001/XMLSchema#string">Lyme disease (named for the town of Lyme, Connecticut where it was first identified) is a bacterial disease transmitted through the bite of an infected black-legged tick, commonly known as a deer tick. Infection is possible after 24 to 48 hours. If the tick is not removed by then, it can transmit one of four main species of bacteria that cause Lyme disease: Borrelia burgdorferi, Borrelia mayonii, Borrelia afzelii and Borrelia garinii bacteria. The infection can be detected by a red “bulls-eye” rash or by Bell’s Palsy, a condition in which facial muscles are paralyzed.

If the disease is detected and treated (with antibiotics) recovery is usually complete and symptoms like Bell’s disappear completely. In these cases, there is no autoimmune disease.
Expand Down Expand Up @@ -7398,6 +7396,7 @@ However, in some people, the Lyme disease triggers symptoms similar to rheumatoi
<ARI_Synonym rdf:datatype="http://www.w3.org/2001/XMLSchema#string">post-treatment Lyme disease syndrome</ARI_Synonym>
<ARI_OMOP rdf:datatype="http://www.w3.org/2001/XMLSchema#string">19137845</ARI_OMOP>
<ARI_OMOP rdf:datatype="http://www.w3.org/2001/XMLSchema#string">37365579</ARI_OMOP>
<ARI_ChangeLog rdf:datatype="http://www.w3.org/2001/XMLSchema#string">2026-08-31T02:09:20+00:00 | KrishnaTO | Cross-reference review: confirmed OMOP 19137845; flagged OMOP 440638, 4141757; flagged SNOMED 23502006, 33937009</ARI_ChangeLog>
</owl:NamedIndividual>

<owl:NamedIndividual rdf:about="#Sym_0001065_531">
Expand Down
Loading