tricc-oo 1.5.8__tar.gz → 1.5.9__tar.gz

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.
Files changed (51) hide show
  1. {tricc_oo-1.5.8 → tricc_oo-1.5.9}/PKG-INFO +1 -1
  2. {tricc_oo-1.5.8 → tricc_oo-1.5.9}/pyproject.toml +1 -1
  3. {tricc_oo-1.5.8 → tricc_oo-1.5.9}/tricc_oo/converters/xml_to_tricc.py +0 -11
  4. {tricc_oo-1.5.8 → tricc_oo-1.5.9}/tricc_oo/models/base.py +7 -3
  5. {tricc_oo-1.5.8 → tricc_oo-1.5.9}/tricc_oo/models/tricc.py +3 -3
  6. {tricc_oo-1.5.8 → tricc_oo-1.5.9}/tricc_oo/strategies/input/drawio.py +1 -1
  7. {tricc_oo-1.5.8 → tricc_oo-1.5.9}/tricc_oo/visitors/tricc.py +73 -81
  8. {tricc_oo-1.5.8 → tricc_oo-1.5.9}/tricc_oo.egg-info/PKG-INFO +1 -1
  9. {tricc_oo-1.5.8 → tricc_oo-1.5.9}/README.md +0 -0
  10. {tricc_oo-1.5.8 → tricc_oo-1.5.9}/setup.cfg +0 -0
  11. {tricc_oo-1.5.8 → tricc_oo-1.5.9}/tests/build.py +0 -0
  12. {tricc_oo-1.5.8 → tricc_oo-1.5.9}/tests/test_cql.py +0 -0
  13. {tricc_oo-1.5.8 → tricc_oo-1.5.9}/tests/to_ocl.py +0 -0
  14. {tricc_oo-1.5.8 → tricc_oo-1.5.9}/tricc_oo/__init__.py +0 -0
  15. {tricc_oo-1.5.8 → tricc_oo-1.5.9}/tricc_oo/converters/__init__.py +0 -0
  16. {tricc_oo-1.5.8 → tricc_oo-1.5.9}/tricc_oo/converters/codesystem_to_ocl.py +0 -0
  17. {tricc_oo-1.5.8 → tricc_oo-1.5.9}/tricc_oo/converters/cql/cqlLexer.py +0 -0
  18. {tricc_oo-1.5.8 → tricc_oo-1.5.9}/tricc_oo/converters/cql/cqlListener.py +0 -0
  19. {tricc_oo-1.5.8 → tricc_oo-1.5.9}/tricc_oo/converters/cql/cqlParser.py +0 -0
  20. {tricc_oo-1.5.8 → tricc_oo-1.5.9}/tricc_oo/converters/cql/cqlVisitor.py +0 -0
  21. {tricc_oo-1.5.8 → tricc_oo-1.5.9}/tricc_oo/converters/cql_to_operation.py +0 -0
  22. {tricc_oo-1.5.8 → tricc_oo-1.5.9}/tricc_oo/converters/datadictionnary.py +0 -0
  23. {tricc_oo-1.5.8 → tricc_oo-1.5.9}/tricc_oo/converters/drawio_type_map.py +0 -0
  24. {tricc_oo-1.5.8 → tricc_oo-1.5.9}/tricc_oo/converters/tricc_to_xls_form.py +0 -0
  25. {tricc_oo-1.5.8 → tricc_oo-1.5.9}/tricc_oo/converters/utils.py +0 -0
  26. {tricc_oo-1.5.8 → tricc_oo-1.5.9}/tricc_oo/models/__init__.py +0 -0
  27. {tricc_oo-1.5.8 → tricc_oo-1.5.9}/tricc_oo/models/calculate.py +0 -0
  28. {tricc_oo-1.5.8 → tricc_oo-1.5.9}/tricc_oo/models/lang.py +0 -0
  29. {tricc_oo-1.5.8 → tricc_oo-1.5.9}/tricc_oo/models/ocl.py +0 -0
  30. {tricc_oo-1.5.8 → tricc_oo-1.5.9}/tricc_oo/models/ordered_set.py +0 -0
  31. {tricc_oo-1.5.8 → tricc_oo-1.5.9}/tricc_oo/parsers/__init__.py +0 -0
  32. {tricc_oo-1.5.8 → tricc_oo-1.5.9}/tricc_oo/parsers/xml.py +0 -0
  33. {tricc_oo-1.5.8 → tricc_oo-1.5.9}/tricc_oo/serializers/__init__.py +0 -0
  34. {tricc_oo-1.5.8 → tricc_oo-1.5.9}/tricc_oo/serializers/planuml.py +0 -0
  35. {tricc_oo-1.5.8 → tricc_oo-1.5.9}/tricc_oo/serializers/xls_form.py +0 -0
  36. {tricc_oo-1.5.8 → tricc_oo-1.5.9}/tricc_oo/strategies/__init__.py +0 -0
  37. {tricc_oo-1.5.8 → tricc_oo-1.5.9}/tricc_oo/strategies/input/__init__.py +0 -0
  38. {tricc_oo-1.5.8 → tricc_oo-1.5.9}/tricc_oo/strategies/input/base_input_strategy.py +0 -0
  39. {tricc_oo-1.5.8 → tricc_oo-1.5.9}/tricc_oo/strategies/output/base_output_strategy.py +0 -0
  40. {tricc_oo-1.5.8 → tricc_oo-1.5.9}/tricc_oo/strategies/output/spice.py +0 -0
  41. {tricc_oo-1.5.8 → tricc_oo-1.5.9}/tricc_oo/strategies/output/xls_form.py +0 -0
  42. {tricc_oo-1.5.8 → tricc_oo-1.5.9}/tricc_oo/strategies/output/xlsform_cdss.py +0 -0
  43. {tricc_oo-1.5.8 → tricc_oo-1.5.9}/tricc_oo/strategies/output/xlsform_cht.py +0 -0
  44. {tricc_oo-1.5.8 → tricc_oo-1.5.9}/tricc_oo/strategies/output/xlsform_cht_hf.py +0 -0
  45. {tricc_oo-1.5.8 → tricc_oo-1.5.9}/tricc_oo/visitors/__init__.py +0 -0
  46. {tricc_oo-1.5.8 → tricc_oo-1.5.9}/tricc_oo/visitors/utils.py +0 -0
  47. {tricc_oo-1.5.8 → tricc_oo-1.5.9}/tricc_oo/visitors/xform_pd.py +0 -0
  48. {tricc_oo-1.5.8 → tricc_oo-1.5.9}/tricc_oo.egg-info/SOURCES.txt +0 -0
  49. {tricc_oo-1.5.8 → tricc_oo-1.5.9}/tricc_oo.egg-info/dependency_links.txt +0 -0
  50. {tricc_oo-1.5.8 → tricc_oo-1.5.9}/tricc_oo.egg-info/requires.txt +0 -0
  51. {tricc_oo-1.5.8 → tricc_oo-1.5.9}/tricc_oo.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: tricc-oo
