def get_sequence_item(self, value: SQValueType) -> "Dataset": """Return a sequence item for the JSON dict `value`. Parameters ---------- value : dict or None The sequence item from the JSON entry. Returns ------- dataset_class The decoded dataset item. Raises ------ KeyError If the "vr" key is missing for a contained element """ from pydicom import DataElement from pydicom.dataelem import empty_value_for_VR ds = self.dataset_class() value = {} if value is None else value for key, val in value.items(): if 'vr' not in val: raise KeyError(f"Data element '{self.tag}' must have key 'vr'") vr = val['vr'] unique_value_keys = tuple(set(val.keys()) & set(JSON_VALUE_KEYS)) if not unique_value_keys: # data element with no value elem = DataElement(tag=int(key, 16), value=empty_value_for_VR(vr), VR=vr) else: value_key = unique_value_keys[0] elem = DataElement.from_json(self.dataset_class, key, vr, val[value_key], value_key, self.bulk_data_element_handler) ds.add(elem) return ds
def get_sequence_item(self, value): """Return a sequence item for the JSON dict `value`. Parameters ---------- value : dict or None The sequence item from the JSON entry. Returns ------- dataset_class The decoded dataset item. Raises ------ KeyError If the "vr" key is missing for a contained element """ ds = self.dataset_class() if value: for key, val in value.items(): if 'vr' not in val: fmt = 'Data element "{}" must have key "vr".' raise KeyError(fmt.format(self.tag)) vr = val['vr'] unique_value_keys = tuple( set(val.keys()) & set(JSON_VALUE_KEYS)) from pydicom import DataElement from pydicom.dataelem import empty_value_for_VR if not unique_value_keys: # data element with no value elem = DataElement(tag=int(key, 16), value=empty_value_for_VR(vr), VR=vr) else: value_key = unique_value_keys[0] elem = DataElement.from_json(self.dataset_class, key, vr, val[value_key], value_key) ds.add(elem) return ds