Skip to content

Commit

Permalink
removing any type and other unnecessary typings
Browse files Browse the repository at this point in the history
  • Loading branch information
lmdulz committed Sep 20, 2023
1 parent eb16e75 commit fb253c7
Show file tree
Hide file tree
Showing 8 changed files with 46 additions and 52 deletions.
12 changes: 6 additions & 6 deletions src/anonymizer.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,8 @@ import { Randomizer } from "./randomizer";
import { UIAnonymizer } from "./uianonymizer";
import { UnwantedElementStripper } from "./unwantedelements";

type ElementHandler = (dataset: dataSet, tag: string) => boolean;

export class Anonymizer {
/**
The main class responsible for anonymizing dcmjs datasets.
Expand All @@ -23,7 +25,7 @@ export class Anonymizer {
private date_offset_hours: number;
randomizer: Randomizer;
address_anonymizer: AddressAnonymizer;
element_handlers: any[];
element_handlers: ElementHandler[];

constructor(
patientID: string,
Expand Down Expand Up @@ -94,7 +96,7 @@ export class Anonymizer {
this.walk(data.dict, this.element_handlers);
}

walk(dataset: dataSet, handler: any) {
walk(dataset: dataSet, handler: ElementHandler[]) {
const tagList = Object.keys(dataset);
for (const tag of tagList) {
const element = dataset[tag];
Expand All @@ -117,7 +119,7 @@ export class Anonymizer {
}
}

anonymize_element(dataset: dataSet, tag: string, handler: any) {
anonymize_element(dataset: dataSet, tag: string, handler: ElementHandler[]) {
// Perform operations on the element
for (const callback of handler) {
if (callback(dataset, tag)) {
Expand All @@ -126,10 +128,8 @@ export class Anonymizer {
}
}

del_private_tags(dataset: any, data_tag: string): boolean {
//const currTag = dcmjs.data.Tag.fromString(data_tag);
del_private_tags(dataset: dataSet, data_tag: string): boolean {
const currTag = data.Tag.fromString(data_tag);
//if (currTag.isPrivateCreator()){
if (currTag.group() % 2 === 1) {
delete dataset[data_tag];
return true;
Expand Down
10 changes: 5 additions & 5 deletions src/datetimeanonymizer.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { data, dataSet } from "dcmjs";

type returnarg = {
value: object | string;
value: string;
tag: string;
};

Expand Down Expand Up @@ -32,7 +32,7 @@ export class DateTimeAnonymizer {
const dates = dataset[dataTag].Value;
const result: returnarg = this.checkTag(dataset, dataTag);

const times = result.value;
const times: string = result.value;

const newDates: string[] = [];
const newTimes: string[] = [];
Expand Down Expand Up @@ -104,11 +104,11 @@ export class DateTimeAnonymizer {
.replace("%S", seconds);
};

zipLongest = (fillValue = "", ...arr: any[]): string[][] => {
const maxLength = Math.max(...arr.map((arr: any) => arr.length));
zipLongest = (fillValue = "", ...arr: string[]): string[][] => {
const maxLength = Math.max(...arr.map((arr: string) => arr.length));

return Array.from({ length: maxLength }, (_, index) => {
return arr.map((arr: any) => (arr[index] !== undefined ? arr[index] : fillValue));
return arr.map((arr: string[number]) => (arr[index] !== undefined ? arr[index] : fillValue));
});
};

Expand Down
4 changes: 3 additions & 1 deletion src/fixedvalueanonymizer.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
import { dataSet } from "dcmjs";

export class FixedValueAnonymizer {
private tag: string;
private value: string;
Expand All @@ -7,7 +9,7 @@ export class FixedValueAnonymizer {
this.value = value;
}

anonymize = (dataset: any, data_tag: string): boolean => {
anonymize = (dataset: dataSet, data_tag: string): boolean => {
if (data_tag == this.tag) {
dataset[data_tag].Value[0] = this.value;

Expand Down
2 changes: 1 addition & 1 deletion src/idanonymizer.ts
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ export class IDAnonymizer {
}
};

new_id = (original_value: any): string => {
new_id = (original_value: string): string => {
const indexes = this.randomizer.getIntsFromRanges(original_value, ...this.indicesForRandomizer);
const id_root: string = indexes.map((i) => this.alphabet[i]).join("");

Expand Down
4 changes: 3 additions & 1 deletion src/protector.ts
Original file line number Diff line number Diff line change
@@ -1,11 +1,13 @@
import { dataSet } from "dcmjs";

export class Protector {
private protected_tags: string[];

constructor(keywords: string[] = []) {
this.protected_tags = keywords;
}

protect = (data_tag: string): boolean => {
protect = (_: dataSet, data_tag: string): boolean => {
if (this.protected_tags.includes(data_tag)) {
return true;
} else {
Expand Down
4 changes: 2 additions & 2 deletions src/randomizer.ts
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ export class Randomizer {
return seed;
}

public toInt(originalValue: any): bigint {
public toInt(originalValue: string): bigint {
const message = this.seed + String(originalValue);
const encoder = new TextEncoder();
const encoded = encoder.encode(message);
Expand All @@ -59,7 +59,7 @@ export class Randomizer {
return result;
}

public getIntsFromRanges(originalValue: any, ...suprema: number[]): number[] {
public getIntsFromRanges(originalValue: string, ...suprema: number[]): number[] {
let big_Int = this.toInt(originalValue);
const result: number[] = [];
for (const x of suprema) {
Expand Down
36 changes: 16 additions & 20 deletions src/uianonymizer.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,28 +11,24 @@ export class UIAnonymizer {
anonymize = (dataset: dataSet, data_tag: string): boolean => {
const tag = data.DicomMetaDictionary.punctuateTag(data_tag);

try {
if (
dataset[data_tag].vr != "UI" ||
dataset[data_tag].Value[0] == undefined ||
data.DicomMetaDictionary.dictionary[tag].name.endsWith("ClassUID") ||
data.DicomMetaDictionary.dictionary[tag].name == "TransferSyntaxUID"
) {
return false;
if (
dataset[data_tag].vr != "UI" ||
dataset[data_tag].Value[0] == undefined ||
data.DicomMetaDictionary.dictionary[tag].name.endsWith("ClassUID") ||
data.DicomMetaDictionary.dictionary[tag].name == "TransferSyntaxUID"
) {
return false;
} else {
if (dataset[data_tag].Value.length > 1) {
dataset[data_tag].Value = dataset[data_tag].Value.map((original_ui: string) => {
return this.new_ui(original_ui);
});
} else {
if (dataset[data_tag].Value.length > 1) {
dataset[data_tag].Value = dataset[data_tag].Value.map((original_ui: string) => {
return this.new_ui(original_ui);
});
} else {
const original_ui = dataset[data_tag].Value[0];
dataset[data_tag].Value[0] = this.new_ui(original_ui);
}

return true;
const original_ui = dataset[data_tag].Value[0];
dataset[data_tag].Value[0] = this.new_ui(original_ui);
}
} catch (error: any) {
return false;

return true;
}
};

Expand Down
26 changes: 10 additions & 16 deletions types/dcm.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -31,49 +31,43 @@ declare module "dcmjs" {
constructor(meta: dataSet);
meta: dataSet;
dict: dataSet;
static upsertTag(tag: string, vr: string, values: any): void;

}

export class DicomMessage {
static readFile(buffer: ArrayBufferLike): DicomDict;
}

export class DicomMetaDictionary {
constructor(customDictionary: any);
static nameMap: nameMap;
static dictionary: dictionary;
static punctuateTag(rawTag: string): string;
static unpunctuateTag(tag: string): string;
static parseIntFromTag(tag: string): number;
static tagAsIntegerFromName(name: string): number | undefined;
static cleanDataset(dataset: dataSet): any;
static namifyDataset(dataset: dataSet): any;

/** converts from DICOM JSON Model dataset to a natural dataset
* - sequences become lists
* - single element lists are replaced by their first element,
* with single element lists remaining lists, but being a
* proxy for the child values, see addAccessors for examples
* - object member names are dictionary, not group/element tag
*/
static naturalizeDataset(dataset: dataSet): { _vrMap: any };
denaturalizeValue(naturalValue: any): any;
denaturalizeDataset(dataset: dataSet, nameMap?: any): any;
uid(): string;
date(): string;
time(): string;
dateTime(): string;
// static naturalizeDataset(dataset: dataSet): { _vrMap: any };
// static denaturalizeValue(naturalValue: any): any;
// static denaturalizeDataset(dataset: dataSet, nameMap?: any): any;
static uid(): string;
static date(): string;
static time(): string;
static dateTime(): string;
}

export class Tag {
static fromString(str: string): Tag;
static fromPString(str: any): Tag;
static fromNumbers(group: any, element: any): Tag;
static readTag(stream: any): Tag;
group(): number;
constructor(value: any);
toString(): string;
toCleanString(): string;
is(t: any): boolean;
is(t: string): boolean;
element(): number;
isPixelDataTag(): boolean;
isPrivateCreator(): boolean;
Expand Down

0 comments on commit fb253c7

Please sign in to comment.