3
- Version: 1.5.8
3
+ Version: 1.5.9
4
4
  Summary: Python library that converts CDSS L2 in L3
5
5
  Project-URL: Homepage, https://github.com/SwissTPH/tricc
6
6
  Project-URL: Issues, https://github.com/SwissTPH/tricc/issues
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "tricc-oo"
7
- version = "1.5.8"
7
+ version = "1.5.9"
8
8
  description = "Python library that converts CDSS L2 in L3"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.8"
@@ -475,17 +475,6 @@ def get_max_version(dict):
475
475
  return max_version
476
476
 
477
477
 
478
- def update_calc_version(calculates, name):
479
- if name in calculates and len(calculates[name]) > 1:
480
- ordered_list = sorted(list(calculates[name].values()), key=lambda x: x.path_len)
481
- i = 1
482
- len_max = len(calculates[name])
483
- for elm in ordered_list:
484
- elm.version = i
485
- elm.last = (i == len_max)
486
- i += 1
487
-
488
-
489
478
  def get_max_named_version(calculates, name):
490
479
  max = 0
491
480
  if name in calculates:
@@ -106,7 +106,7 @@ class TriccBaseModel(BaseModel):
106
106
  external_id: triccId = None
107
107
  tricc_type: TriccNodeType
108
108
  datatype: str = None
109
- instance: int = 1
109
+ instance: int = 0
110
110
  base_instance: Optional[TriccBaseModel] = None
111
111
  last: bool = None
112
112
  version: int = 1
@@ -123,7 +123,9 @@ class TriccBaseModel(BaseModel):
123
123
  def to_dict(self):
124
124
  return {key: value for key, value in vars(self).items() if not key.startswith('_')}
125
125
 
126
- def make_instance(self, nb_instance, **kwargs):
126
+ def make_instance(self, nb_instance=None, **kwargs):
127
+ if nb_instance == None:
128
+ nb_instance = self.get_next_instance()
127
129
  instance = self.copy()
128
130
  attr_dict = self.to_dict()
129
131
  for attr, value in attr_dict.items():
@@ -257,7 +259,7 @@ class TriccNodeBaseModel(TriccBaseModel):
257
259
 
258
260
 
259
261
 
260
- def make_instance(self, instance_nb, activity=None):
262
+ def make_instance(self, instance_nb=None, activity=None):
261
263
  instance = super().make_instance(instance_nb)
262
264
  instance.group = activity
