cdiscbuilder 1.1.9__py3-none-any.whl → 1.1.11__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.
@@ -92,20 +92,52 @@ class SQLDerivation(BaseDerivation):
92
92
  sql_condition = sql_condition.replace("___LT___", f"< {source} AND {source} <")
93
93
  sql_condition = sql_condition.replace("___EQ___", f"= {source} AND {source} =")
94
94
 
95
- # Clean up the condition
96
- if condition.startswith("<"):
95
+ # Clean up the condition - handle all comparison operators
96
+ if " and " in condition.lower():
97
+ # Range condition: handle >=X and <Y, >X and <=Y, etc.
98
+ parts = condition.lower().split(" and ")
99
+ lower_part = parts[0].strip()
100
+ upper_part = parts[1].strip()
101
+
102
+ # Parse lower bound (>= or >)
103
+ if lower_part.startswith(">="):
104
+ lower_val = lower_part.replace(">=", "").strip()
105
+ lower_op = ">="
106
+ elif lower_part.startswith(">"):
107
+ lower_val = lower_part.replace(">", "").strip()
108
+ lower_op = ">"
109
+ else:
110
+ # Fallback for unexpected format
111
+ case_parts.append(f"WHEN {condition} THEN '{label}'")
112
+ continue
113
+
114
+ # Parse upper bound (<= or <)
115
+ if upper_part.startswith("<="):
116
+ upper_val = upper_part.replace("<=", "").strip()
117
+ upper_op = "<="
118
+ elif upper_part.startswith("<"):
119
+ upper_val = upper_part.replace("<", "").strip()
120
+ upper_op = "<"
121
+ else:
122
+ # Fallback for unexpected format
123
+ case_parts.append(f"WHEN {condition} THEN '{label}'")
124
+ continue
125
+
126
+ case_parts.append(f"WHEN {source} {lower_op} {lower_val} AND {source} {upper_op} {upper_val} THEN '{label}'")
127
+ elif condition.startswith("<="):
128
+ value = condition[2:].strip()
129
+ case_parts.append(f"WHEN {source} <= {value} THEN '{label}'")
130
+ elif condition.startswith("<"):
97
131
  value = condition[1:].strip()
98
132
  case_parts.append(f"WHEN {source} < {value} THEN '{label}'")
99
- elif condition.startswith(">=") and " and " in condition.lower():
100
- parts = condition.split(" and ")
101
- lower = parts[0].replace(">=", "").strip()
102
- upper = parts[1].replace("<", "").strip()
103
- case_parts.append(f"WHEN {source} >= {lower} AND {source} < {upper} THEN '{label}'")
104
133
  elif condition.startswith(">="):
105
134
  value = condition[2:].strip()
106
135
  case_parts.append(f"WHEN {source} >= {value} THEN '{label}'")
136
+ elif condition.startswith(">"):
137
+ value = condition[1:].strip()
138
+ case_parts.append(f"WHEN {source} > {value} THEN '{label}'")
107
139
  else:
108
- # Generic condition
140
+ # Generic condition (pass through as-is)
109
141
  case_parts.append(f"WHEN {condition} THEN '{label}'")
110
142
 
111
143
  case_expr = "CASE " + " ".join(case_parts) + " ELSE NULL END"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cdiscbuilder
3
- Version: 1.1.9
3
+ Version: 1.1.11
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=hKkMq17CrIvJrCC1Zl3J8FzMLbXdKGV9rS0nvG-DtRs,23797
10
+ cdiscbuilder/adam/adam_derivation/derivations/sql_derivation.py,sha256=-wd5AZfItJUyTZNUNWQHlheYPESInwijpl0j9tbp7z8,25377
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.9.dist-info/licenses/LICENSE,sha256=Da4Pm8tEdB1ycKkAkF2EwfHd-8l0wrJ_uwejzfBRHFE,1092
53
- cdiscbuilder-1.1.9.dist-info/METADATA,sha256=Hdye5GJKylL-i3uxFbgAaBBKRafHf2hPPPuA_It-dzk,356
54
- cdiscbuilder-1.1.9.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
55
- cdiscbuilder-1.1.9.dist-info/entry_points.txt,sha256=KsuiJD4hsfjRqDkdvWgLFPeQCz7QBl73RA665BmF0Pw,53
56
- cdiscbuilder-1.1.9.dist-info/top_level.txt,sha256=3x5ENgnXBENgXKp5Zsht_4_OmA5wLVvDuk0UEkYOGNw,13
57
- cdiscbuilder-1.1.9.dist-info/RECORD,,
52
+ cdiscbuilder-1.1.11.dist-info/licenses/LICENSE,sha256=Da4Pm8tEdB1ycKkAkF2EwfHd-8l0wrJ_uwejzfBRHFE,1092
53
+ cdiscbuilder-1.1.11.dist-info/METADATA,sha256=f60l-5iGXmmj6ThDt5CfALlhwZdstgIlhY179w3JpB8,357
54
+ cdiscbuilder-1.1.11.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
55
+ cdiscbuilder-1.1.11.dist-info/entry_points.txt,sha256=KsuiJD4hsfjRqDkdvWgLFPeQCz7QBl73RA665BmF0Pw,53
56
+ cdiscbuilder-1.1.11.dist-info/top_level.txt,sha256=3x5ENgnXBENgXKp5Zsht_4_OmA5wLVvDuk0UEkYOGNw,13
57
+ cdiscbuilder-1.1.11.dist-info/RECORD,,