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,293 @@
1
+ import pytest
2
+ import json
3
+
4
+ from compressedfhir.fhir.fhir_resource import FhirResource
5
+ from compressedfhir.fhir.fhir_resource_list import FhirResourceList
6
+ from compressedfhir.fhir.fhir_resource_map import FhirResourceMap
7
+ from compressedfhir.utilities.compressed_dict.v1.compressed_dict_storage_mode import (
8
+ CompressedDictStorageMode,
9
+ )
10
+
11
+
12
+ class TestFhirResourceMap:
13
+ def test_init_empty(self) -> None:
14
+ """Test initialization with no initial dictionary."""
15
+ resource_map = FhirResourceMap()
16
+ assert resource_map._resource_map == {}
17
+
18
+ def test_init_with_initial_dict(self) -> None:
19
+ """Test initialization with an initial dictionary."""
20
+ initial_dict = {
21
+ "Patient": FhirResourceList(
22
+ [
23
+ FhirResource(
24
+ {"id": "123", "resourceType": "Patient"},
25
+ storage_mode=CompressedDictStorageMode(),
26
+ )
27
+ ]
28
+ ),
29
+ "Observation": FhirResourceList(
30
+ [
31
+ FhirResource(
32
+ {"id": "456", "resourceType": "Observation"},
33
+ storage_mode=CompressedDictStorageMode(),
34
+ )
35
+ ]
36
+ ),
37
+ }
38
+ resource_map = FhirResourceMap(initial_dict=initial_dict)
39
+ assert resource_map._resource_map == initial_dict
40
+
41
+ def test_to_dict(self) -> None:
42
+ """Test conversion of resource map to dictionary."""
43
+ patient_resource = {"id": "123", "resourceType": "Patient"}
44
+ initial_dict = {
45
+ "Patient": FhirResourceList(
46
+ [
47
+ FhirResource(
48
+ patient_resource, storage_mode=CompressedDictStorageMode()
49
+ )
50
+ ]
51
+ )
52
+ }
53
+ resource_map = FhirResourceMap(initial_dict=initial_dict)
54
+ result = resource_map.dict()
55
+ assert result == {"Patient": [patient_resource]}
56
+
57
+ def test_get_existing_resource_type(self) -> None:
58
+ """Test getting resources for an existing resource type."""
59
+ patient_resources = FhirResourceList(
60
+ [
61
+ FhirResource(
62
+ {"id": "123", "resourceType": "Patient"},
63
+ storage_mode=CompressedDictStorageMode(),
64
+ )
65
+ ]
66
+ )
67
+ initial_dict = {"Patient": patient_resources}
68
+ resource_map = FhirResourceMap(initial_dict=initial_dict)
69
+
70
+ result = resource_map.get(resource_type="Patient")
71
+ assert result == patient_resources
72
+
73
+ def test_get_nonexistent_resource_type(self) -> None:
74
+ """Test getting resources for a non-existent resource type."""
75
+ resource_map = FhirResourceMap()
76
+ result = resource_map.get(resource_type="Patient")
77
+ assert result is None
78
+
79
+ def test_setitem(self) -> None:
80
+ """Test setting an item in the resource map."""
81
+ resource_map = FhirResourceMap()
82
+ patient_resources = FhirResourceList(
83
+ [
84
+ FhirResource(
85
+ {"id": "123", "resourceType": "Patient"},
86
+ storage_mode=CompressedDictStorageMode(),
87
+ )
88
+ ]
89
+ )
90
+ resource_map["Patient"] = patient_resources
91
+
92
+ assert resource_map._resource_map["Patient"] == patient_resources
93
+
94
+ def test_getitem(self) -> None:
95
+ """Test getting an item from the resource map."""
96
+ patient_resources = FhirResourceList(
97
+ [
98
+ FhirResource(
99
+ {"id": "123", "resourceType": "Patient"},
100
+ storage_mode=CompressedDictStorageMode(),
101
+ )
102
+ ]
103
+ )
104
+ resource_map = FhirResourceMap(initial_dict={"Patient": patient_resources})
105
+
106
+ result = resource_map["Patient"]
107
+ assert result == patient_resources
108
+
109
+ def test_delitem(self) -> None:
110
+ """Test deleting an item from the resource map."""
111
+ patient_resources = FhirResourceList(
112
+ [
113
+ FhirResource(
114
+ {"id": "123", "resourceType": "Patient"},
115
+ storage_mode=CompressedDictStorageMode(),
116
+ )
117
+ ]
118
+ )
119
+ resource_map = FhirResourceMap(initial_dict={"Patient": patient_resources})
120
+
121
+ del resource_map["Patient"]
122
+ assert "Patient" not in resource_map._resource_map
123
+
124
+ def test_delitem_nonexistent(self) -> None:
125
+ """Test deleting a non-existent item raises KeyError."""
126
+ resource_map = FhirResourceMap()
127
+ with pytest.raises(KeyError):
128
+ del resource_map["Patient"]
129
+
130
+ def test_contains(self) -> None:
131
+ """Test checking if a resource type exists in the map."""
132
+ patient_resources = FhirResourceList(
133
+ [
134
+ FhirResource(
135
+ {"id": "123", "resourceType": "Patient"},
136
+ storage_mode=CompressedDictStorageMode(),
137
+ )
138
+ ]
139
+ )
140
+ resource_map = FhirResourceMap(initial_dict={"Patient": patient_resources})
141
+
142
+ assert "Patient" in resource_map
143
+ assert "Observation" not in resource_map
144
+
145
+ def test_items(self) -> None:
146
+ """Test getting all items from the resource map."""
147
+ patient_resources = FhirResourceList(
148
+ [
149
+ FhirResource(
150
+ {"id": "123", "resourceType": "Patient"},
151
+ storage_mode=CompressedDictStorageMode(),
152
+ )
153
+ ]
154
+ )
155
+ obs_resources = FhirResourceList(
156
+ [
157
+ FhirResource(
158
+ {"id": "456", "resourceType": "Observation"},
159
+ storage_mode=CompressedDictStorageMode(),
160
+ )
161
+ ]
162
+ )
163
+ initial_dict = {"Patient": patient_resources, "Observation": obs_resources}
164
+ resource_map = FhirResourceMap(initial_dict=initial_dict)
165
+
166
+ items = resource_map.items()
167
+ assert len(items) == 2
168
+ assert ("Patient", patient_resources) in items
169
+ assert ("Observation", obs_resources) in items
170
+
171
+ def test_get_resource_count(self) -> None:
172
+ """Test getting the total number of resources."""
173
+ initial_dict = {
174
+ "Patient": FhirResourceList(
175
+ [
176
+ FhirResource({"id": "1"}, storage_mode=CompressedDictStorageMode()),
177
+ FhirResource({"id": "2"}, storage_mode=CompressedDictStorageMode()),
178
+ ]
179
+ ),
180
+ "Observation": FhirResourceList(
181
+ [FhirResource({"id": "3"}, storage_mode=CompressedDictStorageMode())]
182
+ ),
183
+ }
184
+ resource_map = FhirResourceMap(initial_dict=initial_dict)
185
+
186
+ assert resource_map.get_resource_count() == 3
187
+
188
+ def test_clear(self) -> None:
189
+ """Test clearing the resource map."""
190
+ patient_resources = FhirResourceList(
191
+ [
192
+ FhirResource(
193
+ {"id": "123", "resourceType": "Patient"},
194
+ storage_mode=CompressedDictStorageMode(),
195
+ )
196
+ ]
197
+ )
198
+ resource_map = FhirResourceMap(initial_dict={"Patient": patient_resources})
199
+
200
+ resource_map.clear()
201
+ assert len(resource_map._resource_map) == 0
202
+
203
+ def test_get_resource_type_and_ids(self) -> None:
204
+ """Test getting resource type and IDs."""
205
+ initial_dict = {
206
+ "Patient": FhirResourceList(
207
+ [
208
+ FhirResource(
209
+ {"id": "123"}, storage_mode=CompressedDictStorageMode()
210
+ ),
211
+ FhirResource(
212
+ {"id": "456"}, storage_mode=CompressedDictStorageMode()
213
+ ),
214
+ ]
215
+ ),
216
+ "Observation": FhirResourceList(
217
+ [FhirResource({"id": "789"}, storage_mode=CompressedDictStorageMode())]
218
+ ),
219
+ }
220
+ resource_map = FhirResourceMap(initial_dict=initial_dict)
221
+
222
+ result = resource_map.get_resource_type_and_ids()
223
+ assert set(result) == {"Patient/123", "Patient/456", "Observation/789"}
224
+
225
+ def test_get_operation_outcomes(self) -> None:
226
+ """Test getting operation outcomes."""
227
+ op_outcomes = FhirResourceList(
228
+ [FhirResource({"id": "op1"}, storage_mode=CompressedDictStorageMode())]
229
+ )
230
+ initial_dict = {"OperationOutcome": op_outcomes}
231
+ resource_map = FhirResourceMap(initial_dict=initial_dict)
232
+
233
+ result = resource_map.get_operation_outcomes()
234
+ assert result == op_outcomes
235
+
236
+ def test_get_operation_outcomes_empty(self) -> None:
237
+ """Test getting operation outcomes when none exist."""
238
+ resource_map = FhirResourceMap()
239
+ result = resource_map.get_operation_outcomes()
240
+ assert result == FhirResourceList()
241
+
242
+ def test_get_resources_except_operation_outcomes(self) -> None:
243
+ """Test getting resources excluding operation outcomes."""
244
+ initial_dict = {
245
+ "Patient": FhirResourceList(
246
+ [FhirResource({"id": "123"}, storage_mode=CompressedDictStorageMode())]
247
+ ),
248
+ "OperationOutcome": FhirResourceList(
249
+ [FhirResource({"id": "op1"}, storage_mode=CompressedDictStorageMode())]
250
+ ),
251
+ "Observation": FhirResourceList(
252
+ [FhirResource({"id": "456"}, storage_mode=CompressedDictStorageMode())]
253
+ ),
254
+ }
255
+ resource_map = FhirResourceMap(initial_dict=initial_dict)
256
+
257
+ result = resource_map.get_resources_except_operation_outcomes()
258
+ assert len(result) == 2
259
+ assert all(
260
+ resource.get("resourceType") != "OperationOutcome" for resource in result
261
+ )
262
+
263
+ def test_to_json(self) -> None:
264
+ """Test converting resource map to JSON."""
265
+ initial_dict = {
266
+ "Patient": FhirResourceList(
267
+ [
268
+ FhirResource(
269
+ {"id": "123", "resourceType": "Patient"},
270
+ storage_mode=CompressedDictStorageMode(),
271
+ )
272
+ ]
273
+ )
274
+ }
275
+ resource_map = FhirResourceMap(initial_dict=initial_dict)
276
+
277
+ json_str = resource_map.json()
278
+ parsed_json = json.loads(json_str)
279
+ assert parsed_json == {"Patient": [{"id": "123", "resourceType": "Patient"}]}
280
+
281
+ def test_get_count_of_resource_types(self) -> None:
282
+ """Test getting the count of unique resource types."""
283
+ initial_dict = {
284
+ "Patient": FhirResourceList(
285
+ [FhirResource({"id": "123"}, storage_mode=CompressedDictStorageMode())]
286
+ ),
287
+ "Observation": FhirResourceList(
288
+ [FhirResource({"id": "456"}, storage_mode=CompressedDictStorageMode())]
289
+ ),
290
+ }
291
+ resource_map = FhirResourceMap(initial_dict=initial_dict)
292
+
293
+ assert resource_map.get_count_of_resource_types() == 2
File without changes
File without changes
File without changes