From 5c55b48f20a9f0d96f449231165b34b35f6f665e Mon Sep 17 00:00:00 2001 From: mackles Date: Thu, 2 Oct 2025 10:38:39 -0700 Subject: [PATCH] fix: remove unneccesary invocation table creation Signed-off-by: mackles --- sqlonfhir/__init__.py | 2 +- sqlonfhir/sqlonfhir.py | 25 +++++++++++++------------ 2 files changed, 14 insertions(+), 13 deletions(-) diff --git a/sqlonfhir/__init__.py b/sqlonfhir/__init__.py index 30499e8..2584813 100644 --- a/sqlonfhir/__init__.py +++ b/sqlonfhir/__init__.py @@ -3,6 +3,6 @@ __version__ = "0.0.2" -from .sqlonfhir import eval as evaluate +from .sqlonfhir import evaluate as evaluate __all__ = ["evaluate"] diff --git a/sqlonfhir/sqlonfhir.py b/sqlonfhir/sqlonfhir.py index ce689b8..c072564 100644 --- a/sqlonfhir/sqlonfhir.py +++ b/sqlonfhir/sqlonfhir.py @@ -5,7 +5,7 @@ from fhirpathpy.models import models -def eval(resources, view_definition): +def evaluate(resources, view_definition): """Evaluate FHIR resources against a SQL on FHIR view definition. Processes a list of FHIR resources and transforms into tabular data based @@ -46,17 +46,18 @@ def eval_fhirpath(self, resource, path): # $this is not in the FHIRPath spec, replacing as per # reference implementation path = path.replace("$this", "identity()") - # Add functions to FHIRPath that are needed for SQL on FHIR - user_invocation_table = { - "getReferenceKey": { - "fn": self.get_reference_key, - "arity": {0: [], 1: ["Identifier"]}, - }, - "getResourceKey": {"fn": self.get_resource_key}, - "identity": {"fn": self.identity}, - } if path not in self.fhirpath_cache: + # Add functions to FHIRPath that are needed for SQL on FHIR + user_invocation_table = { + "getReferenceKey": { + "fn": self.get_reference_key, + "arity": {0: [], 1: ["Identifier"]}, + }, + "getResourceKey": {"fn": self.get_resource_key}, + "identity": {"fn": self.identity}, + } + self.fhirpath_cache[path] = compile( path, model=models["r4"], @@ -86,10 +87,10 @@ def get_all_child_columns(self, expression): empty_record[column["name"]] = None if "select" in expression: for selection in expression["select"]: - empty_record = empty_record | self.get_all_child_columns(selection) + empty_record |= self.get_all_child_columns(selection) if "unionAll" in expression: for selection in expression["unionAll"]: - empty_record = empty_record | self.get_all_child_columns(selection) + empty_record |= self.get_all_child_columns(selection) return empty_record def for_each_or_null(self, expr, resource, view_definition):