valediction 1.0.0__py3-none-any.whl
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.
- valediction/__init__.py +8 -0
- valediction/convenience.py +50 -0
- valediction/data_types/__init__.py +0 -0
- valediction/data_types/data_type_helpers.py +75 -0
- valediction/data_types/data_types.py +58 -0
- valediction/data_types/type_inference.py +541 -0
- valediction/datasets/__init__.py +0 -0
- valediction/datasets/datasets.py +870 -0
- valediction/datasets/datasets_helpers.py +46 -0
- valediction/demo/DEMO - Data Dictionary.xlsx +0 -0
- valediction/demo/DEMOGRAPHICS.csv +101 -0
- valediction/demo/DIAGNOSES.csv +650 -0
- valediction/demo/LAB_TESTS.csv +1001 -0
- valediction/demo/VITALS.csv +1001 -0
- valediction/demo/__init__.py +6 -0
- valediction/demo/demo_dictionary.py +129 -0
- valediction/dictionary/__init__.py +0 -0
- valediction/dictionary/exporting.py +501 -0
- valediction/dictionary/exporting_helpers.py +371 -0
- valediction/dictionary/generation.py +357 -0
- valediction/dictionary/helpers.py +174 -0
- valediction/dictionary/importing.py +494 -0
- valediction/dictionary/integrity.py +37 -0
- valediction/dictionary/model.py +582 -0
- valediction/dictionary/template/PROJECT - Data Dictionary.xltx +0 -0
- valediction/exceptions.py +22 -0
- valediction/integrity.py +97 -0
- valediction/io/__init__.py +0 -0
- valediction/io/csv_readers.py +307 -0
- valediction/progress.py +206 -0
- valediction/support.py +72 -0
- valediction/validation/__init__.py +0 -0
- valediction/validation/helpers.py +315 -0
- valediction/validation/issues.py +280 -0
- valediction/validation/validation.py +598 -0
- valediction-1.0.0.dist-info/METADATA +15 -0
- valediction-1.0.0.dist-info/RECORD +38 -0
- valediction-1.0.0.dist-info/WHEEL +4 -0
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from datetime import timedelta
|
|
4
|
+
from pathlib import Path
|
|
5
|
+
from typing import Any, Protocol, runtime_checkable
|
|
6
|
+
|
|
7
|
+
from pandas import DataFrame
|
|
8
|
+
|
|
9
|
+
DataLike = Path | str | DataFrame
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
@runtime_checkable
|
|
13
|
+
class DatasetItemLike(Protocol):
|
|
14
|
+
name: str
|
|
15
|
+
data: DataLike
|
|
16
|
+
_dictionary_runtimes: dict[str, timedelta]
|
|
17
|
+
_padding: int
|
|
18
|
+
|
|
19
|
+
@property
|
|
20
|
+
def is_path(self) -> bool: ...
|
|
21
|
+
@property
|
|
22
|
+
def is_dataframe(self) -> bool: ...
|
|
23
|
+
@property
|
|
24
|
+
def data(self) -> Any: ...
|
|
25
|
+
@property
|
|
26
|
+
def column_count(self) -> int: ...
|
|
27
|
+
@property
|
|
28
|
+
def primary_keys(self) -> list[str]: ...
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
def as_folder(path_like: str | Path) -> Path:
|
|
32
|
+
"""Coerce to a Path and verify it is an existing directory."""
|
|
33
|
+
p = Path(path_like)
|
|
34
|
+
if not p.exists() or not p.is_dir():
|
|
35
|
+
raise FileNotFoundError(f"Folder not found or not a directory: {p}")
|
|
36
|
+
return p
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
def list_csvs(folder: str | Path, *, recursive: bool = False) -> list[Path]:
|
|
40
|
+
"""Return CSV files in a folder.
|
|
41
|
+
|
|
42
|
+
Non-recursive by default.
|
|
43
|
+
"""
|
|
44
|
+
p = as_folder(folder)
|
|
45
|
+
pattern = "**/*.csv" if recursive else "*.csv"
|
|
46
|
+
return sorted(p.glob(pattern))
|
|
Binary file
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
PATIENT_HASH,DATE_OF_BIRTH,ETHNICITY,SEX,DATE_OF_DEATH
|
|
2
|
+
PCB1AC7AEFBC,25/03/1937,D,Male,
|
|
3
|
+
P9822C35CFE2,09/09/1992,A,Other,
|
|
4
|
+
P9741499AAA8,28/07/1971,J,Male,
|
|
5
|
+
P740556E27EF,18/05/1940,H,Female,
|
|
6
|
+
PBB852BC4337,07/03/1974,H,Male,28/04/2019
|
|
7
|
+
P44437C83F93,10/07/1999,E,Female,
|
|
8
|
+
P5EB7C66585C,14/01/1997,D,Other,
|
|
9
|
+
PFBA511DC293,21/07/1991,C,Male,
|
|
10
|
+
PE58D0777A22,07/10/1945,P,Female,
|
|
11
|
+
P2E7B1D36528,13/09/1959,B,Male,
|
|
12
|
+
PADC302CC323,14/05/2008,A,Male,
|
|
13
|
+
P3D355419986,29/09/1956,C,Female,
|
|
14
|
+
P6B120D556F7,19/05/1948,G,Female,
|
|
15
|
+
P3CA18D22E75,16/11/1937,H,Female,
|
|
16
|
+
P2BFFFA51178,21/04/1955,Z,Male,
|
|
17
|
+
P71E3E0FA100,30/07/1981,A,Male,
|
|
18
|
+
P398005303C7,27/04/1941,G,Female,
|
|
19
|
+
P6F871D71CB3,12/06/1952,P,Male,
|
|
20
|
+
P7D47EED6306,28/03/1993,H,Male,
|
|
21
|
+
PE713EBAEA26,06/04/1999,R,Female,
|
|
22
|
+
P46C7BEA5C6A,14/10/1975,J,Female,
|
|
23
|
+
P5345753F1C2,22/05/1994,A,Male,
|
|
24
|
+
P913AC9C6C8F,15/08/1954,F,Male,
|
|
25
|
+
PD8EA4E83BD5,22/07/1996,P,Male,
|
|
26
|
+
P2EF8F723DFE,21/09/1934,L,Female,
|
|
27
|
+
P7B9D911F1B4,07/09/2010,J,Male,
|
|
28
|
+
PFCFA255D1C7,23/10/1983,E,Male,
|
|
29
|
+
P46C8AEA8822,09/06/1986,G,Male,
|
|
30
|
+
P297E227D41B,31/05/1967,L,Female,
|
|
31
|
+
PAE1AEC29BE6,19/06/1943,D,Male,
|
|
32
|
+
P377F9684630,11/11/1960,C,Male,
|
|
33
|
+
PF663CEC0C9B,01/09/1959,N,Female,
|
|
34
|
+
P81105805770,06/08/2003,D,Female,
|
|
35
|
+
PC73CFD35AF8,25/02/1951,M,Male,03/02/2016
|
|
36
|
+
P0870F10A5AA,18/03/1966,M,Male,
|
|
37
|
+
P25E336E78C9,10/02/2003,J,Female,
|
|
38
|
+
P5709FBE5A08,09/07/1967,B,Female,
|
|
39
|
+
PF97770A72E5,21/05/1999,R,Male,
|
|
40
|
+
P56B8D39D872,02/09/1937,D,Male,03/11/2008
|
|
41
|
+
P3C3343A044B,15/07/1944,N,Male,
|
|
42
|
+
PE57E477014D,05/01/1970,C,Female,
|
|
43
|
+
P7E9B4C8F2C4,20/04/1954,K,Female,
|
|
44
|
+
P8098F3C00C9,07/12/2004,M,Female,
|
|
45
|
+
P73CAA33922A,10/04/1942,G,Male,05/03/2024
|
|
46
|
+
P5E08567E985,05/05/1952,C,Male,
|
|
47
|
+
PB4CBEDC3CBE,02/06/1969,B,Male,
|
|
48
|
+
P2FFF6BE25F8,22/02/1974,H,Male,
|
|
49
|
+
P79DB8E23123,05/03/1972,K,Female,
|
|
50
|
+
PC27B6F4DA23,23/06/1954,C,Male,
|
|
51
|
+
PFC8AAD27415,17/11/1974,H,Female,
|
|
52
|
+
P46F7AF57A11,15/01/2006,D,Male,
|
|
53
|
+
P388D6E058C9,05/04/1992,N,Male,
|
|
54
|
+
P68C5CF713BA,09/02/1955,J,Female,
|
|
55
|
+
PCD0B49BE79B,19/03/1997,R,Female,
|
|
56
|
+
P104F45AF99B,15/05/1980,M,Male,
|
|
57
|
+
P9CF442453AC,20/09/1971,F,Male,
|
|
58
|
+
PBA5E0ED6EB1,11/04/1942,M,Female,
|
|
59
|
+
P3155F710A6D,24/03/2002,M,Female,
|
|
60
|
+
P5DDD43F647F,13/01/1968,G,Female,
|
|
61
|
+
P410BC042F3D,04/08/1955,J,Male,
|
|
62
|
+
PB699903C48A,12/10/1960,C,Female,
|
|
63
|
+
PC8E6E7FC8E5,05/04/1951,F,Male,
|
|
64
|
+
PB480BA7C139,27/06/1990,H,Female,
|
|
65
|
+
P302842BAA69,09/07/1944,F,Male,
|
|
66
|
+
PCF4FEDF96B4,15/12/1955,R,Male,15/02/2025
|
|
67
|
+
PDD16B650B11,13/02/1944,N,Male,
|
|
68
|
+
PAE31532ED3D,08/08/1948,J,Male,
|
|
69
|
+
PC1A8622975F,13/10/1963,H,Female,
|
|
70
|
+
P2500040F693,08/03/1946,L,Female,
|
|
71
|
+
P37ABABF8BD5,21/02/1965,B,Female,
|
|
72
|
+
PE050156FBBE,10/01/1940,H,Male,
|
|
73
|
+
PE1CADC24657,31/05/1955,B,Male,15/08/2024
|
|
74
|
+
PD560F78D44A,09/05/1978,L,Female,
|
|
75
|
+
P9E13FC6B1CA,21/12/1974,N,Male,
|
|
76
|
+
PD66154398E7,12/06/1943,J,Female,
|
|
77
|
+
PE800609BD66,12/04/1978,C,Male,23/04/2023
|
|
78
|
+
PFE1E7971E5A,04/11/1938,G,Female,
|
|
79
|
+
PAB9A51DD82E,04/07/1967,L,Female,
|
|
80
|
+
P2BB5669531B,04/11/1948,G,Female,
|
|
81
|
+
P189AFEDAE1A,24/06/1953,S,Male,
|
|
82
|
+
P1B59CB857D2,02/06/1963,N,Female,
|
|
83
|
+
PCA9213E32EC,05/01/1973,R,Male,
|
|
84
|
+
P24BE708D4BB,28/01/1950,E,Male,
|
|
85
|
+
P8D65098CD55,27/12/1958,J,Female,
|
|
86
|
+
PA38E6923B0F,03/11/1941,E,Male,
|
|
87
|
+
P6BA4DD82108,17/08/1942,H,Male,12/07/1994
|
|
88
|
+
P239885271FF,07/06/1987,J,Male,
|
|
89
|
+
P503C3452BC2,27/06/1934,P,Female,
|
|
90
|
+
PCADF960402B,31/01/1997,N,Male,
|
|
91
|
+
PF536D59EF2A,04/10/1955,M,Male,
|
|
92
|
+
P495D365E9E0,22/06/1948,H,Female,
|
|
93
|
+
P57F7A471B88,15/03/1950,E,Male,
|
|
94
|
+
P3424F1DB5BF,18/05/2002,Z,Female,
|
|
95
|
+
PE124C0E760F,27/03/1938,S,Female,07/03/2018
|
|
96
|
+
P7439DF795E1,01/05/1998,C,Female,
|
|
97
|
+
P20F97B2DF89,23/12/1955,B,Female,
|
|
98
|
+
PABA2B255009,18/12/1994,D,Female,
|
|
99
|
+
P4DC03FA4017,28/11/1996,E,Female,
|
|
100
|
+
P69044E391C1,03/06/1973,F,Male,
|
|
101
|
+
P00372442559,27/03/1950,P,Male,
|