Skip to content

Commit

Permalink
feat: using with typescript can get response type
Browse files Browse the repository at this point in the history
  • Loading branch information
JieuTang committed Aug 6, 2022
1 parent 00e9f29 commit 3daba11
Show file tree
Hide file tree
Showing 15 changed files with 625 additions and 829 deletions.
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -104,3 +104,6 @@ dist

# TernJS port file
.tern-port


test.js
121 changes: 67 additions & 54 deletions src/DICOMwebWADORSURI.ts
Original file line number Diff line number Diff line change
@@ -1,60 +1,73 @@
import _ from "lodash";
import URL from "url-parse";
import Series from "./Series";
import Study from "./Study";

class DICOMwebWADORSURI {
// Token
isUseToken: boolean = false;
tokenObject: object = {};

// url-parse package
hostname: string = "";
pathname: string = "";
port: string = "";
protocol: string = "";
serverURL: string = "";
studyInstanceUID: string = ""

// Query Mode
queryMode: string = "";

// Response
response: object = {};


async init() {
this.serverURL = await this._getServerURL();
}

async querySeries() {
const study = new Study(this.serverURL, this.queryMode, this.studyInstanceUID);
await study.querySeries();
this.response = study;
}

async renderAllSeries() {
const study = new Study(this.serverURL, this.queryMode, this.studyInstanceUID);
await study.renderAllSeries();
this.response = study;
}

async renderSpecificSeries(seriesInstanceUID: string) {
const study = new Study(this.serverURL, this.queryMode, this.studyInstanceUID);
await study.renderSpecificSeries(seriesInstanceUID);
this.response = study;
}

async _getServerURL() {
let result;

const serverURL = new URL("");
serverURL.set("hostname", this.hostname);
serverURL.set("pathname", this.pathname);
serverURL.set("port", this.port);
serverURL.set("protocol", this.protocol);
result = serverURL.toString();

return result;
}
// Token
isUseToken: boolean = false;
tokenObject?: object;

// url-parse package
hostname: string = "";
pathname: string = "";
port: string = "";
protocol: string = "";
serverURL: string = "";
studyInstanceUID: string = "";

// Query Mode
queryMode: string = "";

// Response
response?: Study;

async init() {
this.serverURL = await this._getServerURL();
}

async querySeries() {
const study = new Study(
this.serverURL,
this.queryMode,
this.studyInstanceUID
);
await study.querySeries();
this.response = study;
}

async renderAllSeries() {
const study = new Study(
this.serverURL,
this.queryMode,
this.studyInstanceUID
);
await study.renderAllSeries();
this.response = study;
}

async renderSpecificSeries(seriesInstanceUID: string) {
const study = new Study(
this.serverURL,
this.queryMode,
this.studyInstanceUID
);
await study.renderSpecificSeries(seriesInstanceUID);
this.response = study;
}

async _getServerURL() {
let result;

const serverURL = new URL("");
serverURL.set("hostname", this.hostname);
serverURL.set("pathname", this.pathname);
serverURL.set("port", this.port);
serverURL.set("protocol", this.protocol);
result = serverURL.toString();

return result;
}
}

export default DICOMwebWADORSURI;
export default DICOMwebWADORSURI;
148 changes: 54 additions & 94 deletions src/Frame.ts
Original file line number Diff line number Diff line change
@@ -1,100 +1,60 @@
import _ from "lodash";

class Frame {

uid: string = "";
parameter: object = {};
queryMode: string = "";
url: object = {};

isUseToken: boolean = false;
tokenObject: object | null = null;


constructor(parameter: object, queryMode: string, numberOfFrame: string) {
this.uid = numberOfFrame;

this.parameter = _.assign(parameter, { "{frames}": numberOfFrame });

this.queryMode = queryMode;

this.url = {
"rs": {
"rendered": "{s}/studies/{study}/series/{series}/instances/{instance}/frames/{frames}/rendered"
},
"uri": {
"rendered": "{s}/wado?requestType=WADO/&studyUID={study}&seriesUID={series}&objectUID={instance}&frameNumber={frames}&contentType=image/jpeg"
}
};

this.isUseToken = false;
this.tokenObject = null;
}

async init() {
await this._validateQueryMode();
await this._replaceUrlParameter();
}


















import { InstanceParameterType } from "./type/parameterType/InstanceParameterType";
import { FrameParameterType } from "./type/parameterType/FrameParameterType";



























async _validateQueryMode() {
const queryModeValueSet = _.keys(this.url);
if (!(_.includes(queryModeValueSet, this.queryMode))) {
console.log(`查詢模式必須是 ${_.toString(queryModeValueSet)}`);
}
}

async _replaceUrlParameter() {
_.forEach(_.get(this.url, this.queryMode), (urlTemplate, key) => {
_.forEach(this.parameter, (valueOfParameter, keyOfParameter) => {
urlTemplate = _.replace(urlTemplate, keyOfParameter, valueOfParameter);
});
_.set(_.get(this.url, this.queryMode), key, urlTemplate);
});
class Frame {
uid: string;
parameter: FrameParameterType;
queryMode: string;
url: object;

isUseToken?: boolean;
tokenObject?: object;

constructor(
parameter: InstanceParameterType,
queryMode: string,
numberOfFrame: string
) {
this.uid = numberOfFrame;

this.parameter = _.assign(parameter, { "{frames}": numberOfFrame });

this.queryMode = queryMode;

this.url = {
rs: {
rendered:
"{s}/studies/{study}/series/{series}/instances/{instance}/frames/{frames}/rendered",
},
uri: {
rendered:
"{s}/wado?requestType=WADO/&studyUID={study}&seriesUID={series}&objectUID={instance}&frameNumber={frames}&contentType=image/jpeg",
},
};
}

async init() {
await this._validateQueryMode();
await this._replaceUrlParameter();
}

async _validateQueryMode() {
const queryModeValueSet = _.keys(this.url);
if (!_.includes(queryModeValueSet, this.queryMode)) {
console.log(`查詢模式必須是 ${_.toString(queryModeValueSet)}`);
}
}

async _replaceUrlParameter() {
_.forEach(_.get(this.url, this.queryMode), (urlTemplate, key) => {
_.forEach(this.parameter, (valueOfParameter, keyOfParameter) => {
urlTemplate = _.replace(urlTemplate, keyOfParameter, valueOfParameter);
});
_.set(_.get(this.url, this.queryMode), key, urlTemplate);
});
}
}

export default Frame
export default Frame;
Loading

0 comments on commit 3daba11

Please sign in to comment.