irc_web/.svn/pristine/d1/d1b9eae5bf6701478728a115b07...

54 lines
2.2 KiB
Plaintext

import dicomParser from "dicom-parser";
import dcmjs from 'dcmjs'
import {encoder} from "./encoder";
export const anonymization = function (file, config) {
return new Promise(async (resolve, reject) => {
try {
const reader = new FileReader()
let AnonymizeFixedList = config.AnonymizeFixedList
let AnonymizeNotFixedList = config.AnonymizeNotFixedList
let DicomStoreInfo = config.DicomStoreInfo
reader.onload = async (event) => {
let buffer = event.target.result
let data = dicomParser.parseDicom(new Uint8Array(buffer))
let dataset = dcmjs.data.DicomMessage.readFile(buffer)
for (var i = 0; i < AnonymizeFixedList.length; i++) {
let AnonymizeFixed = AnonymizeFixedList[i]
if (dataset.dict[AnonymizeFixed.Group + AnonymizeFixed.Element]) {
dataset.dict[AnonymizeFixed.Group + AnonymizeFixed.Element].Value[0] = AnonymizeFixed.ReplaceValue
} else {
dataset.dict[AnonymizeFixed.Group + AnonymizeFixed.Element] = {
vr: AnonymizeFixed.ValueRepresentation,
Value: [
AnonymizeFixed.ReplaceValue
]
}
}
}
for (var i = 0; i < AnonymizeNotFixedList.length; i++) {
let AnonymizeNotFixed = AnonymizeNotFixedList[i]
if (dataset.dict[AnonymizeNotFixed.Group + AnonymizeNotFixed.Element]) {
dataset.dict[AnonymizeNotFixed.Group + AnonymizeNotFixed.Element].Value[0] = DicomStoreInfo[AnonymizeNotFixed.ReplaceValue] ? DicomStoreInfo[AnonymizeNotFixed.ReplaceValue].toString() : ''
} else {
dataset.dict[AnonymizeNotFixed.Group + AnonymizeNotFixed.Element] = {
vr: AnonymizeNotFixed.ValueRepresentation,
Value: [
DicomStoreInfo[AnonymizeNotFixed.ReplaceValue]
]
}
}
}
let newDicomFile = dataset.write()
const bufferArray = new Uint8Array(newDicomFile)
const blob = new Blob([bufferArray], { type: 'application/octet-stream' })
resolve({blob, data})
};
reader.readAsArrayBuffer(file);
} catch (e) {
console.log(e)
reject(e)
}
})
}