@@ -78,15 +78,15 @@ def test_build_patient_summary() -> None:
7878 assert summary .type == 'document'
7979 assert summary .identifier .system == 'urn:oid:2.16.724.4.8.10.200.10'
8080
81- observations_with_category = [ observation for observation in observations if observation . category ]
81+ observations_with_category_value = ips . _clean_observations ( observations )
8282
8383 # Composition, Patient, Device and the resources
8484 assert len (summary .entry ) == (
8585 3
8686 + len (conditions )
8787 + len (medication_requests )
8888 + len (allergies )
89- + len (observations_with_category )
89+ + len (observations_with_category_value )
9090 + len (immunizations )
9191 )
9292
@@ -106,16 +106,16 @@ def test_build_patient_summary_composition() -> None:
106106 # Verify all 7 IPS sections
107107 assert len (composition .section ) == 7
108108
109- observations_with_category = [ observation for observation in observations if observation . category ]
109+ observations_with_category_value = ips . _clean_observations ( observations )
110110
111111 vital_signs = [
112112 observation
113- for observation in observations_with_category
113+ for observation in observations_with_category_value
114114 if observation .category [0 ].coding [0 ].code == 'vital-signs'
115115 ]
116116 labs = [
117117 observation
118- for observation in observations_with_category
118+ for observation in observations_with_category_value
119119 if observation .category [0 ].coding [0 ].code == 'laboratory'
120120 ]
121121
@@ -209,7 +209,7 @@ def test_build_patient_summary_resources_included() -> None:
209209 expected_ids .update (condition .id for condition in conditions )
210210 expected_ids .update (medication_request .id for medication_request in medication_requests )
211211 expected_ids .update (allergy .id for allergy in allergies )
212- expected_ids .update (observation .id for observation in observations if observation . category )
212+ expected_ids .update (observation .id for observation in ips . _clean_observations ( observations ) )
213213 expected_ids .update (immunization .id for immunization in immunizations )
214214
215215 assert resource_ids == expected_ids
@@ -225,10 +225,23 @@ def test_build_patient_summary_resources_observations_without_category() -> None
225225 _prepare_build_patient_summary ()
226226 )
227227
228- # Skip the first three entries (Composition, Patient, Device)
229228 resource_ids = {entry .resource .id for entry in summary .entry }
230229
231- observations_without_category = [observation for observation in observations if not observation .category ]
230+ observations_without_category = [observation .id for observation in observations if not observation .category ]
231+
232+ assert len (observations_without_category ) == 1
233+ assert 'a083c331-bd33-4372-8c4d-8c329d354607' in observations_without_category
234+ assert 'a083c331-bd33-4372-8c4d-8c329d354607' not in resource_ids
235+
236+
237+ def test_build_patient_summary_resources_observations_without_data_absent_reason () -> None :
238+ """Observations with a dataAbsentReason are not included in the patient summary Bundle."""
239+ summary , _patient , _conditions , _medication_requests , _allergies , observations , _immunizations = (
240+ _prepare_build_patient_summary ()
241+ )
242+
243+ resource_ids = {entry .resource .id for entry in summary .entry }
244+ observations_without_value = [observation .id for observation in observations if observation .dataAbsentReason ]
232245
233- for observation in observations_without_category :
234- assert observation . id not in resource_ids
246+ assert len ( observations_without_value ) == 1
247+ assert '9efb0a09-01e2-4792-8085-439698be315e' not in resource_ids
0 commit comments