///|
/// Convert a data set to DICOMweb-style JSON.
pub fn dataset_to_json(dataset : DataSet) -> Json {
let object : Map[String, Json] = Map([])
for element in dataset.elements() {
let key = element.tag
.to_string()
.replace(old="(", new="")
.replace(old=",", new="")
.replace(old=")", new="")
let tag_key = key.to_upper()
let value = match element.value {
Text(text) => Json::array([Json::string(text)])
Integer(number) => Json::array([Json::number(Double::from_int(number))])
Bytes(bytes) => Json::array([Json::string(bytes_to_hex(bytes))])
}
object[tag_key] = Json::object({
"vr": Json::string(element.vr.to_string()),
"Value": value,
})
}
Json::object(object)
}
///|
fn bytes_to_hex(bytes : Bytes) -> String {
let builder = StringBuilder()
for byte in bytes {
let hex = byte.to_hex()
if hex.length() == 1 {
builder.write_string("0")
}
builder.write_string(hex)
}
builder.to_string()
}