Congestive heart failure
The eds.congestive_heart_failure
pipeline component extracts mentions of congestive heart failure. It will notably match:
- Mentions of various diseases (see below)
- Heart transplantation
- AF (Atrial Fibrillation)
- Pacemaker
Details of the used patterns
# fmt: off
from ..terms import ASYMPTOMATIC
main_pattern = dict(
source="main",
regex=[
r"defaillance.{1,10}cardi",
r"(œ|oe)deme.{1,10}pulmon",
r"(œ|oe)deme.{1,10}poumon",
r"decompensation.{1,10}card",
r"choc.{1,30}cardio",
r"greffe.{1,10}c(œ|oe)ur",
r"greffe.{1,10}cardia",
r"transplantation.{1,10}c(œ|oe)ur",
r"transplantation.{1,10}cardia",
r"arret.{1,10}cardi",
r"c(œ|oe)ur pulmo",
r"foie.card",
r"pace.?maker",
r"stimulateur.cardiaque",
r"valve.{1,30}(meca|artific)",
],
regex_attr="NORM",
)
symptomatic = dict(
source="symptomatic",
regex=[
r"cardiopathi",
r"cardiomyopathi",
r"d(i|y)sfonction.{1,15}(ventricul|\bvg|cardiaque)",
r"valvulopathie",
r"\bic\b.{1,10}(droite|gauche)",
],
regex_attr="NORM",
exclude=dict(
regex=ASYMPTOMATIC + [r"(?<!\bnon.)ischem"], # Exclusion of ischemic events
window=5,
),
)
with_minimum_severity = dict(
source="min_severity",
regex=[
r"insuffisance.{1,10}(\bcardi|\bdiasto|\bventri|\bmitral|tri.?cusp)",
r"(retrecissement|stenose).(aortique|mitral)",
r"\brac\b",
r"\brm\b",
],
regex_attr="NORM",
exclude=dict(
regex=ASYMPTOMATIC + ["minime", "modere", r"non.serre"],
window=5,
),
)
acronym = dict(
source="acronym",
regex=[
r"\bOAP\b",
r"\bCMH\b",
],
regex_attr="TEXT",
)
AF_main_pattern = dict(
source="AF_main",
regex=[
r"fibrill?ation.{1,3}(atriale|auriculaire|ventriculaire)",
r"flutter",
r"brady.?arythmie",
r"pace.?maker",
],
)
AF_acronym = dict(
source="AF_acronym",
regex=[
r"\bFA\b",
r"\bAC.?FA\b",
],
regex_attr="TEXT",
)
default_patterns = [
main_pattern,
symptomatic,
acronym,
AF_main_pattern,
AF_acronym,
with_minimum_severity,
]
# fmt: on
Usage
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.congestive_heart_failure())
Below are a few examples:
text = "Présence d'un oedème pulmonaire"
doc = nlp(text)
spans = doc.spans["congestive_heart_failure"]
spans
# Out: [oedème pulmonaire]
text = "Le patient est équipé d'un pace-maker"
doc = nlp(text)
spans = doc.spans["congestive_heart_failure"]
spans
# Out: [pace-maker]
text = "Un cardiopathie non décompensée"
doc = nlp(text)
spans = doc.spans["congestive_heart_failure"]
spans
# Out: []
text = "Insuffisance cardiaque"
doc = nlp(text)
spans = doc.spans["congestive_heart_failure"]
spans
# Out: [Insuffisance cardiaque]
text = "Insuffisance cardiaque minime"
doc = nlp(text)
spans = doc.spans["congestive_heart_failure"]
spans
# Out: []
Parameters
PARAMETER | DESCRIPTION |
---|---|
nlp | The pipeline object 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.congestive_heart_failure
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