pysof 0.1.47__tar.gz → 0.2.1__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.
- {pysof-0.1.47 → pysof-0.2.1}/Cargo.toml +8 -5
- {pysof-0.1.47 → pysof-0.2.1}/PKG-INFO +39 -1
- {pysof-0.1.47 → pysof-0.2.1}/README.md +38 -0
- {pysof-0.1.47 → pysof-0.2.1}/crates/fhir/Cargo.toml +7 -3
- pysof-0.2.1/crates/fhir/src/compartment_expressions/mod.rs +20 -0
- pysof-0.2.1/crates/fhir/src/compartment_expressions/r4.rs +584 -0
- pysof-0.2.1/crates/fhir/src/compartment_expressions/r4b.rs +584 -0
- pysof-0.2.1/crates/fhir/src/compartment_expressions/r5.rs +677 -0
- pysof-0.2.1/crates/fhir/src/compartment_expressions/r6.rs +743 -0
- {pysof-0.1.47 → pysof-0.2.1}/crates/fhir/src/lib.rs +273 -34
- {pysof-0.1.47 → pysof-0.2.1}/crates/fhir/src/r4.rs +22201 -0
- {pysof-0.1.47 → pysof-0.2.1}/crates/fhir/src/r4b.rs +22580 -0
- {pysof-0.1.47 → pysof-0.2.1}/crates/fhir/src/r5.rs +29058 -0
- {pysof-0.1.47 → pysof-0.2.1}/crates/fhir/src/r6.rs +27084 -1226
- pysof-0.2.1/crates/fhir/src/search/errors.rs +175 -0
- pysof-0.2.1/crates/fhir/src/search/loader.rs +729 -0
- pysof-0.2.1/crates/fhir/src/search/mod.rs +27 -0
- pysof-0.2.1/crates/fhir/src/search/registry.rs +657 -0
- pysof-0.2.1/crates/fhir/src/search/types.rs +73 -0
- {pysof-0.1.47 → pysof-0.2.1}/crates/fhir-macro/Cargo.toml +1 -1
- {pysof-0.1.47 → pysof-0.2.1}/crates/fhir-macro/src/lib.rs +68 -34
- {pysof-0.1.47 → pysof-0.2.1}/crates/fhirpath/Cargo.toml +4 -3
- {pysof-0.1.47 → pysof-0.2.1}/crates/fhirpath/README.md +13 -1
- {pysof-0.1.47 → pysof-0.2.1}/crates/fhirpath/src/aggregate_function.rs +3 -3
- {pysof-0.1.47 → pysof-0.2.1}/crates/fhirpath/src/aggregate_math_functions.rs +38 -26
- {pysof-0.1.47 → pysof-0.2.1}/crates/fhirpath/src/boolean_functions.rs +8 -8
- {pysof-0.1.47 → pysof-0.2.1}/crates/fhirpath/src/boundary_functions.rs +18 -18
- {pysof-0.1.47 → pysof-0.2.1}/crates/fhirpath/src/cli.rs +17 -16
- {pysof-0.1.47 → pysof-0.2.1}/crates/fhirpath/src/collection_functions.rs +23 -23
- {pysof-0.1.47 → pysof-0.2.1}/crates/fhirpath/src/collection_navigation.rs +4 -4
- {pysof-0.1.47 → pysof-0.2.1}/crates/fhirpath/src/contains_function.rs +13 -11
- {pysof-0.1.47 → pysof-0.2.1}/crates/fhirpath/src/conversion_functions.rs +12 -12
- {pysof-0.1.47 → pysof-0.2.1}/crates/fhirpath/src/date_operation.rs +10 -10
- {pysof-0.1.47 → pysof-0.2.1}/crates/fhirpath/src/datetime_impl.rs +123 -70
- {pysof-0.1.47 → pysof-0.2.1}/crates/fhirpath/src/distinct_functions.rs +8 -6
- {pysof-0.1.47 → pysof-0.2.1}/crates/fhirpath/src/evaluator.rs +622 -521
- {pysof-0.1.47 → pysof-0.2.1}/crates/fhirpath/src/extension_function.rs +3 -3
- pysof-0.2.1/crates/fhirpath/src/fhir_type_hierarchy.rs +60 -0
- {pysof-0.1.47 → pysof-0.2.1}/crates/fhirpath/src/format_functions.rs +6 -6
- {pysof-0.1.47 → pysof-0.2.1}/crates/fhirpath/src/handlers.rs +28 -26
- {pysof-0.1.47 → pysof-0.2.1}/crates/fhirpath/src/interval_functions.rs +3 -3
- {pysof-0.1.47 → pysof-0.2.1}/crates/fhirpath/src/lib.rs +21 -12
- {pysof-0.1.47 → pysof-0.2.1}/crates/fhirpath/src/long_conversion.rs +10 -8
- {pysof-0.1.47 → pysof-0.2.1}/crates/fhirpath/src/models.rs +6 -0
- {pysof-0.1.47 → pysof-0.2.1}/crates/fhirpath/src/not_function.rs +3 -3
- {pysof-0.1.47 → pysof-0.2.1}/crates/fhirpath/src/parser.rs +127 -48
- {pysof-0.1.47 → pysof-0.2.1}/crates/fhirpath/src/polymorphic_access.rs +110 -50
- {pysof-0.1.47 → pysof-0.2.1}/crates/fhirpath/src/reference_key_functions.rs +16 -16
- {pysof-0.1.47 → pysof-0.2.1}/crates/fhirpath/src/repeat_function.rs +1 -1
- pysof-0.2.1/crates/fhirpath/src/resolve_function.rs +455 -0
- {pysof-0.1.47 → pysof-0.2.1}/crates/fhirpath/src/resource_type.rs +76 -66
- {pysof-0.1.47 → pysof-0.2.1}/crates/fhirpath/src/server.rs +61 -5
- {pysof-0.1.47 → pysof-0.2.1}/crates/fhirpath/src/set_operations.rs +14 -14
- {pysof-0.1.47 → pysof-0.2.1}/crates/fhirpath/src/terminology_functions.rs +21 -21
- {pysof-0.1.47 → pysof-0.2.1}/crates/fhirpath/src/type_function.rs +15 -12
- {pysof-0.1.47 → pysof-0.2.1}/crates/fhirpath/src/type_inference.rs +65 -23
- {pysof-0.1.47 → pysof-0.2.1}/crates/fhirpath/src/ucum.rs +20 -0
- {pysof-0.1.47 → pysof-0.2.1}/crates/fhirpath/tests/all_function_tests.rs +3 -3
- {pysof-0.1.47 → pysof-0.2.1}/crates/fhirpath/tests/common/context.rs +24 -9
- {pysof-0.1.47 → pysof-0.2.1}/crates/fhirpath/tests/common/runner.rs +34 -21
- {pysof-0.1.47 → pysof-0.2.1}/crates/fhirpath/tests/context_trace_test.rs +2 -2
- pysof-0.2.1/crates/fhirpath/tests/data/r5/input/diagnosticreport-eric.json +153 -0
- {pysof-0.1.47 → pysof-0.2.1}/crates/fhirpath/tests/data/r5/known-test-failures.json +2 -7
- {pysof-0.1.47 → pysof-0.2.1}/crates/fhirpath/tests/date_operation_tests.rs +1 -1
- {pysof-0.1.47 → pysof-0.2.1}/crates/fhirpath/tests/enhanced_variable_tests.rs +1 -1
- {pysof-0.1.47 → pysof-0.2.1}/crates/fhirpath/tests/evaluator_tests.rs +40 -25
- pysof-0.2.1/crates/fhirpath/tests/http_compression.rs +261 -0
- {pysof-0.1.47 → pysof-0.2.1}/crates/fhirpath/tests/join_function_test.rs +6 -10
- {pysof-0.1.47 → pysof-0.2.1}/crates/fhirpath/tests/parse_debug_test.rs +62 -0
- {pysof-0.1.47 → pysof-0.2.1}/crates/fhirpath/tests/precision_tests.rs +7 -7
- pysof-0.2.1/crates/fhirpath/tests/primitive_extension_tests.rs +199 -0
- {pysof-0.1.47 → pysof-0.2.1}/crates/fhirpath/tests/r4_tests.rs +41 -20
- {pysof-0.1.47 → pysof-0.2.1}/crates/fhirpath/tests/tree_navigation_tests.rs +8 -8
- {pysof-0.1.47 → pysof-0.2.1}/crates/fhirpath/tests/type_preservation_integration_test.rs +2 -2
- {pysof-0.1.47 → pysof-0.2.1}/crates/fhirpath/tests/type_reflection_tests.rs +24 -20
- pysof-0.2.1/crates/fhirpath/tests/unicode_scalar_value_tests.rs +175 -0
- {pysof-0.1.47 → pysof-0.2.1}/crates/fhirpath/tests/uri_type_test.rs +5 -4
- {pysof-0.1.47 → pysof-0.2.1}/crates/fhirpath/tests/uuid_type_preservation_test.rs +2 -2
- {pysof-0.1.47 → pysof-0.2.1}/crates/fhirpath-support/src/lib.rs +246 -148
- {pysof-0.1.47 → pysof-0.2.1}/crates/pysof/Cargo.toml +8 -5
- {pysof-0.1.47 → pysof-0.2.1}/crates/pysof/README.md +38 -0
- pysof-0.2.1/crates/pysof/python-tests/test_remote_resolve.py +141 -0
- {pysof-0.1.47 → pysof-0.2.1}/crates/pysof/src/lib.rs +333 -2
- {pysof-0.1.47 → pysof-0.2.1}/crates/pysof/src/pysof/__init__.py +131 -0
- {pysof-0.1.47 → pysof-0.2.1/crates/pysof}/src/pysof/_pysof.pyi +42 -0
- {pysof-0.1.47 → pysof-0.2.1}/crates/pysof/tests/lib_coverage_tests.rs +1 -0
- {pysof-0.1.47 → pysof-0.2.1}/crates/sof/Cargo.toml +18 -4
- {pysof-0.1.47 → pysof-0.2.1}/crates/sof/README.md +21 -7
- {pysof-0.1.47 → pysof-0.2.1}/crates/sof/src/cli.rs +110 -18
- pysof-0.2.1/crates/sof/src/compartment.rs +327 -0
- pysof-0.2.1/crates/sof/src/constants.rs +354 -0
- {pysof-0.1.47 → pysof-0.2.1}/crates/sof/src/error.rs +30 -3
- pysof-0.2.1/crates/sof/src/fhir_format.rs +275 -0
- {pysof-0.1.47 → pysof-0.2.1}/crates/sof/src/handlers.rs +539 -274
- {pysof-0.1.47 → pysof-0.2.1}/crates/sof/src/lib.rs +935 -156
- {pysof-0.1.47 → pysof-0.2.1}/crates/sof/src/models.rs +108 -224
- pysof-0.2.1/crates/sof/src/params.rs +451 -0
- pysof-0.2.1/crates/sof/src/parquet_zip.rs +72 -0
- pysof-0.2.1/crates/sof/src/reference_collector.rs +185 -0
- pysof-0.2.1/crates/sof/src/remote_fetch.rs +369 -0
- pysof-0.2.1/crates/sof/src/remote_resolver.rs +856 -0
- pysof-0.2.1/crates/sof/src/server.rs +904 -0
- pysof-0.2.1/crates/sof/src/sqlquery/bind.rs +322 -0
- pysof-0.2.1/crates/sof/src/sqlquery/engine.rs +531 -0
- pysof-0.2.1/crates/sof/src/sqlquery/library.rs +491 -0
- pysof-0.2.1/crates/sof/src/sqlquery/mod.rs +63 -0
- pysof-0.2.1/crates/sof/src/sqlquery/output.rs +330 -0
- pysof-0.2.1/crates/sof/src/sqlquery/params.rs +188 -0
- {pysof-0.1.47 → pysof-0.2.1}/crates/sof/src/traits.rs +266 -428
- {pysof-0.1.47 → pysof-0.2.1}/crates/sof/tests/common/mod.rs +119 -46
- {pysof-0.1.47 → pysof-0.2.1}/crates/sof/tests/debug_boolean_test.rs +1 -0
- pysof-0.2.1/crates/sof/tests/resolve_remote_tests.rs +417 -0
- pysof-0.2.1/crates/sof/tests/resolve_tests.rs +304 -0
- {pysof-0.1.47 → pysof-0.2.1}/crates/sof/tests/run_foreach_tests.rs +9 -3
- {pysof-0.1.47 → pysof-0.2.1}/crates/sof/tests/server_tests.rs +336 -2
- pysof-0.2.1/crates/sof/tests/sql-on-fhir-v2/README.md +60 -0
- {pysof-0.1.47 → pysof-0.2.1}/crates/sof/tests/sql-on-fhir-v2/tests/constant_types.json +12 -9
- {pysof-0.1.47 → pysof-0.2.1}/crates/sof/tests/sql-on-fhir-v2/tests/fhirpath.json +5 -76
- {pysof-0.1.47 → pysof-0.2.1}/crates/sof/tests/sql-on-fhir-v2/tests/fn_boundary.json +5 -4
- {pysof-0.1.47 → pysof-0.2.1}/crates/sof/tests/sql-on-fhir-v2/tests/fn_extension.json +1 -2
- {pysof-0.1.47 → pysof-0.2.1}/crates/sof/tests/sql-on-fhir-v2/tests/fn_join.json +16 -0
- {pysof-0.1.47 → pysof-0.2.1}/crates/sof/tests/sql-on-fhir-v2/tests/fn_reference_keys.json +2 -0
- pysof-0.2.1/crates/sof/tests/sql-on-fhir-v2/tests/repeat.json +1332 -0
- pysof-0.2.1/crates/sof/tests/sql-on-fhir-v2/tests/row_index.json +700 -0
- {pysof-0.1.47 → pysof-0.2.1}/crates/sof/tests/sql-on-fhir-v2/tests/where.json +4 -0
- {pysof-0.1.47 → pysof-0.2.1}/crates/sof/tests/sql_on_fhir_tests.rs +26 -8
- {pysof-0.1.47 → pysof-0.2.1}/crates/sof/tests/test_base64_binary_constant.rs +4 -2
- {pysof-0.1.47 → pysof-0.2.1}/crates/sof/tests/test_format_parameter_body.rs +4 -3
- {pysof-0.1.47 → pysof-0.2.1}/crates/sof/tests/test_header_parameter_body.rs +17 -12
- {pysof-0.1.47 → pysof-0.2.1}/crates/sof/tests/test_runner_integration.rs +22 -7
- {pysof-0.1.47 → pysof-0.2.1}/crates/sof/tests/test_shortened_format_names.rs +11 -0
- {pysof-0.1.47 → pysof-0.2.1}/src/lib.rs +333 -2
- {pysof-0.1.47 → pysof-0.2.1}/src/pysof/__init__.py +131 -0
- {pysof-0.1.47/crates/pysof → pysof-0.2.1}/src/pysof/_pysof.pyi +42 -0
- pysof-0.1.47/crates/fhirpath/src/fhir_type_hierarchy.rs +0 -61
- pysof-0.1.47/crates/sof/src/server.rs +0 -435
- pysof-0.1.47/crates/sof/src/streaming.rs +0 -184
- pysof-0.1.47/crates/sof/tests/sql-on-fhir-v2/tests/repeat.json +0 -519
- {pysof-0.1.47 → pysof-0.2.1}/crates/fhir/README.md +0 -0
- {pysof-0.1.47 → pysof-0.2.1}/crates/fhir/build.rs +0 -0
- {pysof-0.1.47 → pysof-0.2.1}/crates/fhir/src/parameters.rs +0 -0
- {pysof-0.1.47 → pysof-0.2.1}/crates/fhir/src/r6.rs.template +0 -0
- {pysof-0.1.47 → pysof-0.2.1}/crates/fhir/tests/integer_string_integration.rs +0 -0
- {pysof-0.1.47 → pysof-0.2.1}/crates/fhir/tests/simple_null_test.rs +0 -0
- {pysof-0.1.47 → pysof-0.2.1}/crates/fhir/tests/test_contained_stack.rs +0 -0
- {pysof-0.1.47 → pysof-0.2.1}/crates/fhir-macro/README.md +0 -0
- {pysof-0.1.47 → pysof-0.2.1}/crates/fhirpath/PRECISION_LIMITATION.md +0 -0
- {pysof-0.1.47 → pysof-0.2.1}/crates/fhirpath/benches/cli_benches.rs +0 -0
- {pysof-0.1.47 → pysof-0.2.1}/crates/fhirpath/benches/evaluator_benches.rs +0 -0
- {pysof-0.1.47 → pysof-0.2.1}/crates/fhirpath/benches/parser_benches.rs +0 -0
- {pysof-0.1.47 → pysof-0.2.1}/crates/fhirpath/benches/server_benches.rs +0 -0
- {pysof-0.1.47 → pysof-0.2.1}/crates/fhirpath/examples/test_ucum.rs +0 -0
- {pysof-0.1.47 → pysof-0.2.1}/crates/fhirpath/grammar/fhirpath.g4 +0 -0
- {pysof-0.1.47 → pysof-0.2.1}/crates/fhirpath/server-api.md +0 -0
- {pysof-0.1.47 → pysof-0.2.1}/crates/fhirpath/src/bin/fhirpath-cli.rs +0 -0
- {pysof-0.1.47 → pysof-0.2.1}/crates/fhirpath/src/bin/fhirpath-server.rs +0 -0
- {pysof-0.1.47 → pysof-0.2.1}/crates/fhirpath/src/debug_trace.rs +0 -0
- {pysof-0.1.47 → pysof-0.2.1}/crates/fhirpath/src/error.rs +0 -0
- {pysof-0.1.47 → pysof-0.2.1}/crates/fhirpath/src/json_utils.rs +0 -0
- {pysof-0.1.47 → pysof-0.2.1}/crates/fhirpath/src/parse_debug.rs +0 -0
- {pysof-0.1.47 → pysof-0.2.1}/crates/fhirpath/src/repeat_all_function.rs +0 -0
- {pysof-0.1.47 → pysof-0.2.1}/crates/fhirpath/src/subset_functions.rs +0 -0
- {pysof-0.1.47 → pysof-0.2.1}/crates/fhirpath/src/terminology_client.rs +0 -0
- {pysof-0.1.47 → pysof-0.2.1}/crates/fhirpath/src/trace_function.rs +0 -0
- {pysof-0.1.47 → pysof-0.2.1}/crates/fhirpath/tests/boundary_debug_tests.rs +0 -0
- {pysof-0.1.47 → pysof-0.2.1}/crates/fhirpath/tests/boundary_function_integration_tests.rs +0 -0
- {pysof-0.1.47 → pysof-0.2.1}/crates/fhirpath/tests/comment_test.rs +0 -0
- {pysof-0.1.47 → pysof-0.2.1}/crates/fhirpath/tests/common/mod.rs +0 -0
- {pysof-0.1.47 → pysof-0.2.1}/crates/fhirpath/tests/common/parser.rs +0 -0
- {pysof-0.1.47 → pysof-0.2.1}/crates/fhirpath/tests/data/r4/input/observation-example.json +0 -0
- {pysof-0.1.47 → pysof-0.2.1}/crates/fhirpath/tests/data/r4/input/observation-example.xml +0 -0
- {pysof-0.1.47 → pysof-0.2.1}/crates/fhirpath/tests/data/r4/input/patient-example.json +0 -0
- {pysof-0.1.47 → pysof-0.2.1}/crates/fhirpath/tests/data/r4/input/patient-example.xml +0 -0
- {pysof-0.1.47 → pysof-0.2.1}/crates/fhirpath/tests/data/r4/input/questionnaire-example.json +0 -0
- {pysof-0.1.47 → pysof-0.2.1}/crates/fhirpath/tests/data/r4/input/questionnaire-example.xml +0 -0
- {pysof-0.1.47 → pysof-0.2.1}/crates/fhirpath/tests/data/r4/input/valueset-example-expansion.json +0 -0
- {pysof-0.1.47 → pysof-0.2.1}/crates/fhirpath/tests/data/r4/input/valueset-example-expansion.xml +0 -0
- {pysof-0.1.47 → pysof-0.2.1}/crates/fhirpath/tests/data/r4/tests-fhir-r4.xml +0 -0
- {pysof-0.1.47 → pysof-0.2.1}/crates/fhirpath/tests/data/r5/input/appointment-examplereq.json +0 -0
- {pysof-0.1.47 → pysof-0.2.1}/crates/fhirpath/tests/data/r5/input/ccda.json +0 -0
- {pysof-0.1.47 → pysof-0.2.1}/crates/fhirpath/tests/data/r5/input/codesystem-example.json +0 -0
- {pysof-0.1.47 → pysof-0.2.1}/crates/fhirpath/tests/data/r5/input/conceptmap-example.json +0 -0
- {pysof-0.1.47 → pysof-0.2.1}/crates/fhirpath/tests/data/r5/input/explanationofbenefit-example.json +0 -0
- {pysof-0.1.47 → pysof-0.2.1}/crates/fhirpath/tests/data/r5/input/observation-example.json +0 -0
- {pysof-0.1.47 → pysof-0.2.1}/crates/fhirpath/tests/data/r5/input/observation-example.xml +0 -0
- {pysof-0.1.47 → pysof-0.2.1}/crates/fhirpath/tests/data/r5/input/parameters-example-types.json +0 -0
- {pysof-0.1.47 → pysof-0.2.1}/crates/fhirpath/tests/data/r5/input/patient-container-example.json +0 -0
- {pysof-0.1.47 → pysof-0.2.1}/crates/fhirpath/tests/data/r5/input/patient-example-name.json +0 -0
- {pysof-0.1.47 → pysof-0.2.1}/crates/fhirpath/tests/data/r5/input/patient-example-period.json +0 -0
- {pysof-0.1.47 → pysof-0.2.1}/crates/fhirpath/tests/data/r5/input/patient-example.json +0 -0
- {pysof-0.1.47 → pysof-0.2.1}/crates/fhirpath/tests/data/r5/input/patient-name-extensions.json +0 -0
- {pysof-0.1.47 → pysof-0.2.1}/crates/fhirpath/tests/data/r5/input/questionnaire-example.json +0 -0
- {pysof-0.1.47 → pysof-0.2.1}/crates/fhirpath/tests/data/r5/input/valueset-example-expansion.json +0 -0
- {pysof-0.1.47 → pysof-0.2.1}/crates/fhirpath/tests/data/r5/tests-fhir-r5.xml +0 -0
- {pysof-0.1.47 → pysof-0.2.1}/crates/fhirpath/tests/data/testSchema.xsd +0 -0
- {pysof-0.1.47 → pysof-0.2.1}/crates/fhirpath/tests/datetime_boundary_tests.rs +0 -0
- {pysof-0.1.47 → pysof-0.2.1}/crates/fhirpath/tests/debug_datetime_boundary.rs +0 -0
- {pysof-0.1.47 → pysof-0.2.1}/crates/fhirpath/tests/debug_string_boundary_tests.rs +0 -0
- {pysof-0.1.47 → pysof-0.2.1}/crates/fhirpath/tests/define_variable_test.rs +0 -0
- {pysof-0.1.47 → pysof-0.2.1}/crates/fhirpath/tests/extension_tests.rs +0 -0
- {pysof-0.1.47 → pysof-0.2.1}/crates/fhirpath/tests/fhir_boundary_tests.rs +0 -0
- {pysof-0.1.47 → pysof-0.2.1}/crates/fhirpath/tests/is_as_method_tests.rs +0 -0
- {pysof-0.1.47 → pysof-0.2.1}/crates/fhirpath/tests/oftype_datetime_tests.rs +0 -0
- {pysof-0.1.47 → pysof-0.2.1}/crates/fhirpath/tests/parser_tests.rs +0 -0
- {pysof-0.1.47 → pysof-0.2.1}/crates/fhirpath/tests/polymorphic_r4_tests.rs +0 -0
- {pysof-0.1.47 → pysof-0.2.1}/crates/fhirpath/tests/polymorphic_tests.rs +0 -0
- {pysof-0.1.47 → pysof-0.2.1}/crates/fhirpath/tests/r5_tests.rs +0 -0
- {pysof-0.1.47 → pysof-0.2.1}/crates/fhirpath/tests/reference_key_debug.rs +0 -0
- {pysof-0.1.47 → pysof-0.2.1}/crates/fhirpath/tests/test_boundary_zero.rs +0 -0
- {pysof-0.1.47 → pysof-0.2.1}/crates/fhirpath/tests/trace_api_test.rs +0 -0
- {pysof-0.1.47 → pysof-0.2.1}/crates/fhirpath/tests/trace_tests.rs +0 -0
- {pysof-0.1.47 → pysof-0.2.1}/crates/fhirpath/tests/truncate_tests.rs +0 -0
- {pysof-0.1.47 → pysof-0.2.1}/crates/fhirpath/tests/type_operation_tests.rs +0 -0
- {pysof-0.1.47 → pysof-0.2.1}/crates/fhirpath-support/Cargo.toml +0 -0
- {pysof-0.1.47 → pysof-0.2.1}/crates/fhirpath-support/README.md +0 -0
- {pysof-0.1.47 → pysof-0.2.1}/crates/fhirpath-support/src/type_info.rs +0 -0
- {pysof-0.1.47 → pysof-0.2.1}/crates/pysof/.gitignore +0 -0
- {pysof-0.1.47 → pysof-0.2.1}/crates/pysof/Cargo.lock +0 -0
- {pysof-0.1.47 → pysof-0.2.1}/crates/pysof/Makefile +0 -0
- {pysof-0.1.47 → pysof-0.2.1}/crates/pysof/PYPI_CHECKLIST.md +0 -0
- {pysof-0.1.47 → pysof-0.2.1}/crates/pysof/WHEEL_BUILDING.md +0 -0
- {pysof-0.1.47 → pysof-0.2.1}/crates/pysof/multithreading_example.py +0 -0
- {pysof-0.1.47 → pysof-0.2.1}/crates/pysof/python-tests/__init__.py +0 -0
- {pysof-0.1.47 → pysof-0.2.1}/crates/pysof/python-tests/test_content_types.py +0 -0
- {pysof-0.1.47 → pysof-0.2.1}/crates/pysof/python-tests/test_core_functions.py +0 -0
- {pysof-0.1.47 → pysof-0.2.1}/crates/pysof/python-tests/test_error_handling.py +0 -0
- {pysof-0.1.47 → pysof-0.2.1}/crates/pysof/python-tests/test_fhir_versions.py +0 -0
- {pysof-0.1.47 → pysof-0.2.1}/crates/pysof/python-tests/test_import.py +0 -0
- {pysof-0.1.47 → pysof-0.2.1}/crates/pysof/python-tests/test_package_metadata.py +0 -0
- {pysof-0.1.47 → pysof-0.2.1}/crates/pysof/python-tests/test_source_errors.py +0 -0
- {pysof-0.1.47 → pysof-0.2.1}/crates/pysof/scripts/build-wheels.py +0 -0
- {pysof-0.1.47 → pysof-0.2.1}/crates/pysof/src/pysof/py.typed +0 -0
- {pysof-0.1.47 → pysof-0.2.1}/crates/pysof/test_multithreading.py +0 -0
- {pysof-0.1.47 → pysof-0.2.1}/crates/pysof/tests/integration/content_types.rs +0 -0
- {pysof-0.1.47 → pysof-0.2.1}/crates/pysof/tests/integration/error_handling.rs +0 -0
- {pysof-0.1.47 → pysof-0.2.1}/crates/pysof/tests/integration/fhir_versions.rs +0 -0
- {pysof-0.1.47 → pysof-0.2.1}/crates/pysof/tests/integration/mod.rs +0 -0
- {pysof-0.1.47 → pysof-0.2.1}/crates/pysof/tests/integration.rs +0 -0
- {pysof-0.1.47 → pysof-0.2.1}/crates/pysof/tests/lib_tests.rs +0 -0
- {pysof-0.1.47 → pysof-0.2.1}/crates/pysof/tests/multithreading_integration.rs +0 -0
- {pysof-0.1.47 → pysof-0.2.1}/crates/pysof/tests/threading_test.rs +0 -0
- {pysof-0.1.47 → pysof-0.2.1}/crates/pysof/uv.lock +0 -0
- {pysof-0.1.47 → pysof-0.2.1}/crates/serde-support/Cargo.toml +0 -0
- {pysof-0.1.47 → pysof-0.2.1}/crates/serde-support/src/lib.rs +0 -0
- {pysof-0.1.47 → pysof-0.2.1}/crates/sof/benches/parallel_processing_bench.rs +0 -0
- {pysof-0.1.47 → pysof-0.2.1}/crates/sof/src/data_source.rs +0 -0
- {pysof-0.1.47 → pysof-0.2.1}/crates/sof/src/mod.rs +0 -0
- {pysof-0.1.47 → pysof-0.2.1}/crates/sof/src/parquet_schema.rs +0 -0
- {pysof-0.1.47 → pysof-0.2.1}/crates/sof/tests/debug_column_ordering.rs +0 -0
- {pysof-0.1.47 → pysof-0.2.1}/crates/sof/tests/debug_datetime_instant_constants.rs +0 -0
- {pysof-0.1.47 → pysof-0.2.1}/crates/sof/tests/debug_datetime_type_info.rs +0 -0
- {pysof-0.1.47 → pysof-0.2.1}/crates/sof/tests/debug_enum_conversion.rs +0 -0
- {pysof-0.1.47 → pysof-0.2.1}/crates/sof/tests/debug_evaluation_result_conversion.rs +0 -0
- {pysof-0.1.47 → pysof-0.2.1}/crates/sof/tests/debug_extension_function.rs +0 -0
- {pysof-0.1.47 → pysof-0.2.1}/crates/sof/tests/debug_extension_macro_fix.rs +0 -0
- {pysof-0.1.47 → pysof-0.2.1}/crates/sof/tests/debug_extension_simple.rs +0 -0
- {pysof-0.1.47 → pysof-0.2.1}/crates/sof/tests/debug_fhir_resource_structure.rs +0 -0
- {pysof-0.1.47 → pysof-0.2.1}/crates/sof/tests/debug_foreach_combinations.rs +0 -0
- {pysof-0.1.47 → pysof-0.2.1}/crates/sof/tests/debug_inequality.rs +0 -0
- {pysof-0.1.47 → pysof-0.2.1}/crates/sof/tests/debug_instant_constant.rs +0 -0
- {pysof-0.1.47 → pysof-0.2.1}/crates/sof/tests/debug_instant_type_info.rs +0 -0
- {pysof-0.1.47 → pysof-0.2.1}/crates/sof/tests/debug_raw_resource.rs +0 -0
- {pysof-0.1.47 → pysof-0.2.1}/crates/sof/tests/debug_reference_key_types.rs +0 -0
- {pysof-0.1.47 → pysof-0.2.1}/crates/sof/tests/extension_debug_test.rs +0 -0
- {pysof-0.1.47 → pysof-0.2.1}/crates/sof/tests/foreach_test.rs +0 -0
- {pysof-0.1.47 → pysof-0.2.1}/crates/sof/tests/multiselect_test.rs +0 -0
- {pysof-0.1.47 → pysof-0.2.1}/crates/sof/tests/sql-on-fhir-v2/tests/basic.json +0 -0
- {pysof-0.1.47 → pysof-0.2.1}/crates/sof/tests/sql-on-fhir-v2/tests/collection.json +0 -0
- {pysof-0.1.47 → pysof-0.2.1}/crates/sof/tests/sql-on-fhir-v2/tests/combinations.json +0 -0
- {pysof-0.1.47 → pysof-0.2.1}/crates/sof/tests/sql-on-fhir-v2/tests/constant.json +0 -0
- {pysof-0.1.47 → pysof-0.2.1}/crates/sof/tests/sql-on-fhir-v2/tests/fhirpath_numbers.json +0 -0
- {pysof-0.1.47 → pysof-0.2.1}/crates/sof/tests/sql-on-fhir-v2/tests/fn_empty.json +0 -0
- {pysof-0.1.47 → pysof-0.2.1}/crates/sof/tests/sql-on-fhir-v2/tests/fn_first.json +0 -0
- {pysof-0.1.47 → pysof-0.2.1}/crates/sof/tests/sql-on-fhir-v2/tests/fn_oftype.json +0 -0
- {pysof-0.1.47 → pysof-0.2.1}/crates/sof/tests/sql-on-fhir-v2/tests/foreach.json +0 -0
- {pysof-0.1.47 → pysof-0.2.1}/crates/sof/tests/sql-on-fhir-v2/tests/logic.json +0 -0
- {pysof-0.1.47 → pysof-0.2.1}/crates/sof/tests/sql-on-fhir-v2/tests/union.json +0 -0
- {pysof-0.1.47 → pysof-0.2.1}/crates/sof/tests/sql-on-fhir-v2/tests/validate.json +0 -0
- {pysof-0.1.47 → pysof-0.2.1}/crates/sof/tests/sql-on-fhir-v2/tests/view_resource.json +0 -0
- {pysof-0.1.47 → pysof-0.2.1}/crates/sof/tests/test_boolean_constant_debug.rs +0 -0
- {pysof-0.1.47 → pysof-0.2.1}/crates/sof/tests/test_boolean_constant_debug2.rs +0 -0
- {pysof-0.1.47 → pysof-0.2.1}/crates/sof/tests/test_boolean_constant_debug3.rs +0 -0
- {pysof-0.1.47 → pysof-0.2.1}/crates/sof/tests/test_boolean_validation.rs +0 -0
- {pysof-0.1.47 → pysof-0.2.1}/crates/sof/tests/test_chunked_processing.rs +0 -0
- {pysof-0.1.47 → pysof-0.2.1}/crates/sof/tests/test_cli_file_source.rs +0 -0
- {pysof-0.1.47 → pysof-0.2.1}/crates/sof/tests/test_csv_quote_handling.rs +0 -0
- {pysof-0.1.47 → pysof-0.2.1}/crates/sof/tests/test_extension_fix_verification.rs +0 -0
- {pysof-0.1.47 → pysof-0.2.1}/crates/sof/tests/test_extension_value_access.rs +0 -0
- {pysof-0.1.47 → pysof-0.2.1}/crates/sof/tests/test_limit_parameter_body.rs +0 -0
- {pysof-0.1.47 → pysof-0.2.1}/crates/sof/tests/test_ndjson_input.rs +0 -0
- {pysof-0.1.47 → pysof-0.2.1}/crates/sof/tests/test_parallel_working.rs +0 -0
- {pysof-0.1.47 → pysof-0.2.1}/crates/sof/tests/test_parameter_validation.rs +0 -0
- {pysof-0.1.47 → pysof-0.2.1}/crates/sof/tests/test_parquet_export.rs +0 -0
- {pysof-0.1.47 → pysof-0.2.1}/crates/sof/tests/test_parquet_large_dataset.rs +0 -0
- {pysof-0.1.47 → pysof-0.2.1}/crates/sof/tests/test_parquet_server_options.rs +0 -0
- {pysof-0.1.47 → pysof-0.2.1}/crates/sof/tests/test_patient_reference_formats.rs +0 -0
- {pysof-0.1.47 → pysof-0.2.1}/crates/sof/tests/test_query_parameter_combinations.rs +0 -0
- {pysof-0.1.47 → pysof-0.2.1}/crates/sof/tests/test_run_operation_parameters.rs +0 -0
- {pysof-0.1.47 → pysof-0.2.1}/crates/sof/tests/test_where_clause_validation.rs +0 -0
- {pysof-0.1.47 → pysof-0.2.1}/crates/sof/tests/test_x_ndjson_support.rs +0 -0
- {pysof-0.1.47 → pysof-0.2.1}/pyproject.toml +0 -0
- {pysof-0.1.47 → pysof-0.2.1}/src/pysof/_pysof.cpython-311-darwin.so +0 -0
- {pysof-0.1.47 → pysof-0.2.1}/src/pysof/py.typed +0 -0
|
@@ -16,14 +16,17 @@ name = "pysof"
|
|
|
16
16
|
crate-type = ["cdylib"]
|
|
17
17
|
|
|
18
18
|
[dependencies]
|
|
19
|
-
pyo3 = { version = ">=0.
|
|
20
|
-
helios-sof = { path = "../sof", version = "0.1
|
|
21
|
-
helios-fhir = { path = "../fhir", version = "0.1
|
|
19
|
+
pyo3 = { version = ">=0.29", features = ["extension-module", "generate-import-lib"] }
|
|
20
|
+
helios-sof = { path = "../sof", version = "0.2.1", default-features = false }
|
|
21
|
+
helios-fhir = { path = "../fhir", version = "0.2.1", default-features = false }
|
|
22
22
|
serde = { workspace = true }
|
|
23
23
|
serde_json = { workspace = true }
|
|
24
24
|
chrono = { version = "0.4", features = ["serde"] }
|
|
25
|
-
pythonize = "0.
|
|
25
|
+
pythonize = "0.29"
|
|
26
26
|
csv = "1.3"
|
|
27
|
+
# Drives helios-sof's async remote-resolve functions from the synchronous
|
|
28
|
+
# PyO3 entry points via a current-thread runtime.
|
|
29
|
+
tokio = { version = "1", default-features = false, features = ["rt", "net", "time"] }
|
|
27
30
|
|
|
28
31
|
[features]
|
|
29
32
|
default = ["R4"]
|
|
@@ -37,4 +40,4 @@ R6 = ["helios-sof/R6", "helios-fhir/R6"]
|
|
|
37
40
|
openssl = { version = "0.10", features = ["vendored"] }
|
|
38
41
|
|
|
39
42
|
[build-dependencies]
|
|
40
|
-
pyo3-build-config = "0.
|
|
43
|
+
pyo3-build-config = "0.29"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: pysof
|
|
3
|
-
Version: 0.1
|
|
3
|
+
Version: 0.2.1
|
|
4
4
|
Classifier: Programming Language :: Python :: 3
|
|
5
5
|
Classifier: Programming Language :: Python :: 3.10
|
|
6
6
|
Classifier: Programming Language :: Python :: 3.11
|
|
@@ -176,6 +176,44 @@ result = pysof.run_view_definition_with_options(
|
|
|
176
176
|
)
|
|
177
177
|
```
|
|
178
178
|
|
|
179
|
+
### Remote `resolve()` (Trusted Servers)
|
|
180
|
+
|
|
181
|
+
`resolve()` dereferences references against the input bundle by default. You can
|
|
182
|
+
optionally let it fetch references that point at **explicitly trusted** FHIR
|
|
183
|
+
servers and fold them into the resolution pool before rows are generated. This is
|
|
184
|
+
**off by default** and gated by a strict allowlist (matching scheme + host + port
|
|
185
|
+
+ path-prefix; private/loopback addresses are blocked unless opted in).
|
|
186
|
+
|
|
187
|
+
```python
|
|
188
|
+
import pysof
|
|
189
|
+
|
|
190
|
+
config = pysof.RemoteResolveConfig(
|
|
191
|
+
["https://fhir.example.org/r4"], # trusted base URLs (allowlist)
|
|
192
|
+
max_fetches=256, # per-run/-stream fetch cap
|
|
193
|
+
max_depth=1, # chained-reference rounds
|
|
194
|
+
allow_private_addresses=False, # allow internal LBs (e.g. Traefik) by hostname
|
|
195
|
+
bearer_tokens={"fhir.example.org": "TOKEN"}, # optional per-host auth
|
|
196
|
+
)
|
|
197
|
+
|
|
198
|
+
# Or build it from SOF_RESOLVE_* environment variables:
|
|
199
|
+
# config = pysof.RemoteResolveConfig.from_env()
|
|
200
|
+
|
|
201
|
+
result = pysof.run_view_definition_remote(
|
|
202
|
+
view_definition, bundle, "json", config, fhir_version="R4"
|
|
203
|
+
)
|
|
204
|
+
|
|
205
|
+
# Streaming NDJSON with remote resolve() (one shared cache across chunks):
|
|
206
|
+
stats = pysof.process_ndjson_to_file_remote(
|
|
207
|
+
view_definition, "input.ndjson", "output.json", "ndjson", config, chunk_size=1000
|
|
208
|
+
)
|
|
209
|
+
```
|
|
210
|
+
|
|
211
|
+
When `config.is_active()` is `False` (disabled or empty allowlist) these behave
|
|
212
|
+
exactly like their non-remote counterparts. Enabling remote resolution makes
|
|
213
|
+
output depend on remote server state at run time. See the
|
|
214
|
+
[SQL-on-FHIR guide](../../book/src/ch06-sql-on-fhir.md) for the full security
|
|
215
|
+
model and configuration reference.
|
|
216
|
+
|
|
179
217
|
### Utility Functions
|
|
180
218
|
|
|
181
219
|
```python
|
|
@@ -147,6 +147,44 @@ result = pysof.run_view_definition_with_options(
|
|
|
147
147
|
)
|
|
148
148
|
```
|
|
149
149
|
|
|
150
|
+
### Remote `resolve()` (Trusted Servers)
|
|
151
|
+
|
|
152
|
+
`resolve()` dereferences references against the input bundle by default. You can
|
|
153
|
+
optionally let it fetch references that point at **explicitly trusted** FHIR
|
|
154
|
+
servers and fold them into the resolution pool before rows are generated. This is
|
|
155
|
+
**off by default** and gated by a strict allowlist (matching scheme + host + port
|
|
156
|
+
+ path-prefix; private/loopback addresses are blocked unless opted in).
|
|
157
|
+
|
|
158
|
+
```python
|
|
159
|
+
import pysof
|
|
160
|
+
|
|
161
|
+
config = pysof.RemoteResolveConfig(
|
|
162
|
+
["https://fhir.example.org/r4"], # trusted base URLs (allowlist)
|
|
163
|
+
max_fetches=256, # per-run/-stream fetch cap
|
|
164
|
+
max_depth=1, # chained-reference rounds
|
|
165
|
+
allow_private_addresses=False, # allow internal LBs (e.g. Traefik) by hostname
|
|
166
|
+
bearer_tokens={"fhir.example.org": "TOKEN"}, # optional per-host auth
|
|
167
|
+
)
|
|
168
|
+
|
|
169
|
+
# Or build it from SOF_RESOLVE_* environment variables:
|
|
170
|
+
# config = pysof.RemoteResolveConfig.from_env()
|
|
171
|
+
|
|
172
|
+
result = pysof.run_view_definition_remote(
|
|
173
|
+
view_definition, bundle, "json", config, fhir_version="R4"
|
|
174
|
+
)
|
|
175
|
+
|
|
176
|
+
# Streaming NDJSON with remote resolve() (one shared cache across chunks):
|
|
177
|
+
stats = pysof.process_ndjson_to_file_remote(
|
|
178
|
+
view_definition, "input.ndjson", "output.json", "ndjson", config, chunk_size=1000
|
|
179
|
+
)
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
When `config.is_active()` is `False` (disabled or empty allowlist) these behave
|
|
183
|
+
exactly like their non-remote counterparts. Enabling remote resolution makes
|
|
184
|
+
output depend on remote server state at run time. See the
|
|
185
|
+
[SQL-on-FHIR guide](../../book/src/ch06-sql-on-fhir.md) for the full security
|
|
186
|
+
model and configuration reference.
|
|
187
|
+
|
|
150
188
|
### Utility Functions
|
|
151
189
|
|
|
152
190
|
```python
|
|
@@ -24,13 +24,17 @@ xml = ["helios-serde-support/xml"]
|
|
|
24
24
|
serde = { workspace = true }
|
|
25
25
|
serde_json = { workspace = true, features = ["raw_value"] }
|
|
26
26
|
clap = { version = "4.0", features = ["derive"] }
|
|
27
|
-
helios-fhir-macro = { path = "../fhir-macro", version = "0.1
|
|
28
|
-
helios-serde-support = { path = "../serde-support", version = "0.1
|
|
29
|
-
helios-fhirpath-support = { path = "../fhirpath-support", version = "0.1
|
|
27
|
+
helios-fhir-macro = { path = "../fhir-macro", version = "0.2.1" }
|
|
28
|
+
helios-serde-support = { path = "../serde-support", version = "0.2.1" }
|
|
29
|
+
helios-fhirpath-support = { path = "../fhirpath-support", version = "0.2.1" }
|
|
30
30
|
time = "0.3"
|
|
31
31
|
chrono = { workspace = true }
|
|
32
32
|
# Re-add serde-with-arbitrary-precision, keep macros
|
|
33
33
|
rust_decimal = { version = "1.0", features = ["serde-with-arbitrary-precision", "macros"] }
|
|
34
|
+
# SearchParameter registry/loader (moved from helios-persistence so helios-sof
|
|
35
|
+
# can do compartment-aware filtering without a circular dep).
|
|
36
|
+
regex = "1"
|
|
37
|
+
tracing = "0.1"
|
|
34
38
|
|
|
35
39
|
[dev-dependencies]
|
|
36
40
|
rust_decimal_macros = "1.0"
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
//! Compartment search-param FHIRPath expression tables for each FHIR version.
|
|
2
|
+
//!
|
|
3
|
+
//! For each `(compartment, resource_type)` pair from a FHIR
|
|
4
|
+
//! `CompartmentDefinition`, exposes the `(search-param-name,
|
|
5
|
+
//! FHIRPath-expression)` pairs that link the resource to the
|
|
6
|
+
//! compartment. Used by `helios_sof::compartment` to drive `$viewdefinition-run`'s
|
|
7
|
+
//! patient/group filter against raw resource JSON without any runtime
|
|
8
|
+
//! data-file dependency — the tables are compiled in.
|
|
9
|
+
//!
|
|
10
|
+
//! Submodules are generated by `cargo run -p helios-fhir-gen --bin
|
|
11
|
+
//! compartment-expressions`; do not edit by hand.
|
|
12
|
+
|
|
13
|
+
#[cfg(feature = "R4")]
|
|
14
|
+
pub mod r4;
|
|
15
|
+
#[cfg(feature = "R4B")]
|
|
16
|
+
pub mod r4b;
|
|
17
|
+
#[cfg(feature = "R5")]
|
|
18
|
+
pub mod r5;
|
|
19
|
+
#[cfg(feature = "R6")]
|
|
20
|
+
pub mod r6;
|