aimedicalcoding 0.3.4__tar.gz → 0.3.5__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {aimedicalcoding-0.3.4/aimedicalcoding.egg-info → aimedicalcoding-0.3.5}/PKG-INFO +1 -1
- {aimedicalcoding-0.3.4 → aimedicalcoding-0.3.5}/aimedicalcoding/serialize.py +6 -21
- {aimedicalcoding-0.3.4 → aimedicalcoding-0.3.5/aimedicalcoding.egg-info}/PKG-INFO +1 -1
- {aimedicalcoding-0.3.4 → aimedicalcoding-0.3.5}/docs/GAP_SCHEMA.md +3 -6
- {aimedicalcoding-0.3.4 → aimedicalcoding-0.3.5}/setup.py +1 -1
- {aimedicalcoding-0.3.4 → aimedicalcoding-0.3.5}/LICENSE +0 -0
- {aimedicalcoding-0.3.4 → aimedicalcoding-0.3.5}/MANIFEST.in +0 -0
- {aimedicalcoding-0.3.4 → aimedicalcoding-0.3.5}/README.md +0 -0
- {aimedicalcoding-0.3.4 → aimedicalcoding-0.3.5}/README_PYPI.md +0 -0
- {aimedicalcoding-0.3.4 → aimedicalcoding-0.3.5}/aimedicalcoding/__init__.py +0 -0
- {aimedicalcoding-0.3.4 → aimedicalcoding-0.3.5}/aimedicalcoding/__main__.py +0 -0
- {aimedicalcoding-0.3.4 → aimedicalcoding-0.3.5}/aimedicalcoding/adapters/__init__.py +0 -0
- {aimedicalcoding-0.3.4 → aimedicalcoding-0.3.5}/aimedicalcoding/adapters/base.py +0 -0
- {aimedicalcoding-0.3.4 → aimedicalcoding-0.3.5}/aimedicalcoding/adapters/ccda/__init__.py +0 -0
- {aimedicalcoding-0.3.4 → aimedicalcoding-0.3.5}/aimedicalcoding/adapters/ccda/adapter.py +0 -0
- {aimedicalcoding-0.3.4 → aimedicalcoding-0.3.5}/aimedicalcoding/adapters/ccda/codes.py +0 -0
- {aimedicalcoding-0.3.4 → aimedicalcoding-0.3.5}/aimedicalcoding/adapters/ccda/narrative.py +0 -0
- {aimedicalcoding-0.3.4 → aimedicalcoding-0.3.5}/aimedicalcoding/adapters/ccda/sections.py +0 -0
- {aimedicalcoding-0.3.4 → aimedicalcoding-0.3.5}/aimedicalcoding/adapters/custom_json/__init__.py +0 -0
- {aimedicalcoding-0.3.4 → aimedicalcoding-0.3.5}/aimedicalcoding/adapters/custom_json/adapter.py +0 -0
- {aimedicalcoding-0.3.4 → aimedicalcoding-0.3.5}/aimedicalcoding/adapters/fhir/__init__.py +0 -0
- {aimedicalcoding-0.3.4 → aimedicalcoding-0.3.5}/aimedicalcoding/adapters/fhir/adapter.py +0 -0
- {aimedicalcoding-0.3.4 → aimedicalcoding-0.3.5}/aimedicalcoding/adapters/fhir/codes.py +0 -0
- {aimedicalcoding-0.3.4 → aimedicalcoding-0.3.5}/aimedicalcoding/adapters/fhir/mapping.py +0 -0
- {aimedicalcoding-0.3.4 → aimedicalcoding-0.3.5}/aimedicalcoding/api.py +0 -0
- {aimedicalcoding-0.3.4 → aimedicalcoding-0.3.5}/aimedicalcoding/core/__init__.py +0 -0
- {aimedicalcoding-0.3.4 → aimedicalcoding-0.3.5}/aimedicalcoding/core/checkdigits.py +0 -0
- {aimedicalcoding-0.3.4 → aimedicalcoding-0.3.5}/aimedicalcoding/core/models.py +0 -0
- {aimedicalcoding-0.3.4 → aimedicalcoding-0.3.5}/aimedicalcoding/core/system_registry.py +0 -0
- {aimedicalcoding-0.3.4 → aimedicalcoding-0.3.5}/aimedicalcoding/pipeline/__init__.py +0 -0
- {aimedicalcoding-0.3.4 → aimedicalcoding-0.3.5}/aimedicalcoding/pipeline/orchestrator.py +0 -0
- {aimedicalcoding-0.3.4 → aimedicalcoding-0.3.5}/aimedicalcoding/recovery/__init__.py +0 -0
- {aimedicalcoding-0.3.4 → aimedicalcoding-0.3.5}/aimedicalcoding/recovery/engine.py +0 -0
- {aimedicalcoding-0.3.4 → aimedicalcoding-0.3.5}/aimedicalcoding/systems/__init__.py +0 -0
- {aimedicalcoding-0.3.4 → aimedicalcoding-0.3.5}/aimedicalcoding/systems/base.py +0 -0
- {aimedicalcoding-0.3.4 → aimedicalcoding-0.3.5}/aimedicalcoding/systems/cvx/__init__.py +0 -0
- {aimedicalcoding-0.3.4 → aimedicalcoding-0.3.5}/aimedicalcoding/systems/cvx/handler.py +0 -0
- {aimedicalcoding-0.3.4 → aimedicalcoding-0.3.5}/aimedicalcoding/systems/cvx/normalize.py +0 -0
- {aimedicalcoding-0.3.4 → aimedicalcoding-0.3.5}/aimedicalcoding/systems/cvx/patterns.py +0 -0
- {aimedicalcoding-0.3.4 → aimedicalcoding-0.3.5}/aimedicalcoding/systems/icd10cm/__init__.py +0 -0
- {aimedicalcoding-0.3.4 → aimedicalcoding-0.3.5}/aimedicalcoding/systems/icd10cm/handler.py +0 -0
- {aimedicalcoding-0.3.4 → aimedicalcoding-0.3.5}/aimedicalcoding/systems/icd10cm/icdformat.py +0 -0
- {aimedicalcoding-0.3.4 → aimedicalcoding-0.3.5}/aimedicalcoding/systems/icd10cm/patterns.py +0 -0
- {aimedicalcoding-0.3.4 → aimedicalcoding-0.3.5}/aimedicalcoding/systems/loinc/__init__.py +0 -0
- {aimedicalcoding-0.3.4 → aimedicalcoding-0.3.5}/aimedicalcoding/systems/loinc/axes.py +0 -0
- {aimedicalcoding-0.3.4 → aimedicalcoding-0.3.5}/aimedicalcoding/systems/loinc/handler.py +0 -0
- {aimedicalcoding-0.3.4 → aimedicalcoding-0.3.5}/aimedicalcoding/systems/loinc/normalize.py +0 -0
- {aimedicalcoding-0.3.4 → aimedicalcoding-0.3.5}/aimedicalcoding/systems/loinc/patterns.py +0 -0
- {aimedicalcoding-0.3.4 → aimedicalcoding-0.3.5}/aimedicalcoding/systems/rxnorm/__init__.py +0 -0
- {aimedicalcoding-0.3.4 → aimedicalcoding-0.3.5}/aimedicalcoding/systems/rxnorm/handler.py +0 -0
- {aimedicalcoding-0.3.4 → aimedicalcoding-0.3.5}/aimedicalcoding/systems/rxnorm/normalize.py +0 -0
- {aimedicalcoding-0.3.4 → aimedicalcoding-0.3.5}/aimedicalcoding/systems/rxnorm/patterns.py +0 -0
- {aimedicalcoding-0.3.4 → aimedicalcoding-0.3.5}/aimedicalcoding/systems/snomed/__init__.py +0 -0
- {aimedicalcoding-0.3.4 → aimedicalcoding-0.3.5}/aimedicalcoding/systems/snomed/handler.py +0 -0
- {aimedicalcoding-0.3.4 → aimedicalcoding-0.3.5}/aimedicalcoding/systems/snomed/hierarchy.py +0 -0
- {aimedicalcoding-0.3.4 → aimedicalcoding-0.3.5}/aimedicalcoding/systems/snomed/patterns.py +0 -0
- {aimedicalcoding-0.3.4 → aimedicalcoding-0.3.5}/aimedicalcoding/systems/snomed/qualifiers.py +0 -0
- {aimedicalcoding-0.3.4 → aimedicalcoding-0.3.5}/aimedicalcoding/terminology/__init__.py +0 -0
- {aimedicalcoding-0.3.4 → aimedicalcoding-0.3.5}/aimedicalcoding/terminology/service.py +0 -0
- {aimedicalcoding-0.3.4 → aimedicalcoding-0.3.5}/aimedicalcoding.egg-info/SOURCES.txt +0 -0
- {aimedicalcoding-0.3.4 → aimedicalcoding-0.3.5}/aimedicalcoding.egg-info/dependency_links.txt +0 -0
- {aimedicalcoding-0.3.4 → aimedicalcoding-0.3.5}/aimedicalcoding.egg-info/entry_points.txt +0 -0
- {aimedicalcoding-0.3.4 → aimedicalcoding-0.3.5}/aimedicalcoding.egg-info/requires.txt +0 -0
- {aimedicalcoding-0.3.4 → aimedicalcoding-0.3.5}/aimedicalcoding.egg-info/top_level.txt +0 -0
- {aimedicalcoding-0.3.4 → aimedicalcoding-0.3.5}/docs/ARCHITECTURE.md +0 -0
- {aimedicalcoding-0.3.4 → aimedicalcoding-0.3.5}/docs/OUTPUT_GUIDE.md +0 -0
- {aimedicalcoding-0.3.4 → aimedicalcoding-0.3.5}/docs/patterns/CVX_pattern_analysis.md +0 -0
- {aimedicalcoding-0.3.4 → aimedicalcoding-0.3.5}/docs/patterns/ICD10CM_pattern_analysis.md +0 -0
- {aimedicalcoding-0.3.4 → aimedicalcoding-0.3.5}/docs/patterns/LOINC_pattern_analysis.md +0 -0
- {aimedicalcoding-0.3.4 → aimedicalcoding-0.3.5}/docs/patterns/RxNorm_pattern_analysis.md +0 -0
- {aimedicalcoding-0.3.4 → aimedicalcoding-0.3.5}/docs/patterns/SNOMED_pattern_analysis.md +0 -0
- {aimedicalcoding-0.3.4 → aimedicalcoding-0.3.5}/pyproject.toml +0 -0
- {aimedicalcoding-0.3.4 → aimedicalcoding-0.3.5}/setup.cfg +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: aimedicalcoding
|
|
3
|
-
Version: 0.3.
|
|
3
|
+
Version: 0.3.5
|
|
4
4
|
Summary: Detect missing/broken clinical codes (LOINC / SNOMED CT / RxNorm / ICD-10-CM / CVX) in CCDA and FHIR documents, with recovery evidence
|
|
5
5
|
Author: Aakash Kag, Vinay Shankar Miryala, Siva Karthik, Mohammed Rayaan
|
|
6
6
|
License: MIT
|
|
@@ -121,20 +121,6 @@ def _dedupe(items) -> list:
|
|
|
121
121
|
return out
|
|
122
122
|
|
|
123
123
|
|
|
124
|
-
# SNOMED search-term enrichment (Problems 11450-4, Allergies 48765-2, Social
|
|
125
|
-
# History 29762-2), matched by section LOINC or by the contexts those sections
|
|
126
|
-
# route to (FHIR resources often carry no meta.tag/section code). Which slot's
|
|
127
|
-
# labels get appended differs by section:
|
|
128
|
-
# - Social History -> CODE tag labels (the question, e.g. "Gender identity" —
|
|
129
|
-
# the value label is often a placeholder like "Not on file")
|
|
130
|
-
# - Problems / Allergies -> VALUE tag labels (the concept; the code tag is a
|
|
131
|
-
# generic marker like ASSERTION / "Problem" — appending it is noise)
|
|
132
|
-
_SNOMED_CODE_LABEL_SECTIONS = {"29762-2"}
|
|
133
|
-
_SNOMED_CODE_LABEL_CONTEXTS = {"social_history"}
|
|
134
|
-
_SNOMED_VALUE_LABEL_SECTIONS = {"11450-4", "48765-2"}
|
|
135
|
-
_SNOMED_VALUE_LABEL_CONTEXTS = {"problem", "allergy_substance", "allergy_reaction"}
|
|
136
|
-
|
|
137
|
-
|
|
138
124
|
def _recovery(record: NormalizedRecord, slot: str, system: str) -> dict:
|
|
139
125
|
stmt, ev, g = record.statement, record.gap.evidence, record.gap
|
|
140
126
|
|
|
@@ -146,18 +132,17 @@ def _recovery(record: NormalizedRecord, slot: str, system: str) -> dict:
|
|
|
146
132
|
terms = [stmt.display_name, stmt.original_text]
|
|
147
133
|
# add any normalized term the handler produced
|
|
148
134
|
terms += [ev.get("analyte_normalized"), ev.get("term_normalized"), ev.get("ingredient")]
|
|
149
|
-
# SNOMED
|
|
150
|
-
#
|
|
135
|
+
# SNOMED: guarantee the TARGET slot's own labels are present, mirroring
|
|
136
|
+
# `target.slot` in the output record — code-slot gaps carry the code tag's
|
|
137
|
+
# displayName/originalText, value-slot gaps the value tag's.
|
|
151
138
|
if system == System.SNOMEDCT.value:
|
|
152
|
-
if
|
|
153
|
-
or stmt.context in _SNOMED_CODE_LABEL_CONTEXTS):
|
|
154
|
-
terms += [stmt.display_name, stmt.original_text]
|
|
155
|
-
elif (stmt.section_code in _SNOMED_VALUE_LABEL_SECTIONS
|
|
156
|
-
or stmt.context in _SNOMED_VALUE_LABEL_CONTEXTS):
|
|
139
|
+
if slot == "value":
|
|
157
140
|
if stmt.value:
|
|
158
141
|
terms += [stmt.value.coded_value.display
|
|
159
142
|
if stmt.value.coded_value else None,
|
|
160
143
|
stmt.value.original_text]
|
|
144
|
+
else:
|
|
145
|
+
terms += [stmt.display_name, stmt.original_text]
|
|
161
146
|
|
|
162
147
|
rec = {
|
|
163
148
|
"search_terms": _dedupe(terms),
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: aimedicalcoding
|
|
3
|
-
Version: 0.3.
|
|
3
|
+
Version: 0.3.5
|
|
4
4
|
Summary: Detect missing/broken clinical codes (LOINC / SNOMED CT / RxNorm / ICD-10-CM / CVX) in CCDA and FHIR documents, with recovery evidence
|
|
5
5
|
Author: Aakash Kag, Vinay Shankar Miryala, Siva Karthik, Mohammed Rayaan
|
|
6
6
|
License: MIT
|
|
@@ -89,12 +89,9 @@ Each record separates four concerns:
|
|
|
89
89
|
- `target.slot = "code"` (LOINC) → search `observation.code.display_text` / `.original_text`.
|
|
90
90
|
- `target.slot = "value"` (SNOMED value-slot) → search `observation.value.display_text` / `.original_text`.
|
|
91
91
|
`recovery.search_terms` already gives you the right ones, deduped.
|
|
92
|
-
For **SNOMED-CT** targets
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
is a placeholder like "Not on file"); **Problems (11450-4)** and
|
|
96
|
-
**Allergies (48765-2)** append the VALUE tag's labels (the concept — the
|
|
97
|
-
code tag there is a generic marker like ASSERTION/"Problem").
|
|
92
|
+
For **SNOMED-CT** targets the terms follow `target.slot`: value-slot gaps
|
|
93
|
+
carry the VALUE tag's `display_text`/`original_text`, code-slot gaps the
|
|
94
|
+
CODE tag's — the other slot's labels are not mixed in.
|
|
98
95
|
|
|
99
96
|
---
|
|
100
97
|
|
|
@@ -2,7 +2,7 @@ from setuptools import setup, find_packages
|
|
|
2
2
|
|
|
3
3
|
setup(
|
|
4
4
|
name="aimedicalcoding",
|
|
5
|
-
version="0.3.
|
|
5
|
+
version="0.3.5",
|
|
6
6
|
author="Aakash Kag, Vinay Shankar Miryala, Siva Karthik, Mohammed Rayaan",
|
|
7
7
|
description=(
|
|
8
8
|
"Detect missing/broken clinical codes (LOINC / SNOMED CT / RxNorm / "
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{aimedicalcoding-0.3.4 → aimedicalcoding-0.3.5}/aimedicalcoding/adapters/custom_json/__init__.py
RENAMED
|
File without changes
|
{aimedicalcoding-0.3.4 → aimedicalcoding-0.3.5}/aimedicalcoding/adapters/custom_json/adapter.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{aimedicalcoding-0.3.4 → aimedicalcoding-0.3.5}/aimedicalcoding/systems/icd10cm/icdformat.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{aimedicalcoding-0.3.4 → aimedicalcoding-0.3.5}/aimedicalcoding/systems/snomed/qualifiers.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{aimedicalcoding-0.3.4 → aimedicalcoding-0.3.5}/aimedicalcoding.egg-info/dependency_links.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|