| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- // 'src\API\bodyPosition.ts' 提供方法,得到示意图完整路径,输入是view_icon_name,本质是个url path,输出是个完整的url,算法是拼接'src\API\config.ts' 提供的base url和“/pub”和view_icon_name
- import { API_BASE_URL } from './config';
- /**
- * 意图
- * @param viewIconName view_icon_name的值
- * @description 这个方法用于获取view_icon_name的完整URL路径
- * @returns
- */
- export function getViewIconUrl(viewIconName: string): string {
- return `${API_BASE_URL}pub${viewIconName}`;
- }
- /**
- * 得到exposed image的完整URL路径
- * @param sopInstanceUid
- * @returns
- */
- export function getExposedImageUrl(sopInstanceUid: string): string {
- return `${API_BASE_URL}pub/thumbnail/${sopInstanceUid}.jpg`;
- }
- export function getDcmImageUrl(sopInstanceUid: string): string {
- return `dicomweb:${API_BASE_URL}pub/dcm/${sopInstanceUid}.dcm`;
- }
- export function getSopInstanceUidFromUrl(url: string): string {
- if (!url.startsWith('dicomweb:')) {
- throw new Error('Invalid URL format: must start with "dicomweb:"');
- }
- const path = url.substring('dicomweb:'.length);
- const segments = path.split('/').filter(Boolean); // 移除空段
- // 查找 'dcm' 段的位置
- const dcmIndex = segments.indexOf('dcm');
- if (dcmIndex === -1) {
- throw new Error('Invalid path format: expected "/dcm/{sopInstanceUid}.dcm" segment');
- }
- // 下一个段应该是 {sopInstanceUid}.dcm
- if (dcmIndex + 1 >= segments.length) {
- throw new Error('Invalid path format: missing file name after "dcm"');
- }
- const filename = segments[dcmIndex + 1];
- if (!filename.endsWith('.dcm')) {
- throw new Error('Invalid file extension: expected ".dcm"');
- }
- const sopInstanceUid = filename.slice(0, -4); // 移除 .dcm
- if (!sopInstanceUid) {
- throw new Error('Empty SOP Instance UID');
- }
- return sopInstanceUid;
- }
|