compressedfhir 3.0.2__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.
Files changed (59) hide show
  1. compressedfhir/__init__.py +0 -0
  2. compressedfhir/fhir/__init__.py +0 -0
  3. compressedfhir/fhir/base_resource_list.py +165 -0
  4. compressedfhir/fhir/fhir_bundle.py +295 -0
  5. compressedfhir/fhir/fhir_bundle_entry.py +240 -0
  6. compressedfhir/fhir/fhir_bundle_entry_list.py +97 -0
  7. compressedfhir/fhir/fhir_bundle_entry_request.py +73 -0
  8. compressedfhir/fhir/fhir_bundle_entry_response.py +67 -0
  9. compressedfhir/fhir/fhir_bundle_entry_search.py +75 -0
  10. compressedfhir/fhir/fhir_identifier.py +84 -0
  11. compressedfhir/fhir/fhir_link.py +63 -0
  12. compressedfhir/fhir/fhir_meta.py +47 -0
  13. compressedfhir/fhir/fhir_resource.py +170 -0
  14. compressedfhir/fhir/fhir_resource_list.py +149 -0
  15. compressedfhir/fhir/fhir_resource_map.py +193 -0
  16. compressedfhir/fhir/test/__init__.py +0 -0
  17. compressedfhir/fhir/test/test_bundle_entry.py +129 -0
  18. compressedfhir/fhir/test/test_bundle_entry_list.py +187 -0
  19. compressedfhir/fhir/test/test_bundle_entry_request.py +74 -0
  20. compressedfhir/fhir/test/test_bundle_entry_response.py +65 -0
  21. compressedfhir/fhir/test/test_fhir_bundle.py +245 -0
  22. compressedfhir/fhir/test/test_fhir_resource.py +104 -0
  23. compressedfhir/fhir/test/test_fhir_resource_list.py +160 -0
  24. compressedfhir/fhir/test/test_fhir_resource_map.py +293 -0
  25. compressedfhir/py.typed +0 -0
  26. compressedfhir/utilities/__init__.py +0 -0
  27. compressedfhir/utilities/compressed_dict/__init__.py +0 -0
  28. compressedfhir/utilities/compressed_dict/v1/__init__.py +0 -0
  29. compressedfhir/utilities/compressed_dict/v1/compressed_dict.py +701 -0
  30. compressedfhir/utilities/compressed_dict/v1/compressed_dict_access_error.py +2 -0
  31. compressedfhir/utilities/compressed_dict/v1/compressed_dict_storage_mode.py +50 -0
  32. compressedfhir/utilities/compressed_dict/v1/test/__init__.py +0 -0
  33. compressedfhir/utilities/compressed_dict/v1/test/test_compressed_dict.py +467 -0
  34. compressedfhir/utilities/fhir_json_encoder.py +71 -0
  35. compressedfhir/utilities/json_helpers.py +181 -0
  36. compressedfhir/utilities/json_serializers/__init__.py +0 -0
  37. compressedfhir/utilities/json_serializers/test/__init__.py +0 -0
  38. compressedfhir/utilities/json_serializers/test/test_type_preservation_decoder.py +165 -0
  39. compressedfhir/utilities/json_serializers/test/test_type_preservation_encoder.py +71 -0
  40. compressedfhir/utilities/json_serializers/test/test_type_preservation_serializer.py +197 -0
  41. compressedfhir/utilities/json_serializers/type_preservation_decoder.py +135 -0
  42. compressedfhir/utilities/json_serializers/type_preservation_encoder.py +55 -0
  43. compressedfhir/utilities/json_serializers/type_preservation_serializer.py +57 -0
  44. compressedfhir/utilities/ordered_dict_to_dict_converter/__init__.py +0 -0
  45. compressedfhir/utilities/ordered_dict_to_dict_converter/ordered_dict_to_dict_converter.py +24 -0
  46. compressedfhir/utilities/string_compressor/__init__.py +0 -0
  47. compressedfhir/utilities/string_compressor/v1/__init__.py +0 -0
  48. compressedfhir/utilities/string_compressor/v1/string_compressor.py +99 -0
  49. compressedfhir/utilities/string_compressor/v1/test/__init__.py +0 -0
  50. compressedfhir/utilities/string_compressor/v1/test/test_string_compressor.py +189 -0
  51. compressedfhir/utilities/test/__init__.py +0 -0
  52. compressedfhir/utilities/test/test_fhir_json_encoder.py +177 -0
  53. compressedfhir/utilities/test/test_json_helpers.py +99 -0
  54. compressedfhir-3.0.2.dist-info/METADATA +139 -0
  55. compressedfhir-3.0.2.dist-info/RECORD +59 -0
  56. compressedfhir-3.0.2.dist-info/WHEEL +5 -0
  57. compressedfhir-3.0.2.dist-info/licenses/LICENSE +201 -0
  58. compressedfhir-3.0.2.dist-info/top_level.txt +2 -0
  59. tests/__init__.py +0 -0
