Skip to content

Commit d29f25a

Browse files
authored
Merge pull request #1368 from chhsiao1981/query-series-sequentially
sequentially query series.
2 parents ebd1708 + 06be600 commit d29f25a

File tree

1 file changed

+67
-69
lines changed

1 file changed

+67
-69
lines changed

src/reducers/pacs.ts

Lines changed: 67 additions & 69 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,13 @@ import {
44
init as _init,
55
type ClassState,
66
createReducer,
7-
genUUID,
8-
getRootID,
7+
type Dispatch,
98
getState,
109
type State as rState,
1110
setData,
1211
type Thunk,
1312
} from "react-reducer-utils";
1413
import type { Location } from "react-router";
15-
import type { URLSearchParams } from "url";
1614
import { STATUS_OK, STATUS_OK_CREATE } from "../api/constants";
1715
import type { SeriesKey } from "../api/lonk";
1816
import {
@@ -214,7 +212,7 @@ export const setService = (myID: string, service: string): Thunk<State> => {
214212
};
215213
};
216214

217-
const queryPacsSeriesByStudyUID = (
215+
const queryPacsSeriesByStudyUID = async (
218216
myID: string,
219217
service: string,
220218
studyInstanceUID: string,
@@ -224,62 +222,62 @@ const queryPacsSeriesByStudyUID = (
224222
queryValues: string[],
225223
eachQueryValue: string,
226224
queryValueStudyUIDsMap: QueryValueStudyUIDsMap,
227-
): Thunk<State> => {
228-
return async (dispatch, getClassState) => {
229-
const query = { StudyInstanceUID: studyInstanceUID };
230-
// @ts-expect-error PACSqueryCore is incorrect.
231-
const { status, data, errmsg } = await queryPFDCMSeries(service, query);
232-
if (status !== STATUS_OK) {
233-
dispatch(setData(myID, { errmsg }));
234-
return;
235-
}
225+
dispatch: Dispatch<State>,
226+
getClassState: () => ClassState<State>,
227+
) => {
228+
const query = { StudyInstanceUID: studyInstanceUID };
229+
// @ts-expect-error PACSqueryCore is incorrect.
230+
const { status, data, errmsg } = await queryPFDCMSeries(service, query);
231+
if (status !== STATUS_OK) {
232+
dispatch(setData(myID, { errmsg }));
233+
return;
234+
}
236235

237-
const studyData: PacsStudyState[] = (data?.pypx.data || []).map((each) => ({
236+
const studyData: PacsStudyState[] = (data?.pypx.data || []).map((each) => ({
237+
// @ts-expect-error simplifyPypxStudyData
238+
info: simplifyPypxStudyData(each),
239+
series: each.series.map((eachSeries): PacsSeriesState => {
238240
// @ts-expect-error simplifyPypxStudyData
239-
info: simplifyPypxStudyData(each),
240-
series: each.series.map((eachSeries): PacsSeriesState => {
241-
// @ts-expect-error simplifyPypxStudyData
242-
const info = simplifyPypxSeriesData(eachSeries);
243-
const pullState =
244-
info.NumberOfSeriesRelatedInstances === 0 ||
245-
info.NumberOfSeriesRelatedInstances === null
246-
? SeriesPullState.WAITING_OR_COMPLETE
247-
: SeriesPullState.CHECKING;
248-
const done = info.NumberOfSeriesRelatedInstances === 0;
249-
250-
return {
251-
errors: [],
252-
info,
253-
inCube: null,
254-
pullState,
255-
receivedCount: 0,
256-
subscribed: false,
257-
done,
258-
};
259-
}),
260-
}));
241+
const info = simplifyPypxSeriesData(eachSeries);
242+
const pullState =
243+
info.NumberOfSeriesRelatedInstances === 0 ||
244+
info.NumberOfSeriesRelatedInstances === null
245+
? SeriesPullState.WAITING_OR_COMPLETE
246+
: SeriesPullState.CHECKING;
247+
const done = info.NumberOfSeriesRelatedInstances === 0;
248+
249+
return {
250+
errors: [],
251+
info,
252+
inCube: null,
253+
pullState,
254+
receivedCount: 0,
255+
subscribed: false,
256+
done,
257+
};
258+
}),
259+
}));
261260

262-
// update cube-series-state
263-
await queryAllCubeSeriesState(studyData);
261+
// update cube-series-state
262+
await queryAllCubeSeriesState(studyData);
264263

265-
const classState = getClassState();
264+
const classState = getClassState();
266265

267-
const postStudyData = postprocessStudyData(
268-
studyData,
269-
classState,
270-
queryPrompt,
271-
queryValue,
272-
queryValues,
273-
eachQueryValue,
274-
queryValueStudyUIDsMap,
275-
false,
276-
);
277-
if (!postStudyData) {
278-
return;
279-
}
266+
const postStudyData = postprocessStudyData(
267+
studyData,
268+
classState,
269+
queryPrompt,
270+
queryValue,
271+
queryValues,
272+
eachQueryValue,
273+
queryValueStudyUIDsMap,
274+
false,
275+
);
276+
if (!postStudyData) {
277+
return;
278+
}
280279

281-
dispatch(setData(myID, postStudyData));
282-
};
280+
dispatch(setData(myID, postStudyData));
283281
};
284282

285283
export const queryCubeSeriesStateBySeriesUID = (
@@ -412,21 +410,21 @@ export const queryPacsStudies = (
412410

413411
dispatch(setData(myID, postStudyData));
414412

415-
// get series data
416-
studyData.map((eachStudyData) =>
417-
dispatch(
418-
queryPacsSeriesByStudyUID(
419-
myID,
420-
service,
421-
eachStudyData.info.StudyInstanceUID,
422-
queryPrompt,
423-
queryValue,
424-
queryValues,
425-
each,
426-
queryValueStudyUIDsMap,
427-
),
428-
),
429-
);
413+
// sequentially get series data
414+
for (const eachStudyData of studyData) {
415+
await queryPacsSeriesByStudyUID(
416+
myID,
417+
service,
418+
eachStudyData.info.StudyInstanceUID,
419+
queryPrompt,
420+
queryValue,
421+
queryValues,
422+
each,
423+
queryValueStudyUIDsMap,
424+
dispatch,
425+
getClassState,
426+
);
427+
}
430428
});
431429
};
432430
};

0 commit comments

Comments
 (0)