Peripheral vascular disease
The eds.peripheral_vascular_disease
pipeline component extracts mentions of peripheral vascular disease.
Details of the used patterns
# fmt: off
from ..terms import ASYMPTOMATIC, BRAIN, HEART, PERIPHERAL
acronym = dict(
source="acronym",
regex=[
r"\bAOMI\b",
r"\bACOM\b",
r"\bTAO\b",
r"\bSAPL\b",
r"\bOACR\b",
r"\bOVCR\b",
r"\bSCS\b",
r"\bTVP\b",
r"\bCAPS\b",
r"\bMTEV\b",
r"\bPTT\b",
r"\bMAT\b",
r"\bSHU\b",
],
regex_attr="TEXT",
)
other = dict(
source="other",
regex=[
r"\bbuerger",
r"takayasu",
r"\bhorton",
r"wegener",
r"churg.{1,10}strauss",
r"\bsneddon",
r"budd.chiari",
r"infarctus.{1,5}(renal|splenique|polaire|pulmo)",
r"ulcere.{1,5}arter",
r"syndrome.?hemolytique.{1,8}uremique",
r"granulomatose.{1,10}polyangeite",
r"occlusion.{1,10}(artere|veine).{1,20}retine",
r"syndrome.{1,20}anti.?phospho",
r"embolie.{1,5}pulm",
],
regex_attr="NORM",
)
with_localization = dict(
source="with_localization",
regex=[
r"angiopathie",
r"arteriopathies.{1,5}obliterante",
r"gangren",
r"claudication",
r"dissection.{1,10}(aort|arter)",
r"tromboangeit",
r"tromboarterit",
r"(pontage|angioplastie).{1,10}(\bfem|\bpop|\bren|\bjamb)",
r"arterite",
r"(ischemie|infarctus).{1,10}mesenterique",
r"endarteriectomie",
r"vascularite",
r"occlusion.{1,10}terminaisons? carotid",
r"cryoglobulinemie",
r"colite.{1,5}ischemi",
r"embole.{1,10}cholesterol",
r"purpura.?thrombopenique.?idiopa",
r"micro.?angiopathie.?thrombotique",
],
exclude=[
dict(
regex=BRAIN + HEART + ASYMPTOMATIC + [r"inr\srecommande\ssous\savk"],
window=(-8, 8),
limit_to_sentence=False,
),
],
regex_attr="NORM",
)
thrombosis = dict(
source="thrombosis",
regex=[
r"thrombos",
r"thrombol[^y]",
r"thrombophi",
r"thrombi[^n]",
r"thrombus",
r"thrombectomi",
r"thrombo.?embo",
r"phlebit",
],
exclude=[
dict(
regex=BRAIN + HEART + ["superficiel", "\biv\b", "intra.?vein"],
window=(-15, 15),
limit_to_sentence=False,
),
dict(
regex=[
"pre",
"anti",
"bilan",
],
window=-4,
),
],
regex_attr="NORM",
)
ischemia = dict(
source="ischemia",
regex=[
r"ischemi",
],
exclude=[
dict(
regex=BRAIN + HEART,
window=(-7, 7),
),
],
assign=[
dict(
name="peripheral",
regex="(" + r"|".join(PERIPHERAL) + ")",
window=15,
),
],
regex_attr="NORM",
)
ep = dict(
source="ep",
regex=r"\bEP(?![\w\./-])",
regex_attr="TEXT",
exclude=[
dict(
regex=[
r"fibreux",
r"retin",
r"\bfove",
r"\boct\b",
r"\bmacula",
r"prosta",
r"\bip\b",
r"protocole",
r"seance",
r"echange",
r"ritux",
r"ivig",
r"ig.?iv",
r"\bctc",
r"corticoide",
r"serum",
r"\bcure",
r"plasma",
r"mensuel",
r"semaine",
r"serologi",
r"espaces.porte",
r"projet",
r"bolus",
],
window=(-25, 25),
limit_to_sentence=False,
regex_attr="NORM",
),
dict(
regex=[r"rdv", r"les", r"des", r"angine"],
window=(-3, 0),
regex_attr="NORM",
),
],
)
hypertension = dict(
source="main",
regex=[
r"\bhta\b",
r"hyper.?tension.?arte",
r"hyper.?tendu",
r"hyper.?tension.?essenti",
r"hypertensi",
],
exclude=dict(
regex="(pulmo|porta)",
window=3,
),
)
default_patterns = [
acronym,
other,
with_localization,
thrombosis,
ep,
ischemia,
hypertension,
]
# fmt: on
Extensions
On each span span
that match, the following attributes are available:
span._.detailed_status
: set to None
Examples
import edsnlp, edsnlp.pipes as eds
nlp = edsnlp.blank("eds")
nlp.add_pipe(eds.sentences())
nlp.add_pipe(
eds.normalizer(
accents=True,
lowercase=True,
quotes=True,
spaces=True,
pollution=dict(
information=True,
bars=True,
biology=True,
doctors=True,
web=True,
coding=True,
footer=True,
),
),
)
nlp.add_pipe(eds.peripheral_vascular_disease())
Below are a few examples:
text = "Un AOMI"
doc = nlp(text)
spans = doc.spans["peripheral_vascular_disease"]
spans
# Out: [AOMI]
text = "Présence d'un infarctus rénal"
doc = nlp(text)
spans = doc.spans["peripheral_vascular_disease"]
spans
# Out: [infarctus rénal]
text = "Une angiopathie cérébrale"
doc = nlp(text)
spans = doc.spans["peripheral_vascular_disease"]
spans
# Out: []
text = "Une angiopathie"
doc = nlp(text)
spans = doc.spans["peripheral_vascular_disease"]
spans
# Out: [angiopathie]
text = "Une thrombose cérébrale"
doc = nlp(text)
spans = doc.spans["peripheral_vascular_disease"]
spans
# Out: []
text = "Une thrombose des veines superficielles"
doc = nlp(text)
spans = doc.spans["peripheral_vascular_disease"]
spans
# Out: []
text = "Une thrombose"
doc = nlp(text)
spans = doc.spans["peripheral_vascular_disease"]
spans
# Out: [thrombose]
text = "Effectuer un bilan pre-trombose"
doc = nlp(text)
spans = doc.spans["peripheral_vascular_disease"]
spans
# Out: []
text = "Une ischémie des MI est remarquée."
doc = nlp(text)
spans = doc.spans["peripheral_vascular_disease"]
spans
# Out: [ischémie des MI]
span = spans[0]
span._.assigned
# Out: {'peripheral': [MI]}
text = "Plusieurs cas d'EP"
doc = nlp(text)
spans = doc.spans["peripheral_vascular_disease"]
spans
# Out: [EP]
text = "Effectuer des cures d'EP"
doc = nlp(text)
spans = doc.spans["peripheral_vascular_disease"]
spans
# Out: []
text = "Le patient est hypertendu"
doc = nlp(text)
spans = doc.spans["peripheral_vascular_disease"]
spans
# Out: [hypertendu]
text = "Une hypertension portale"
doc = nlp(text)
spans = doc.spans["peripheral_vascular_disease"]
spans
# Out: []
Parameters
PARAMETER | DESCRIPTION |
---|---|
nlp | The pipeline TYPE: |
name | The name of the component TYPE: |
patterns | The patterns to use for matching TYPE: |
label | The label to use for the TYPE: |
span_setter | How to set matches on the doc TYPE: |
Authors and citation
The eds.peripheral_vascular_disease
component was developed by AP-HP's Data Science team with a team of medical experts, following the insights of the algorithm proposed by Petit-Jean et al., 2024.
Petit-Jean T., Gérardin C., Berthelot E., Chatellier G., Frank M., Tannier X., Kempf E. and Bey R., 2024. Collaborative and privacy-enhancing workflows on a clinical data warehouse: an example developing natural language processing pipelines to detect medical conditions. Journal of the American Medical Informatics Association. 31, pp.1280-1290. 10.1093/jamia/ocae069