Azure DICOM service 정렬 순서 문제

ding·2024년 11월 15일

Background

Microsoft Azure에서 제공하는 API를 활용하여 DICOM study들을 나열하는 list에서 pagination을 구현한다.
예) https://learn.microsoft.com/en-us/azure/healthcare-apis/dicom/dicom-services-conformance-statement-v2#retrieve-wado-rs

Issue

쿼리 파라미터에 offset과 limit을 활용하여 page를 적용하니 순서가 뒤죽박죽이 되었다. 예를 들어, limit을 10으로 설정했을 때 1페이지에 1번부터 10번까지의 스터디가 보이고 2페이지에 11번부터 20번까지의 스터디가 보이는데, limit을 20으로 설정하면 11번부터 20번 그 다음 1번부터 10번 순서로 보였다.

Solution

study들의 정렬 순서를 도저히 모르겠어서, 그리고 그 외에도 pagination을 구현할 때 필요한 정보들이 부족해서 Azure help&support에 문의했다.
다음은 실제 대화 내용의 일부이다.
Q)
1. study 정렬 기준이 무엇인지?
2. 정렬 기능을 추가하고 싶은데, 방법이 없는지?
3. study 데이터를 받아올 때 total 속성은 제공하지 않는지?
4. 전체 데이터를 불러올 때 한 번에 최대 1000개의 데이터만 받아올 수 있는게 맞는지?
A)
1. 서버에 가장 최근에 추가된 데이터가 가장 첫 번째로 정렬된다. time-descending order이다.
2. 정렬 기능은 제공하지 않는다.
3. 제공하지 않는다.
4. 전체 데이터를 불러올 때에는 최대 1000개 맞다. 대신 페이지 별로 데이터를 불러올 때는 최대 200개까지 가능하다.

여기서 의문. 새로 추가된 study는 아래에 쌓이는데..? 더 웃긴건 첫 번째 페이지의 마지막 데이터로 쌓이더라. 다시 확인해봐~ 했더니, 다음과 같은 답변을 얻었다.

  • If it is querying studies then new studies will be on top.
  • If it is a series query then new series will be on top.
  • If it is querying instances, then latest instances will be on top.

맞다, 아니다 실랑이를 서너번 하다가 결국 내가 규칙을 알아냈다.

전체 study 데이터 불러올 때 : 가장 먼저 업로드 된(오래된) study가 먼저 나옴

offset, limit or search query 적용하여 데이터 불러올 때 : 최신 업로드된 순서 기준에서 적용한 query에 맞는 데이터들이 그 안에서 오래된 순서로 정렬되어 불러와짐

studyInstanceUid가 같을 때 : 하나의 study에서 가장 최근에 업로드된 series가 상단에 위치함

*하나의 study에 series가 여러 개일 경우, 첫 번째로 업로드된 시점 기준으로 정렬됨

해당 내용을 보내줬더니 칭찬받았다..

Excellent conclusion!
That is great to hear so and appreciate your confirmation.
I will update your test results to the backend team as part of internal documentation.
Thanks for contributing with the testing.

아무튼, page에 해당하는 데이터들을 reverse시켜서 study를 업로드 기준 최근 순으로 정렬하는데에는 성공했다.

0개의 댓글