263
265
  if hasattr(self, 'activity') and activity is not None:
@@ -630,6 +632,8 @@ def not_clean(a):
630
632
  # @param list_or
631
633
  # @param and elm use upstream
632
634
  def clean_or_list(list_or, elm_and=None):
635
+ if len(list_or) == 1:
636
+ return list(list_or)
633
637
  if TriccStatic(True) in list_or:
634
638
  return [TriccStatic(True)]
635
639
  for a in list(list_or):
@@ -32,8 +32,8 @@ class TriccNodeCalculateBase(TriccNodeBaseModel):
32
32
  instance.reference = [e.copy() if isinstance(e, (TriccReference, TriccOperation)) else (TriccReference(e.name) if hasattr(e, 'name') else e) for e in self.reference]
33
33
  else:
34
34
  instance.reference = None
35
- version = self.version + 1
36
- instance.version = version
35
+ if instance.base_instance != self:
36
+ instance.version = self.version + 1
37
37
  return instance
38
38
 
39
39
  def __init__(self, **data):
@@ -85,7 +85,7 @@ class TriccNodeActivity(TriccNodeBaseModel):
85
85
  applicability: Optional[Union[Expression, TriccOperation]] = None
86
86
 
87
87
  # redefine
88
- def make_instance(self, instance_nb, **kwargs):
88
+ def make_instance(self, instance_nb=None, **kwargs):
89
89
  from tricc_oo.models.calculate import (
90
90
  TriccNodeDisplayBridge,
91
91
  TriccNodeBridge,
@@ -230,7 +230,7 @@ class DrawioStrategy(BaseInputStrategy):
230
230
  if int(other_page.instance) > int(max_instance):
231
231
  max_instance = other_page.instance
232
232
  # auto instance starts at 101
233
- next_page = next_page.make_instance(max(100, max_instance) + 1)
233
+ next_page = next_page.make_instance()
234
234
  else:
235
235
  # return existing instance if any
236
236
  next_page = next_page.make_instance(node.instance)
@@ -67,22 +67,22 @@ def get_last_version(name, processed_nodes, _list=None):
67
67
  # node is the node to calculate
68
68
  # processed_nodes are the list of processed nodes
69
69
  def get_node_expressions(node, processed_nodes, process=None):
70
- is_calculate = issubclass(node.__class__, TriccNodeCalculateBase) and not issubclass(node.__class__, (TriccNodeDisplayBridge,TriccNodeBridge))
70
+ get_overall_exp = issubclass(node.__class__, TriccNodeCalculateBase) and not issubclass(node.__class__, (TriccNodeDisplayBridge,TriccNodeBridge))
71
71
  expression = None
72
72
  # in case of recursive call processed_nodes will be None
73
73
  if processed_nodes is None or is_ready_to_process(node, processed_nodes=processed_nodes):
74
- expression = get_node_expression(node, processed_nodes=processed_nodes, is_calculate=is_calculate, process=process)
74
+ expression = get_node_expression(node, processed_nodes=processed_nodes, get_overall_exp=get_overall_exp, process=process)
75
75
 
76
- if is_calculate:
77
- if expression and (not isinstance(expression, str) or expression != '') and expression is not TriccStatic(True) :
78
- num_expression = TriccOperation(
79
- TriccOperator.CAST_NUMBER,
80
- [expression]
81
- )
82
- elif expression is TriccStatic(True) or (not expression and is_calculate):
83
- expression = TriccStatic(True)
84
- else:
85
- expression = ''
76
+ # if get_overall_exp:
77
+ # if expression and (not isinstance(expression, str) or expression != '') and expression is not TriccStatic(True) :
78
+ # num_expression = TriccOperation(
79
+ # TriccOperator.CAST_NUMBER,
80
+ # [expression]
81
+ # )
82
+ # elif expression is TriccStatic(True) or (not expression and get_overall_exp):
83
+ # expression = TriccStatic(True)
84
+ # else:
85
+ # expression = None
86
86
  if (
87
87
  issubclass(node.__class__, TriccNodeCalculateBase)
88
88
  and not isinstance(expression, (TriccStatic, TriccReference, TriccOperation))
@@ -99,7 +99,7 @@ def set_last_version_false(node, processed_nodes):
99
99
  last_version = processed_nodes.find_prev(node, version_filter(node_name))
100
100
  if last_version and getattr(node, 'process', '') != 'pause':
101
101
  # 0-100 for manually specified instance. 100-200 for auto instance
102
- node.version = get_next_version(node.name, processed_nodes, last_version.version + 1, 0)
102
+ node.version = get_next_version(node.name, processed_nodes, last_version.version, 0)
103
103
  last_version.last = False
104
104
  node.path_len = max(node.path_len, last_version.path_len + 1)
105
105
  return last_version
@@ -194,7 +194,7 @@ def process_calculate(node,processed_nodes, stashed_nodes, calculates, used_calc
194
194
  last_version = set_last_version_false(node, processed_nodes)
195
195
  if last_version:
196
196
  last_version = get_version_inheritance(node, last_version, processed_nodes)
197
- generate_calculates(node,calculates, used_calculates,processed_nodes=processed_nodes)
197
+ generate_calculates(node,calculates, used_calculates,processed_nodes=processed_nodes, process=process)
198
198
 
199
199
 
200
200
 
@@ -254,8 +254,7 @@ def process_calculate(node,processed_nodes, stashed_nodes, calculates, used_calc
254
254
 
255
255
  elif hasattr(node, 'relevance'):
256
256
  node.relevance = version_relevance
257
-
258
- #update_calc_version(calculates,node_name)
257
+
259
258
  #if hasattr(node, 'next_nodes'):
260
259
  #node.next_nodes=reorder_node_list(node.next_nodes, node.group)
261
260
  process_reference(
@@ -283,16 +282,7 @@ def process_calculate(node,processed_nodes, stashed_nodes, calculates, used_calc
283
282
 
284
283
  return False
285
284
 
286
- def update_calc_version(calculates,name):
287
- if name in calculates and len(calculates[name])>1:
288
- ordered_list = sorted(list(calculates[name].values()), key=lambda x:x.path_len)
289
- i = 1
290
- len_max=len(calculates[name])
291
- for elm in ordered_list:
292
- elm.version=i
293
- elm.last= (i == len_max)
294
- i+=1
295
-
285
+
296
286
 
297
287
  def get_max_named_version(calculates,name):
298
288
  max = 0
@@ -417,7 +407,7 @@ def inject_node_before(before, node, activity):
417
407
 
418
408
 
419
409
 
420
- def generate_calculates(node,calculates, used_calculates,processed_nodes):
410
+ def generate_calculates(node,calculates, used_calculates,processed_nodes, process):
421
411
  list_calc = []
422
412
  count_node = None
423
413
  ## add select calcualte
@@ -473,7 +463,10 @@ def generate_calculates(node,calculates, used_calculates,processed_nodes):
473
463
  calculate_name=node.save
474
464
  if node.name != calculate_name:
475
465
  calc_id = generate_id(f"autosave{node.id}")
476
-
466
+ if issubclass(node.__class__, TriccNodeSelect) or isinstance(node, TriccNodeSelectNotAvailable):
467
+ expression = get_count_terms_details( node, processed_nodes, True, False, process)
468
+ else:
469
+ expression = get_node_expression(node,processed_nodes,True,True)
477
470
  calc_node = TriccNodeCalculate(
478
471
  name=calculate_name,
479
472
  id = calc_id,
@@ -483,7 +476,7 @@ def generate_calculates(node,calculates, used_calculates,processed_nodes):
483
476
  label = "save: " +node.get_name(),
484
477
  path_len=node.path_len+ 1,
485
478
  last=True,
486
- expression=get_node_expression(node,processed_nodes,True,True)
479
+ expression=expression
487
480
  )
488
481
  node.activity.calculates.append(calc_node)
489
482
  last_version = set_last_version_false(calc_node, processed_nodes)
@@ -1416,26 +1409,26 @@ def reorder_node_list(list_node, group, processed_nodes):
1416
1409
 
1417
1410
  # Define a lambda to assign numeric priorities
1418
1411
  def filter_logic(l_node):
1419
- priority = int(getattr(l_node, "priority", None) or 400) / 1000
1412
+ priority = int(getattr(l_node, "priority", None) or 400)
1420
1413
  if (
1421
1414
  isinstance(l_node, TriccNodeWait)
1422
1415
  and any(isinstance(rn, TriccNodeActivity) and any(sn.activity == rn for sn in list_node) for rn in l_node.reference)
1423
1416
  ):
1424
1417
  pass
1425
1418
  elif group is not None and hasattr(l_node, 'group') and l_node.group and l_node.group.id == group.id:
1426
- priority += 7 # Highest priority: Same group
1419
+ priority += 7000 # Highest priority: Same group
1427
1420
  elif issubclass(l_node.__class__, TriccRhombusMixIn) :
1428
- priority += 1
1421
+ priority += 1000
1429
1422
  elif hasattr(group, 'group') and group.group and l_node.group and l_node.group.id == group.group.id:
1430
- priority += 6 # Second priority: Parent group
1423
+ priority += 6000 # Second priority: Parent group
1431
1424
  elif not isinstance(l_node.activity.root, TriccNodeActivityStart) and l_node.activity in active_activities:
1432
- priority += 5 # Third priority: Active activities
1425
+ priority += 5000 # Third priority: Active activities
1433
1426
  elif not isinstance(l_node.activity.root, TriccNodeActivityStart):
1434
- priority += 4 # Third priority: Active activities
1427
+ priority += 4000 # Third priority: Active activities
1435
1428
  elif l_node.activity in active_activities:
1436
- priority += 3 # Third priority: Active activities
1429
+ priority += 3000 # Third priority: Active activities
1437
1430
  else:
1438
- priority += 2 # Lowest priority: Others
1431
+ priority += 2000 # Lowest priority: Others
1439
1432
  return priority
1440
1433
 
1441
1434
  # Sort list_node in place using filter_logic as the key
@@ -1478,17 +1471,17 @@ def get_extended_next_nodes(node):
1478
1471
 
1479
1472
 
1480
1473
  # calculate or retrieve a node expression
1481
- def get_node_expression( in_node, processed_nodes, is_calculate=False, is_prev=False, negate=False, process=None):
1474
+ def get_node_expression( in_node, processed_nodes, get_overall_exp=False, is_prev=False, negate=False, process=None):
1482
1475
  # in case of calculate we only use the select multiple if none is not selected
1483
1476
  expression = None
1484
1477
  negate_expression = None
1485
1478
  node = in_node
1486
1479
  if isinstance(node, (TriccNodeActivityStart,TriccNodeMainStart)):
1487
- if is_prev and is_calculate:
1480
+ if is_prev and get_overall_exp:
1488
1481
  expression = get_node_expression(
1489
1482
  node.activity,
1490
1483
  processed_nodes=processed_nodes,
1491
- is_calculate=is_calculate,
1484
+ get_overall_exp=True,
1492
1485
  is_prev=is_prev,
1493
1486
  negate=negate,
1494
1487
  process=process
@@ -1504,7 +1497,7 @@ def get_node_expression( in_node, processed_nodes, is_calculate=False, is_prev=F
1504
1497
  return get_node_expression(
1505
1498
  node.path,
1506
1499
  processed_nodes=processed_nodes,
1507
- is_calculate=is_calculate,
1500
+ get_overall_exp=get_overall_exp,
1508
1501
  is_prev=True,
1509
1502
  process=process
1510
1503
  )
@@ -1529,7 +1522,7 @@ def get_node_expression( in_node, processed_nodes, is_calculate=False, is_prev=F
1529
1522
  prev_exp = get_node_expression(
1530
1523
  node.path,
1531
1524
  processed_nodes=processed_nodes,
1532
- is_calculate=False,
1525
+ get_overall_exp=get_overall_exp,
1533
1526
  is_prev=True,
1534
1527
  process=process)
1535
1528
  if prev_exp and expression:
@@ -1547,8 +1540,6 @@ def get_node_expression( in_node, processed_nodes, is_calculate=False, is_prev=F
1547
1540
  logger.critical(f"Rhombus without expression {node.get_name()}")
1548
1541
  elif is_prev and issubclass(node.__class__, TriccNodeDisplayCalculateBase):
1549
1542
  expression = TriccOperation(TriccOperator.ISTRUE, [node])
1550
- elif is_prev and is_calculate and (issubclass(node.__class__, TriccNodeSelect) or isinstance(node, TriccNodeSelectNotAvailable)):
1551
- expression = get_count_terms_details( node, processed_nodes, is_calculate, negate, process)
1552
1543
  elif hasattr(node, 'expression_reference') and isinstance(node.expression_reference, TriccOperation):
1553
1544
  # if issubclass(node.__class__, TriccNodeDisplayCalculateBase):
1554
1545
  # expression = TriccOperation(
@@ -1572,17 +1563,17 @@ def get_node_expression( in_node, processed_nodes, is_calculate=False, is_prev=F
1572
1563
  )
1573
1564
  elif issubclass(node.__class__, TriccNodeCalculateBase):
1574
1565
  if negate:
1575
- negate_expression = get_calculation_terms(node, processed_nodes=processed_nodes, is_calculate=is_calculate, negate=True, process=process)
1566
+ negate_expression = get_calculation_terms(node, processed_nodes=processed_nodes, get_overall_exp=get_overall_exp, negate=True, process=process)
1576
1567
  else:
1577
- expression = get_calculation_terms(node, processed_nodes=processed_nodes, is_calculate=is_calculate, process=process)
1568
+ expression = get_calculation_terms(node, processed_nodes=processed_nodes, get_overall_exp=get_overall_exp, process=process)
1578
1569
 
1579
1570
  elif (not is_prev or not ONE_QUESTION_AT_A_TIME) and hasattr(node, 'relevance') and isinstance(node.relevance, (TriccOperation, TriccStatic)):
1580
1571
  expression = node.relevance
1581
- elif ONE_QUESTION_AT_A_TIME and is_prev and not is_calculate and hasattr(node, 'required') and node.required:
1572
+ elif ONE_QUESTION_AT_A_TIME and is_prev and not get_overall_exp and hasattr(node, 'required') and node.required:
1582
1573
  expression = get_required_node_expression(node)
1583
1574
 
1584
1575
  if expression is None:
1585
- expression = get_prev_node_expression(node, processed_nodes=processed_nodes, is_calculate=is_calculate, process=process)
1576
+ expression = get_prev_node_expression(node, processed_nodes=processed_nodes, get_overall_exp=get_overall_exp, process=process)
1586
1577
  # in_node not in processed_nodes is need for calculates that can but run after the end of the activity
1587
1578
  #if isinstance(node, TriccNodeActivitiy) and not prev:
1588
1579
  # expression = get_applicability_expression(node, processed_nodes, process, expression)
@@ -1625,7 +1616,7 @@ def get_prev_instance_skip_expression(node, processed_nodes, process, expression
1625
1616
  get_node_expression(
1626
1617
  past_instance,
1627
1618
  processed_nodes=processed_nodes,
1628
- is_calculate=False,
1619
+ get_overall_exp=True,
1629
1620
  is_prev=True,
1630
1621
  process=process
1631
1622
  )
@@ -1809,7 +1800,7 @@ def create_determine_diagnosis_activity(diags):
1809
1800
 
1810
1801
  return activity
1811
1802
 
1812
- def get_prev_node_expression( node, processed_nodes, is_calculate=False, excluded_name=None, process=None):
1803
+ def get_prev_node_expression( node, processed_nodes, get_overall_exp=False, excluded_name=None, process=None):
1813
1804
  expression = None
1814
1805
  if node is None:
1815
1806
  pass
@@ -1826,18 +1817,18 @@ def get_prev_node_expression( node, processed_nodes, is_calculate=False, exclude
1826
1817
  prev_activities[prev_node.activity.id].append(prev_node)
1827
1818
 
1828
1819
  for act_id in prev_activities:
1820
+ act_expression_inputs = []
1829
1821
  for prev_node in prev_activities[act_id]:
1830
- act_expression_inputs = []
1831
1822
  if excluded_name is None or prev_node != excluded_name or (
1832
1823
  isinstance(excluded_name, str) and hasattr(prev_node, 'name') and prev_node.name != excluded_name): # or isinstance(prev_node, TriccNodeActivityEnd):
1833
1824
  # the rhombus should calculate only reference
1834
1825
  sub = get_node_expression(
1835
1826
  prev_node,
1836
1827
  processed_nodes=processed_nodes,
1837
- is_calculate=is_calculate,
1828
+ get_overall_exp=get_overall_exp,
1838
1829
  is_prev=True,
1839
1830
  process=process)
1840
- if isinstance(node, TriccNodeActivity) or is_calculate:
1831
+ if isinstance(node, TriccNodeActivity) or get_overall_exp:
1841
1832
  add_sub_expression(act_expression_inputs, sub )
1842
1833
  else:
1843
1834
  add_sub_expression(expression_inputs, sub )
@@ -1845,14 +1836,14 @@ def get_prev_node_expression( node, processed_nodes, is_calculate=False, exclude
1845
1836
  if act_expression_inputs:
1846
1837
  act_sub = or_join(act_expression_inputs)
1847
1838
  if act_sub == TriccStatic(True):
1848
- act_sub = get_node_expression(
1849
- prev_node.activity,
1850
- processed_nodes=processed_nodes,
1851
- is_calculate=True,
1852
- is_prev=True,
1853
- negate=False,
1854
- process=process
1855
- )
1839
+ act_sub = get_node_expression(
1840
+ prev_node.activity,
1841
+ processed_nodes=processed_nodes,
1842
+ get_overall_exp=True,
1843
+ is_prev=True,
1844
+ negate=False,
1845
+ process=process
1846
+ )
1856
1847
  add_sub_expression(expression_inputs, act_sub )
1857
1848
  # avoid void is there is not conditions to avoid looping too much itme
1858
1849
  # expression_inputs = clean_or_list(
@@ -1882,17 +1873,17 @@ def get_activity_end_terms( node, processed_nodes, process=None):
1882
1873
  get_node_expression(
1883
1874
  end_node,
1884
1875
  processed_nodes=processed_nodes,
1885
- is_calculate=False,
1876
+ get_overall_exp=False,
1886
1877
  is_prev=True,
1887
1878
  process=process))
1888
1879
 
1889
1880
  return or_join(expression_inputs)
1890
1881
 
1891
- def get_count_terms( node, processed_nodes, is_calculate, negate=False, process=None):
1882
+ def get_count_terms( node, processed_nodes, get_overall_exp, negate=False, process=None):
1892
1883
  terms = []
1893
1884
 
1894
1885
  for prev_node in node.prev_nodes:
1895
- term = get_count_terms_details( prev_node, processed_nodes, is_calculate, negate, process)
1886
+ term = get_count_terms_details( prev_node, processed_nodes, get_overall_exp, negate, process)
1896
1887
  if term:
1897
1888
  terms.append(term)
1898
1889
  if len(terms) == 1:
@@ -1911,7 +1902,7 @@ def get_count_terms( node, processed_nodes, is_calculate, negate=False, process=
1911
1902
  ]
1912
1903
  )
1913
1904
 
1914
- def get_count_terms_details( prev_node, processed_nodes, is_calculate, negate=False, process=None):
1905
+ def get_count_terms_details( prev_node, processed_nodes, get_overall_exp, negate=False, process=None):
1915
1906
  operation_none = TriccOperation(
1916
1907
  TriccOperator.SELECTED,
1917
1908
  [
@@ -1974,7 +1965,7 @@ def get_count_terms_details( prev_node, processed_nodes, is_calculate, negate=Fa
1974
1965
  get_node_expression(
1975
1966
  prev_node,
1976
1967
  processed_nodes=processed_nodes,
1977
- is_calculate=False,
1968
+ get_overall_exp=True,
1978
1969
  is_prev=True,
1979
1970
  process=process)
1980
1971
  ]),
@@ -1991,7 +1982,7 @@ def get_count_terms_details( prev_node, processed_nodes, is_calculate, negate=Fa
1991
1982
  get_node_expression(
1992
1983
  prev_node,
1993
1984
  processed_nodes=processed_nodes,
1994
- is_calculate=False,
1985
+ get_overall_exp=True,
1995
1986
  is_prev=True,
1996
1987
  process=process)
1997
1988
  ]
@@ -1999,7 +1990,7 @@ def get_count_terms_details( prev_node, processed_nodes, is_calculate, negate=Fa
1999
1990
 
2000
1991
 
2001
1992
 
2002
- def get_add_terms( node, processed_nodes, is_calculate=False, negate=False, process=None):
1993
+ def get_add_terms( node, processed_nodes, get_overall_exp=False, negate=False, process=None):
2003
1994
  if negate:
2004
1995
  logger.warning("negate not supported for Add node {}".format(node.get_name()))
2005
1996
  terms = []
@@ -2022,7 +2013,7 @@ def get_add_terms( node, processed_nodes, is_calculate=False, negate=False, proc
2022
2013
  get_node_expression(
2023
2014
  prev_node,
2024
2015
  processed_nodes=processed_nodes,
2025
- is_calculate=False,
2016
+ get_overall_exp=True,
2026
2017
  is_prev=True,
2027
2018
  process=process)
2028
2019
  ]
@@ -2041,7 +2032,7 @@ def get_add_terms( node, processed_nodes, is_calculate=False, negate=False, proc
2041
2032
  )
2042
2033
  return operation
2043
2034
 
2044
- def get_rhombus_terms( node, processed_nodes, is_calculate=False, negate=False, process=None):
2035
+ def get_rhombus_terms( node, processed_nodes, get_overall_exp=False, negate=False, process=None):
2045
2036
  expression = None
2046
2037
  left_term = None
2047
2038
  operator = None
@@ -2059,7 +2050,7 @@ def get_rhombus_terms( node, processed_nodes, is_calculate=False, negate=False,
2059
2050
  expression = get_node_expression(
2060
2051
  ref,
2061
2052
  processed_nodes=processed_nodes,
2062
- is_calculate=True,
2053
+ get_overall_exp=True,
2063
2054
  is_prev=True,
2064
2055
  process=process
2065
2056
  )
@@ -2099,7 +2090,7 @@ def get_rhombus_terms( node, processed_nodes, is_calculate=False, negate=False,
2099
2090
  get_node_expression(
2100
2091
  expression,
2101
2092
  processed_nodes=processed_nodes,
2102
- is_calculate=True,
2093
+ get_overall_exp=True,
2103
2094
  is_prev=True,
2104
2095
  process=process
2105
2096
  )
@@ -2129,9 +2120,9 @@ def get_rhombus_terms( node, processed_nodes, is_calculate=False, negate=False,
2129
2120
  # function that generate the calculation terms return by calculate node
2130
2121
  # @param node calculate node to assess
2131
2122
  # @param processed_nodes list of node already processed, importnat because only processed node could be use
2132
- # @param is_calculate used when this funciton is called in the evaluation of another calculate
2123
+ # @param get_overall_exp used when this funciton is called in the evaluation of another calculate
2133
2124
  # @param negate use to retriece the negation of a calculation
2134
- def get_calculation_terms( node, processed_nodes, is_calculate=False, negate=False, process=None):
2125
+ def get_calculation_terms( node, processed_nodes, get_overall_exp=False, negate=False, process=None):
2135
2126
  # returns something directly only if the negate is managed
2136
2127
  expression = None
2137
2128
  if isinstance(node, TriccNodeAdd):
@@ -2142,7 +2133,7 @@ def get_calculation_terms( node, processed_nodes, is_calculate=False, negate=Fal
2142
2133
  return get_rhombus_terms(
2143
2134
  node,
2144
2135
  processed_nodes=processed_nodes,
2145
- is_calculate=False,
2136
+ get_overall_exp=False,
2146
2137
  negate=negate,
2147
2138
  process=process
2148
2139
  )
@@ -2151,11 +2142,11 @@ def get_calculation_terms( node, processed_nodes, is_calculate=False, negate=Fal
2151
2142
  expression = None
2152
2143
  # in case of calulate expression evaluation, we need to get the relevance of the activity
2153
2144
  # because calculate are not the the activity group
2154
- elif isinstance(node, (TriccNodeActivityStart)) and is_calculate:
2155
- expression = get_prev_node_expression(node.activity, processed_nodes=processed_nodes, is_calculate=is_calculate, negate=negate, process=process)
2145
+ elif isinstance(node, (TriccNodeActivityStart)) and get_overall_exp:
2146
+ expression = get_prev_node_expression(node.activity, processed_nodes=processed_nodes, get_overall_exp=get_overall_exp, negate=negate, process=process)
2156
2147
  elif isinstance(node, (TriccNodeActivityStart, TriccNodeActivityEnd)):
2157
2148
  # the group have the relevance for the activity, not needed to replicate it
2158
- expression = None #return get_prev_node_expression(node.activity, processed_nodes, is_calculate=False, excluded_name=None)
2149
+ expression = None #return get_prev_node_expression(node.activity, processed_nodes, get_overall_exp=False, excluded_name=None)
2159
2150
  elif isinstance(node, TriccNodeExclusive):
2160
2151
  if len(node.prev_nodes) == 1:
2161
2152
  iterator = iter(node.prev_nodes)
@@ -2167,6 +2158,7 @@ def get_calculation_terms( node, processed_nodes, is_calculate=False, negate=Fal
2167
2158
  return get_node_expression(
2168
2159
  node_to_negate,
2169
2160
  processed_nodes=processed_nodes,
2161
+ get_overall_exp=True,
2170
2162
  is_prev=True,
2171
2163
  negate=True,
2172
2164
  process=process
@@ -2175,7 +2167,7 @@ def get_calculation_terms( node, processed_nodes, is_calculate=False, negate=Fal
2175
2167
  return get_node_expression(
2176
2168
  node_to_negate,
2177
2169
  processed_nodes=processed_nodes,
2178
- is_calculate=False,
2170
+ get_overall_exp=True,
2179
2171
  is_prev=True,
2180
2172
  negate=True,
2181
2173
  process=process
@@ -2191,14 +2183,14 @@ def get_calculation_terms( node, processed_nodes, is_calculate=False, negate=Fal
2191
2183
  if isinstance(node.expression_reference, (TriccOperation, TriccStatic)):
2192
2184
  expression = node.expression_reference
2193
2185
  elif node.reference is not None and node.expression_reference is not None :
2194
- expression = get_prev_node_expression(node, processed_nodes=processed_nodes, is_calculate=is_calculate, process=process)
2186
+ expression = get_prev_node_expression(node, processed_nodes=processed_nodes, get_overall_exp=get_overall_exp, process=process)
2195
2187
  ref_expression = node.expression_reference.format(*[get_export_name(ref) for ref in node.reference])
2196
2188
  if expression is not None and expression != '':
2197
2189
  expression = and_join([expression,ref_expression])
2198
2190
  else:
2199
2191
  expression = ref_expression
2200
2192
  elif expression is None:
2201
- expression = get_prev_node_expression(node, processed_nodes=processed_nodes, is_calculate=is_calculate, process=process)
2193
+ expression = get_prev_node_expression(node, processed_nodes=processed_nodes, get_overall_exp=get_overall_exp, process=process)
2202
2194
 
2203
2195
  # manage the generic negation
2204
2196
  if negate:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: tricc-oo
3
- Version: 1.5.8
3
+ Version: 1.5.9
4
4
  Summary: Python library that converts CDSS L2 in L3
5
5
  Project-URL: Homepage, https://github.com/SwissTPH/tricc
6
6
  Project-URL: Issues, https://github.com/SwissTPH/tricc/issues
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes