Diff of /edsnlp/extensions.py [000000] .. [cad161]

Switch to unified view

a b/edsnlp/extensions.py
1
import warnings
2
from datetime import date, datetime
3
4
from dateutil.parser import parse as parse_date
5
from spacy.tokens import Doc
6
7
if not Doc.has_extension("note_id"):
8
    Doc.set_extension("note_id", default=None)
9
10
11
def set_note_datetime(doc, dt):
12
    try:
13
        if type(dt) is datetime:
14
            pass
15
        elif isinstance(dt, str):
16
            dt = parse_date(dt)
17
        elif isinstance(dt, (int, float)):
18
            dt = datetime.fromtimestamp(dt)
19
        elif isinstance(dt, date):
20
            dt = datetime(dt.year, dt.month, dt.day)
21
        elif dt is None:
22
            pass
23
        key = doc._._get_key("note_datetime")
24
        doc.doc.user_data[key] = dt
25
        return
26
    except Exception:
27
        pass
28
29
    warnings.warn(f"Cannot cast {dt} as a note datetime", UserWarning)
30
31
32
def get_note_datetime(doc):
33
    key = doc._._get_key("note_datetime")
34
    return doc.user_data.get(key, None)
35
36
37
if not Doc.has_extension("note_datetime"):
38
    Doc.set_extension(
39
        "note_datetime",
40
        getter=get_note_datetime,
41
        setter=set_note_datetime,
42
    )
43
44
if not Doc.has_extension("birth_datetime"):
45
    Doc.set_extension("birth_datetime", default=None)