@@ -0,0 +1,177 @@
1
+ import dataclasses
2
+ import json
3
+ import uuid
4
+ from datetime import datetime, date, time
5
+ from decimal import Decimal
6
+ from enum import Enum
7
+ from pathlib import Path
8
+ from typing import Optional, List
9
+
10
+ import pytest
11
+
12
+ from compressedfhir.utilities.fhir_json_encoder import FhirJSONEncoder
13
+
14
+ # Optional: Import for additional type support
15
+ try:
16
+ import ipaddress
17
+ except ImportError:
18
+ ipaddress = None # type:ignore[assignment]
19
+
20
+
21
+ # Test support classes and enums
22
+ class TestEnum(Enum):
23
+ OPTION1 = "value1"
24
+ OPTION2 = "value2"
25
+
26
+
27
+ @dataclasses.dataclass
28
+ class TestDataclass:
29
+ name: str
30
+ age: int
31
+ optional_field: Optional[str] = None
32
+
33
+
34
+ class TestClassWithToDict:
35
+ # noinspection PyMethodMayBeStatic
36
+ def to_dict(self) -> dict[str, str]:
37
+ return {"key": "value"}
38
+
39
+
40
+ def test_fhir_json_encoder_dataclass() -> None:
41
+ """Test serialization of dataclass"""
42
+ test_obj = TestDataclass(name="John", age=30)
43
+ encoded = json.dumps(test_obj, cls=FhirJSONEncoder)
44
+ decoded = json.loads(encoded)
45
+
46
+ assert decoded == {"name": "John", "age": 30, "optional_field": None}
47
+
48
+
49
+ def test_fhir_json_encoder_enum() -> None:
50
+ """Test serialization of Enum"""
51
+ encoded = json.dumps(TestEnum.OPTION1, cls=FhirJSONEncoder)
52
+ assert encoded == '"value1"'
53
+
54
+
55
+ def test_fhir_json_encoder_decimal() -> None:
56
+ """Test Decimal conversion"""
57
+ # Whole number Decimal
58
+ whole_decimal = Decimal("10")
59
+ encoded_whole = json.dumps(whole_decimal, cls=FhirJSONEncoder)
60
+ assert encoded_whole == "10"
61
+
62
+ # Decimal with fractional part
63
+ frac_decimal = Decimal("10.5")
64
+ encoded_frac = json.dumps(frac_decimal, cls=FhirJSONEncoder)
65
+ assert encoded_frac == "10.5"
66
+
67
+
68
+ def test_fhir_json_encoder_bytes() -> None:
69
+ """Test bytes conversion"""
70
+ test_bytes = b"hello world"
71
+ encoded = json.dumps(test_bytes, cls=FhirJSONEncoder)
72
+ assert encoded == '"hello world"'
73
+
74
+
75
+ def test_fhir_json_encoder_datetime() -> None:
76
+ """Test datetime serialization"""
77
+ test_datetime = datetime(2023, 1, 15, 12, 30, 45)
78
+ encoded = json.dumps(test_datetime, cls=FhirJSONEncoder)
79
+ assert encoded == '"2023-01-15T12:30:45"'
80
+
81
+
82
+ def test_fhir_json_encoder_date() -> None:
83
+ """Test date serialization"""
84
+ test_date = date(2023, 1, 15)
85
+ encoded = json.dumps(test_date, cls=FhirJSONEncoder)
86
+ assert encoded == '"2023-01-15"'
87
+
88
+
89
+ def test_fhir_json_encoder_time() -> None:
90
+ """Test time serialization"""
91
+ test_time = time(12, 30, 45)
92
+ encoded = json.dumps(test_time, cls=FhirJSONEncoder)
93
+ assert encoded == '"12:30:45"'
94
+
95
+
96
+ def test_fhir_json_encoder_to_dict() -> None:
97
+ """Test objects with to_dict method"""
98
+ test_obj = TestClassWithToDict()
99
+ encoded = json.dumps(test_obj, cls=FhirJSONEncoder)
100
+ assert encoded == '{"key": "value"}'
101
+
102
+
103
+ def test_fhir_json_encoder_unsupported_type() -> None:
104
+ """Test fallback for unsupported types"""
105
+
106
+ class UnsupportedType:
107
+ __slots__: List[str] = []
108
+
109
+ with pytest.raises(TypeError):
110
+ json.dumps(UnsupportedType(), cls=FhirJSONEncoder)
111
+
112
+
113
+ def test_extended_json_encoder_uuid() -> None:
114
+ """Test UUID serialization"""
115
+ test_uuid = uuid.uuid4()
116
+ encoded = json.dumps(test_uuid, cls=FhirJSONEncoder)
117
+ assert isinstance(json.loads(encoded), str)
118
+ assert len(json.loads(encoded)) == 36 # Standard UUID string length
119
+
120
+
121
+ def test_extended_json_encoder_set() -> None:
122
+ """Test set and frozenset serialization"""
123
+ test_set = {1, 2, 3}
124
+ test_frozenset = frozenset([4, 5, 6])
125
+
126
+ encoded_set = json.dumps(test_set, cls=FhirJSONEncoder)
127
+ encoded_frozenset = json.dumps(test_frozenset, cls=FhirJSONEncoder)
128
+
129
+ decoded_set = json.loads(encoded_set)
130
+ decoded_frozenset = json.loads(encoded_frozenset)
131
+
132
+ assert set(decoded_set) == test_set
133
+ assert set(decoded_frozenset) == test_frozenset
134
+
135
+
136
+ def test_extended_json_encoder_complex() -> None:
137
+ """Test complex number serialization"""
138
+ test_complex = 3 + 4j
139
+ encoded = json.dumps(test_complex, cls=FhirJSONEncoder)
140
+ decoded = json.loads(encoded)
141
+
142
+ assert decoded == {"real": 3.0, "imag": 4.0}
143
+
144
+
145
+ def test_extended_json_encoder_path() -> None:
146
+ """Test Path object serialization"""
147
+ test_path = Path("/test/path")
148
+ encoded = json.dumps(test_path, cls=FhirJSONEncoder)
149
+ assert json.loads(encoded) == str(test_path)
150
+
151
+
152
+ def test_extended_json_encoder_ip_address() -> None:
153
+ """Test IP Address serialization (if ipaddress module is available)"""
154
+ if ipaddress:
155
+ ipv4 = ipaddress.IPv4Address("192.168.0.1")
156
+ ipv6 = ipaddress.IPv6Address("2001:0db8:85a3:0000:0000:8a2e:0370:7334")
157
+
158
+ encoded_ipv4 = json.dumps(ipv4, cls=FhirJSONEncoder)
159
+ encoded_ipv6 = json.dumps(ipv6, cls=FhirJSONEncoder)
160
+
161
+ assert json.loads(encoded_ipv4) == str(ipv4)
162
+ assert json.loads(encoded_ipv6) == str(ipv6)
163
+
164
+
165
+ def test_extended_json_encoder_custom_object() -> None:
166
+ """Test custom object serialization"""
167
+
168
+ class CustomObject:
169
+ def __init__(self) -> None:
170
+ self.x = 1
171
+ self.y = 2
172
+
173
+ obj = CustomObject()
174
+ encoded = json.dumps(obj, cls=FhirJSONEncoder)
175
+ decoded = json.loads(encoded)
176
+
177
+ assert decoded == {"x": 1, "y": 2}
@@ -0,0 +1,99 @@
1
+ import json
2
+ from datetime import datetime, date
3
+ from typing import List, Dict, Any
4
+
5
+ from compressedfhir.utilities.json_helpers import FhirClientJsonHelpers
6
+
7
+
8
+ class TestFhirClientJsonHelpers:
9
+ def test_json_serial(self) -> None:
10
+ # Test datetime serialization
11
+ dt = datetime(2023, 1, 15, 12, 30)
12
+ assert FhirClientJsonHelpers.json_serial(dt) == "2023-01-15T12:30:00"
13
+
14
+ # Test date serialization
15
+ d = date(2023, 1, 15)
16
+ assert FhirClientJsonHelpers.json_serial(d) == "2023-01-15"
17
+
18
+ # Test other types
19
+ assert FhirClientJsonHelpers.json_serial(123) == "123"
20
+ assert FhirClientJsonHelpers.json_serial("test") == "test"
21
+
22
+ def test_remove_empty_elements(self) -> None:
23
+ # Test dictionary removal
24
+ input_dict = {"a": 1, "b": "", "c": None, "d": [], "e": {}, "f": [1, 2, 3]}
25
+ expected_dict = {"a": 1, "f": [1, 2, 3]}
26
+ assert FhirClientJsonHelpers.remove_empty_elements(input_dict) == expected_dict
27
+
28
+ # Test list of dictionaries
29
+ input_list: List[Dict[str, Any]] = [
30
+ {"a": 1, "b": None},
31
+ {"c": [], "d": "test"},
32
+ {"e": {}},
33
+ ]
34
+ expected_list: List[Dict[str, Any]] = [{"a": 1}, {"d": "test"}]
35
+ assert FhirClientJsonHelpers.remove_empty_elements(input_list) == expected_list
36
+
37
+ def test_remove_empty_elements_from_ordered_dict(self) -> None:
38
+ from collections import OrderedDict
39
+
40
+ # Test OrderedDict removal
41
+ input_dict = OrderedDict(
42
+ [("a", 1), ("b", ""), ("c", None), ("d", []), ("e", {}), ("f", [1, 2, 3])]
43
+ )
44
+ expected_dict = OrderedDict([("a", 1), ("f", [1, 2, 3])])
45
+ result: List[OrderedDict[str, Any]] | OrderedDict[str, Any] = (
46
+ FhirClientJsonHelpers.remove_empty_elements_from_ordered_dict(input_dict)
47
+ )
48
+ assert result == expected_dict
49
+
50
+ # Test list of OrderedDicts
51
+ input_list: List[OrderedDict[str, Any]] = [
52
+ OrderedDict([("a", 1), ("b", None)]),
53
+ OrderedDict([("c", []), ("d", "test")]),
54
+ OrderedDict([("e", {})]),
55
+ ]
56
+ expected_list: List[OrderedDict[str, Any]] = [
57
+ OrderedDict([("a", 1)]),
58
+ OrderedDict([("d", "test")]),
59
+ ]
60
+ result = FhirClientJsonHelpers.remove_empty_elements_from_ordered_dict(
61
+ input_list
62
+ )
63
+ assert result == expected_list
64
+
65
+ def test_convert_dict_to_fhir_json(self) -> None:
66
+ input_dict = {"name": "John Doe", "age": 30, "address": None, "hobbies": []}
67
+ result = FhirClientJsonHelpers.convert_dict_to_fhir_json(input_dict)
68
+ parsed_result = json.loads(result)
69
+ assert parsed_result == {"name": "John Doe", "age": 30}
70
+
71
+ def test_orjson_dumps(self) -> None:
72
+ # Test basic serialization
73
+ data = {"a": 1, "b": "test"}
74
+ result = FhirClientJsonHelpers.orjson_dumps(data)
75
+ assert json.loads(result) == data
76
+
77
+ # Test sorting keys
78
+ result_sorted = FhirClientJsonHelpers.orjson_dumps(data, sort_keys=True)
79
+ assert result_sorted == '{"a":1,"b":"test"}'
80
+
81
+ # Test indentation (limited support)
82
+ result_indent = FhirClientJsonHelpers.orjson_dumps(data, indent=2)
83
+ assert isinstance(result_indent, str)
84
+
85
+ def test_orjson_loads(self) -> None:
86
+ # Test string input
87
+ json_str = '{"a": 1, "b": "test"}'
88
+ result = FhirClientJsonHelpers.orjson_loads(json_str)
89
+ assert result == {"a": 1, "b": "test"}
90
+
91
+ # Test bytes input
92
+ json_bytes = b'{"a": 1, "b": "test"}'
93
+ result = FhirClientJsonHelpers.orjson_loads(json_bytes)
94
+ assert result == {"a": 1, "b": "test"}
95
+
96
+ # Test invalid JSON
97
+ invalid_json = "{invalid json}"
98
+ result = FhirClientJsonHelpers.orjson_loads(invalid_json)
99
+ assert result is None
@@ -0,0 +1,139 @@
1
+ Metadata-Version: 2.4
2
+ Name: compressedfhir
3
+ Version: 3.0.2
4
+ Summary: Stores FHIR JSON resources in compressed form in memory
5
+ Home-page: https://github.com/icanbwell/compressed-fhir
6
+ Author: Imran Qureshi
7
+ Author-email: imran.qureshi@icanbwell.com
8
+ Classifier: Development Status :: 4 - Beta
9
+ Classifier: Programming Language :: Python :: 3
10
+ Classifier: License :: OSI Approved :: Apache Software License
11
+ Classifier: Operating System :: OS Independent
12
+ Requires-Python: >=3.10
13
+ Description-Content-Type: text/markdown
14
+ License-File: LICENSE
15
+ Requires-Dist: msgpack>=1.0.0
16
+ Requires-Dist: orjson>=3.10.16
17
+ Dynamic: author
18
+ Dynamic: author-email
19
+ Dynamic: classifier
20
+ Dynamic: description
21
+ Dynamic: description-content-type
22
+ Dynamic: home-page
23
+ Dynamic: license-file
24
+ Dynamic: requires-dist
25
+ Dynamic: requires-python
26
+ Dynamic: summary
27
+
28
+ # Compressed FHIR
29
+
30
+ A Python library for storing FHIR JSON resources in a compressed form in memory, optimizing memory usage while maintaining fast access to FHIR data.
31
+
32
+ ## Overview
33
+
34
+ Compressed FHIR is a specialized library that provides efficient memory storage for FHIR (Fast Healthcare Interoperability Resources) JSON resources. It uses zlib or msgpack for compression while ensuring quick access to the stored healthcare data.
35
+
36
+ ## Features
37
+
38
+ - Efficient memory storage of FHIR resources
39
+ - Fast access to compressed FHIR data
40
+ - Compatible with standard FHIR JSON formats
41
+ - Minimal memory footprint
42
+ - Python 3.10+ support
43
+
44
+ ## Installation
45
+
46
+ You can install the package using pip:
47
+
48
+ ```bash
49
+ pip install compressedfhir
50
+ ```
51
+
52
+ Or using pipenv:
53
+
54
+ ```bash
55
+ pipenv install compressedfhir
56
+ ```
57
+
58
+ ## Requirements
59
+
60
+ - Python 3.10 or higher
61
+ - msgpack >= 1.0.0
62
+ - orjson >= 3.10.16
63
+
64
+ ## Usage
65
+
66
+ ```python
67
+ from typing import Any
68
+ from collections import OrderedDict
69
+
70
+ from compressedfhir.fhir.fhir_resource import FhirResource
71
+ from compressedfhir.utilities.compressed_dict.v1.compressed_dict_storage_mode import CompressedDictStorageMode
72
+
73
+
74
+ resource1 = FhirResource(
75
+ initial_dict={"resourceType": "Observation", "id": "456"},
76
+ storage_mode=CompressedDictStorageMode.default(),
77
+ )
78
+
79
+ my_dict: OrderedDict[str,Any] = resource1.dict()
80
+ my_plain_dict: dict[str, Any] = resource1.to_plain_dict()
81
+ my_json: str = resource1.json()
82
+
83
+ with resource1.transaction():
84
+ assert "email" not in resource1
85
+ assert resource1.get("name") == "Custom Mode User"
86
+ assert resource1.get("active") is True
87
+ ```
88
+
89
+ ## Development Setup
90
+
91
+ 1. Clone the repository:
92
+ ```bash
93
+ git clone https://github.com/icanbwell/compressed-fhir.git
94
+ cd compressed-fhir
95
+ ```
96
+
97
+ 2. Install dependencies using pipenv:
98
+ ```bash
99
+ pipenv install --dev
100
+ ```
101
+
102
+ 3. Set up pre-commit hooks:
103
+ ```bash
104
+ pre-commit install
105
+ ```
106
+
107
+ ## Docker Support
108
+
109
+ The project includes Docker support for development and deployment:
110
+
111
+ ```bash
112
+ # Build the Docker image
113
+ docker build -t compressed-fhir .
114
+
115
+ # Run using docker-compose
116
+ docker-compose up
117
+ ```
118
+
119
+ ## Contributing
120
+
121
+ Please read [CONTRIBUTING.md](CONTRIBUTING.md) for details on our code of conduct and the process for submitting pull requests.
122
+
123
+ ## License
124
+
125
+ This project is licensed under the Apache License 2.0 - see the [LICENSE](LICENSE) file for details.
126
+
127
+ ## Authors
128
+
129
+ - Imran Qureshi (imran.qureshi@icanbwell.com)
130
+
131
+ ## Support
132
+
133
+ For support, please open an issue in the GitHub repository or contact the maintainers.
134
+
135
+ ## Project Status
136
+
137
+ Current status: Beta
138
+
139
+ The project is under active development. Please check the GitHub repository for the latest updates and changes.
@@ -0,0 +1,59 @@
1
+ compressedfhir/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
+ compressedfhir/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
3
+ compressedfhir/fhir/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
4
+ compressedfhir/fhir/base_resource_list.py,sha256=hhlQLT_HFrLmVPuirTsiXQsiUadxpfSQTPS4CofthTM,4924
5
+ compressedfhir/fhir/fhir_bundle.py,sha256=mxywnxlZQRli9sPcS6pVLmHXc3BB8VunQuqeYndTl7c,10312
6
+ compressedfhir/fhir/fhir_bundle_entry.py,sha256=pTebTx9XujB2bOUKDxTIlH6aGASzRiuXrFhwhu1Tk94,8712
7
+ compressedfhir/fhir/fhir_bundle_entry_list.py,sha256=ZsyIbVs0hp650pCX1VcVnC5RIGjhHQh0wFy9aS_CCEg,2902
8
+ compressedfhir/fhir/fhir_bundle_entry_request.py,sha256=8UqJw388aDYgZCz1rvk2kmDa03vOEsmZOaJeb5CLqzw,2841
9
+ compressedfhir/fhir/fhir_bundle_entry_response.py,sha256=5u-ycyWVdFyLhIUM4xf-5QioKWAc2kEOFeFcJRrR6_o,2512
10
+ compressedfhir/fhir/fhir_bundle_entry_search.py,sha256=uYVJxuNN3gt3Q6BZ5FhRs47x7l54Lo_H-7JdoOvkx94,2554
11
+ compressedfhir/fhir/fhir_identifier.py,sha256=tA_nmhBaYHu5zjJdE0IWMFEF8lrIPV3_nu-yairiIKw,2711
12
+ compressedfhir/fhir/fhir_link.py,sha256=jf2RrwmsPrKW3saP77y42xVqI0xwHFYXxm6YHQJk7gU,1922
13
+ compressedfhir/fhir/fhir_meta.py,sha256=vNI4O6SoG4hJRHyd-bJ_QnYFTfBHyR3UA6h21ByQmWo,1669
14
+ compressedfhir/fhir/fhir_resource.py,sha256=7LDcIlQr7PI72P2_Qd8xnEPcD9bPbH5jVLsT-m2e5vw,5484
15
+ compressedfhir/fhir/fhir_resource_list.py,sha256=l0QQf1YEgfJorwjO2ojRWppWnk8BAdCDP6Gb7y2EfXw,4695
16
+ compressedfhir/fhir/fhir_resource_map.py,sha256=XFJ0o5_kLUeHYKp1q_Bxsoyp2-rLX7P4c9FwQ7YfGWM,6571
17
+ compressedfhir/fhir/test/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
18
+ compressedfhir/fhir/test/test_bundle_entry.py,sha256=Ki2sSu1V1WZkAM6UTCghtzjvjYYI8UcF6AXnx8FWlMI,5115
19
+ compressedfhir/fhir/test/test_bundle_entry_list.py,sha256=KtMrbQYezdEw9FJbBzwSePdJK2R9P03mSRfo59T-6iM,6041
20
+ compressedfhir/fhir/test/test_bundle_entry_request.py,sha256=9bN3Vt9BAXPLjH7FFt_MYSdanFJzWk9HbA0C9kZxPXY,2853
21
+ compressedfhir/fhir/test/test_bundle_entry_response.py,sha256=jk5nUi07_q-yz-qz2YR86vU91e3DVxc2cptrS6tsCco,2539
22
+ compressedfhir/fhir/test/test_fhir_bundle.py,sha256=Kt1IpxEnUuPOJBDWsdy4cC7kR3FR-uPOf7PB9ejJ7ZM,8700
23
+ compressedfhir/fhir/test/test_fhir_resource.py,sha256=nsSLs-sKDaYpoTVyXuBNnKJ0-somxDNX368lpTf3HUw,3828
24
+ compressedfhir/fhir/test/test_fhir_resource_list.py,sha256=SrSPJ1yWU4UgMUCht6JwgKh2Y5JeTS4-Wky0kWZOXH8,5664
25
+ compressedfhir/fhir/test/test_fhir_resource_map.py,sha256=jtQ5fq_jhmFfhHGyK5mdiwIQiO-Sfp2eG9mco_Tr9Qk,10995
26
+ compressedfhir/utilities/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
27
+ compressedfhir/utilities/fhir_json_encoder.py,sha256=hn-ZuDrTEdYZmILk_5_k4R72PQB_OHYXo_3eTKTO24c,1856
28
+ compressedfhir/utilities/json_helpers.py,sha256=lEiPapLN0p-kLu6PFm-h971ieXRxwPB2M-8FCZ2Buo8,5642
29
+ compressedfhir/utilities/compressed_dict/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
30
+ compressedfhir/utilities/compressed_dict/v1/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
31
+ compressedfhir/utilities/compressed_dict/v1/compressed_dict.py,sha256=R2-4AnVi2QeasRHWS0katxifOpWMx3iNMkif7n_V09Q,22472
32
+ compressedfhir/utilities/compressed_dict/v1/compressed_dict_access_error.py,sha256=xuwED0KGZcQORIcZRfi--5CdXplHJ5vYLBUqpbDi344,132
33
+ compressedfhir/utilities/compressed_dict/v1/compressed_dict_storage_mode.py,sha256=mEdtJjPX2I9DqP0Ly_VsZZWhEMNTI1psqQ8iJtUQ2oE,1412
34
+ compressedfhir/utilities/compressed_dict/v1/test/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
35
+ compressedfhir/utilities/compressed_dict/v1/test/test_compressed_dict.py,sha256=5yUnjkmP3A4dSPzDXY3u1YBQ8BxCANdtCF9uGF1T9i4,15840
36
+ compressedfhir/utilities/json_serializers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
37
+ compressedfhir/utilities/json_serializers/type_preservation_decoder.py,sha256=3s9oc_gMWCgBxV_PYkHMMknLWzpEYn09FaJw9s8E-A4,5388
38
+ compressedfhir/utilities/json_serializers/type_preservation_encoder.py,sha256=tJ6HnrwxRqyqYBYxpfHXZ6EzKyTPgbWZE9QJZCYLYdM,1814
39
+ compressedfhir/utilities/json_serializers/type_preservation_serializer.py,sha256=cE1ka2RxKy_8P0xhgqvPyWqJ3C0Br-aqIHP9BPkCg7A,1523
40
+ compressedfhir/utilities/json_serializers/test/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
41
+ compressedfhir/utilities/json_serializers/test/test_type_preservation_decoder.py,sha256=tmCOZUo6nmnzzxEY0m3-l5szSBRwXovH5z1JOx_AUiE,5199
42
+ compressedfhir/utilities/json_serializers/test/test_type_preservation_encoder.py,sha256=Kr_DFRFm0FtOWMts6sT4r95q0XXeTggQTSgTpAl6p_s,2151
43
+ compressedfhir/utilities/json_serializers/test/test_type_preservation_serializer.py,sha256=rRnd1K1cyIHA2101_ip5bE-s6syBhyiIyoVB_-FKs8c,7485
44
+ compressedfhir/utilities/ordered_dict_to_dict_converter/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
45
+ compressedfhir/utilities/ordered_dict_to_dict_converter/ordered_dict_to_dict_converter.py,sha256=CMerJQD7O0vMyGtUp1rKSerZA1tDZeY5GTQT3AykL4w,831
46
+ compressedfhir/utilities/string_compressor/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
47
+ compressedfhir/utilities/string_compressor/v1/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
48
+ compressedfhir/utilities/string_compressor/v1/string_compressor.py,sha256=28CvEJPQVKS56S9YPdVM1i-xWEuizYeyKiICWEYOV0k,3263
49
+ compressedfhir/utilities/string_compressor/v1/test/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
50
+ compressedfhir/utilities/string_compressor/v1/test/test_string_compressor.py,sha256=ydlJIpp-IDPcLlv4YvxMph19OndLEt3kuNQ9buNwy0Y,5473
51
+ compressedfhir/utilities/test/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
52
+ compressedfhir/utilities/test/test_fhir_json_encoder.py,sha256=6pbNmZp5eBWY66bHjgjm_pZVhs5HDKP8hCGnwNFzpEw,5171
53
+ compressedfhir/utilities/test/test_json_helpers.py,sha256=V0R9oHDQAs0m0012niEz50sHJxMSUQvA3km7kK8HgjE,3860
54
+ compressedfhir-3.0.2.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
55
+ tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
56
+ compressedfhir-3.0.2.dist-info/METADATA,sha256=EiSwprNhB0joRLZoTZPhTHZVn3vKM7CPgRgnw_QN3YQ,3456
57
+ compressedfhir-3.0.2.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
58
+ compressedfhir-3.0.2.dist-info/top_level.txt,sha256=YMKdvBBdiCzFbpI9fG8BUDjaRd-f4R0qAvUoVETpoWw,21
59
+ compressedfhir-3.0.2.dist-info/RECORD,,
@@ -0,0 +1,5 @@
1
+ Wheel-Version: 1.0
2
+ Generator: setuptools (80.9.0)
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any
5
+