cdiscbuilder 1.1.6__py3-none-any.whl → 1.1.8__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.
@@ -430,15 +430,28 @@ class SQLDerivation(BaseDerivation):
430
430
  if target_col in subject_data.columns and date_col in subject_data.columns:
431
431
  # Get target date (should be same for all rows of this subject)
432
432
  target_date = subject_data[target_col][0]
433
-
433
+
434
+ # Skip if target date is null
435
+ if target_date is None:
436
+ result_list.append(subject_data[source_col][0])
437
+ continue
438
+
434
439
  # Calculate date differences and find closest
435
- # Handle partial dates by using strptime with appropriate format
440
+ # Handle multiple formats: "YYYY-MM-DD HH:MM:SS", "YYYY-MM-DDTHH:MM:SS" (ISO), or "YYYY-MM-DD"
441
+ # We convert everything to Datetime for precision comparison (ms level)
442
+ def parse_to_datetime(expr: pl.Expr) -> pl.Expr:
443
+ return (
444
+ expr.str.strptime(pl.Datetime, "%Y-%m-%d %H:%M:%S", strict=False)
445
+ .fill_null(expr.str.strptime(pl.Datetime, "%Y-%m-%dT%H:%M:%S", strict=False))
446
+ .fill_null(expr.str.strptime(pl.Date, "%Y-%m-%d", strict=False).cast(pl.Datetime))
447
+ )
448
+
436
449
  with_diff = subject_data.with_columns(
437
450
  (
438
- pl.col(date_col).str.strptime(pl.Date, "%Y-%m-%d", strict=False)
439
- - pl.lit(target_date).str.strptime(pl.Date, "%Y-%m-%d", strict=False)
451
+ parse_to_datetime(pl.col(date_col))
452
+ - parse_to_datetime(pl.lit(target_date))
440
453
  )
441
- .dt.total_days()
454
+ .dt.total_milliseconds()
442
455
  .abs()
443
456
  .alias("date_diff")
444
457
  )
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cdiscbuilder
3
- Version: 1.1.6
3
+ Version: 1.1.8
4
4
  Summary: A package to convert ODM XML to SDTM/ADaM Datasets
5
5
  Author-email: Ming-Chun Chen <hellomingchun@gmail.com>
6
6
  Requires-Python: >=3.8
@@ -7,7 +7,7 @@ cdiscbuilder/adam/adam_derivation/engine.py,sha256=5Wk_tc3c6nRKBiiL5gE7YXxvdPgXV
7
7
  cdiscbuilder/adam/adam_derivation/derivations/__init__.py,sha256=iu7xzlQF_uK_5nwYw5ovEsBDNdaX0S8oVFYYxcxheTc,213
8
8
  cdiscbuilder/adam/adam_derivation/derivations/base.py,sha256=thbi0UD17Z8hUA5G6np_wWDcFth-UmoY7moS2KzvIps,1242
9
9
  cdiscbuilder/adam/adam_derivation/derivations/function_derivation.py,sha256=mPBet5JR10RS9euaS9ZLE1GCMRS3Grp9Gc3hdiQOVDI,7167
10
- cdiscbuilder/adam/adam_derivation/derivations/sql_derivation.py,sha256=hQZnLX9khF9aagSck4W5gaW5ZQnoLwSESWaJ5SOpzb0,22711
10
+ cdiscbuilder/adam/adam_derivation/derivations/sql_derivation.py,sha256=7vdi7qisIN4U3dft9AoPYkpUDlikR9bWu5ziTSdSCx8,23476
11
11
  cdiscbuilder/adam/adam_derivation/functions/__init__.py,sha256=Cv4pLpgHTr9i2zf7owbpZwMyxm8JLFmX4J31dvX0jYg,1773
12
12
  cdiscbuilder/adam/adam_derivation/functions/get_bmi.py,sha256=RR1lQpRSDO4cEkhxjnPutAy_xfVvfEwmhYR90XK2eMM,229
13
13
  cdiscbuilder/adam/adam_derivation/loaders/__init__.py,sha256=eUnUKzyahIaLIqjn39sYzXvzPpfabZoipkPdQ5mA9IE,116
@@ -49,9 +49,9 @@ cdiscbuilder/sdtm/loader/load.py,sha256=30x9fAEjnuRq313SRq9I7mBwrWl4sEhiKkmrr9x1
49
49
  cdiscbuilder/sdtm/loader/tests/__init__.py,sha256=ujCd31KMb52gvkWkVBBogLBda3aiRmbqS0nRS-yTnk0,69
50
50
  cdiscbuilder/sdtm/loader/tests/test_load.py,sha256=yrXFQlzH_EkN6HxJc7ItFie8xqwrs2XxwNu2wGaxjok,11180
51
51
  cdiscbuilder/tlf/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
52
- cdiscbuilder-1.1.6.dist-info/licenses/LICENSE,sha256=Da4Pm8tEdB1ycKkAkF2EwfHd-8l0wrJ_uwejzfBRHFE,1092
53
- cdiscbuilder-1.1.6.dist-info/METADATA,sha256=zjbMazHB2HkB-jeFFWsMAZlAhXmB3PgJN18Zn9_u36M,356
54
- cdiscbuilder-1.1.6.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
55
- cdiscbuilder-1.1.6.dist-info/entry_points.txt,sha256=KsuiJD4hsfjRqDkdvWgLFPeQCz7QBl73RA665BmF0Pw,53
56
- cdiscbuilder-1.1.6.dist-info/top_level.txt,sha256=3x5ENgnXBENgXKp5Zsht_4_OmA5wLVvDuk0UEkYOGNw,13
57
- cdiscbuilder-1.1.6.dist-info/RECORD,,
52
+ cdiscbuilder-1.1.8.dist-info/licenses/LICENSE,sha256=Da4Pm8tEdB1ycKkAkF2EwfHd-8l0wrJ_uwejzfBRHFE,1092
53
+ cdiscbuilder-1.1.8.dist-info/METADATA,sha256=QL7D5R3de5fOEIAAyXSlET9qmuZh4CboDPNr0rDSVzI,356
54
+ cdiscbuilder-1.1.8.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
55
+ cdiscbuilder-1.1.8.dist-info/entry_points.txt,sha256=KsuiJD4hsfjRqDkdvWgLFPeQCz7QBl73RA665BmF0Pw,53
56
+ cdiscbuilder-1.1.8.dist-info/top_level.txt,sha256=3x5ENgnXBENgXKp5Zsht_4_OmA5wLVvDuk0UEkYOGNw,13
57
+ cdiscbuilder-1.1.8.dist-info/RECORD,,