Exemple #1
0
    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
Exemple #2
0
    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