Mercurial > hg > orthanc
comparison OrthancFramework/UnitTestsSources/FromDcmtkTests.cpp @ 4683:7182f5732480
use of DicomPath in ParsedDicomFile
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Tue, 08 Jun 2021 12:37:48 +0200 |
parents | d38a7040474a |
children | 693f049729ba |
comparison
equal
deleted
inserted
replaced
4682:d38a7040474a | 4683:7182f5732480 |
---|---|
2356 ASSERT_THROW(DicomPath::Parse("(0010,0010)[.PatientID"), OrthancException); | 2356 ASSERT_THROW(DicomPath::Parse("(0010,0010)[.PatientID"), OrthancException); |
2357 ASSERT_THROW(DicomPath::Parse("(0010,0010)[].PatientID"), OrthancException); | 2357 ASSERT_THROW(DicomPath::Parse("(0010,0010)[].PatientID"), OrthancException); |
2358 ASSERT_THROW(DicomPath::Parse("(0010,0010[].PatientID"), OrthancException); | 2358 ASSERT_THROW(DicomPath::Parse("(0010,0010[].PatientID"), OrthancException); |
2359 ASSERT_THROW(DicomPath::Parse("(0010,0010)0].PatientID"), OrthancException); | 2359 ASSERT_THROW(DicomPath::Parse("(0010,0010)0].PatientID"), OrthancException); |
2360 ASSERT_THROW(DicomPath::Parse("(0010,0010)[-1].PatientID"), OrthancException); | 2360 ASSERT_THROW(DicomPath::Parse("(0010,0010)[-1].PatientID"), OrthancException); |
2361 } | 2361 |
2362 | 2362 ASSERT_TRUE(DicomPath::IsMatch(DicomPath::Parse("(0010,0010)"), |
2363 | 2363 DicomPath::Parse("(0010,0010)"))); |
2364 | 2364 ASSERT_FALSE(DicomPath::IsMatch(DicomPath::Parse("(0010,0010)"), |
2365 TEST(ParsedDicomFile, RemovePath) | 2365 DicomPath::Parse("(0010,0020)"))); |
2366 { | 2366 ASSERT_TRUE(DicomPath::IsMatch(DicomPath::Parse("(0010,0010)"), |
2367 { | 2367 DicomPath::Parse("(0010,0010)[1].(0010,0020)"))); |
2368 Json::Value v = Json::arrayValue; | 2368 ASSERT_FALSE(DicomPath::IsMatch(DicomPath::Parse("(0010,0010)[1].(0010,0020)"), |
2369 | 2369 DicomPath::Parse("(0010,0010)"))); |
2370 Json::Value item = Json::objectValue; | 2370 ASSERT_TRUE(DicomPath::IsMatch(DicomPath::Parse("(0010,0010)[1].(0010,0020)"), |
2371 item["PatientID"] = "HELLO"; | 2371 DicomPath::Parse("(0010,0010)[1].(0010,0020)"))); |
2372 v.append(item); | 2372 ASSERT_TRUE(DicomPath::IsMatch(DicomPath::Parse("(0010,0010)[*].(0010,0020)"), |
2373 | 2373 DicomPath::Parse("(0010,0010)[1].(0010,0020)"))); |
2374 std::unique_ptr<DcmElement> d(FromDcmtkBridge::FromJson(DICOM_TAG_SOURCE_IMAGE_SEQUENCE, | 2374 ASSERT_FALSE(DicomPath::IsMatch(DicomPath::Parse("(0010,0010)[2].(0010,0020)"), |
2375 v, false, Encoding_Latin1, "")); | 2375 DicomPath::Parse("(0010,0010)[1].(0010,0020)"))); |
2376 d->writeXML(std::cout); | 2376 ASSERT_THROW(DicomPath::IsMatch(DicomPath::Parse("(0010,0010)[1].(0010,0020)"), |
2377 } | 2377 DicomPath::Parse("(0010,0010)[*].(0010,0020)")), OrthancException); |
2378 | 2378 ASSERT_TRUE(DicomPath::IsMatch(DicomPath::Parse("(0010,0010)[*].(0010,0020)[*].(0010,0030)"), |
2379 { | 2379 DicomPath::Parse("(0010,0010)[1].(0010,0020)[2].(0010,0030)[3].(0010,0040)"))); |
2380 Json::Value v = "Hello"; | 2380 ASSERT_TRUE(DicomPath::IsMatch(DicomPath::Parse("(0010,0010)[1].(0010,0020)[2].(0010,0030)"), |
2381 std::unique_ptr<DcmElement> d(FromDcmtkBridge::FromJson(DICOM_TAG_PATIENT_ID, | 2381 DicomPath::Parse("(0010,0010)[1].(0010,0020)[2].(0010,0030)[3].(0010,0040)"))); |
2382 v, false, Encoding_Latin1, "")); | 2382 ASSERT_FALSE(DicomPath::IsMatch(DicomPath::Parse("(0010,0010)[1].(0010,0020)[3].(0010,0030)"), |
2383 d->writeXML(std::cout); | 2383 DicomPath::Parse("(0010,0010)[1].(0010,0020)[2].(0010,0030)[3].(0010,0040)"))); |
2384 } | 2384 ASSERT_FALSE(DicomPath::IsMatch(DicomPath::Parse("(0010,0010)[2].(0010,0020)[2].(0010,0030)"), |
2385 | 2385 DicomPath::Parse("(0010,0010)[1].(0010,0020)[2].(0010,0030)[3].(0010,0040)"))); |
2386 printf("\n"); | 2386 } |
2387 | 2387 |
2388 { | 2388 |
2389 Json::Value v = Json::objectValue; | 2389 |
2390 v["PatientID"] = "Hello"; | 2390 TEST(ParsedDicomFile, DicomPath) |
2391 { | |
2392 Json::Value v = Json::objectValue; | |
2393 v["PatientName"] = "Hello"; | |
2394 v["ReferencedSOPClassUID"] = "1.2.840.10008.5.1.4.1.1.4"; | |
2395 | |
2396 { | |
2397 Json::Value a = Json::arrayValue; | |
2391 | 2398 |
2392 { | 2399 { |
2393 Json::Value a = Json::arrayValue; | 2400 Json::Value item = Json::objectValue; |
2401 item["ReferencedSOPClassUID"] = "1.2.840.10008.5.1.4.1.1.4"; | |
2402 item["ReferencedSOPInstanceUID"] = "1.2.840.113619.2.176.2025.1499492.7040.1171286241.719"; | |
2403 a.append(item); | |
2404 } | |
2405 | |
2406 { | |
2407 Json::Value item = Json::objectValue; | |
2408 item["ReferencedSOPClassUID"] = "1.2.840.10008.5.1.4.1.1.4"; // ReferencedSOPClassUID | |
2409 item["ReferencedSOPInstanceUID"] = "1.2.840.113619.2.176.2025.1499492.7040.1171286241.726"; | |
2410 a.append(item); | |
2411 } | |
2412 | |
2413 v["ReferencedImageSequence"] = a; | |
2414 } | |
2415 | |
2416 { | |
2417 Json::Value a = Json::arrayValue; | |
2418 | |
2419 { | |
2420 Json::Value item = Json::objectValue; | |
2421 item["StudyInstanceUID"] = "1.2.840.113704.1.111.7016.1342451220.40"; | |
2394 | 2422 |
2395 { | 2423 { |
2396 Json::Value item = Json::objectValue; | 2424 Json::Value b = Json::arrayValue; |
2397 item["ReferencedSOPClassUID"] = "1.2.840.10008.5.1.4.1.1.4"; | 2425 |
2398 item["ReferencedSOPInstanceUID"] = "1.2.840.113619.2.176.2025.1499492.7040.1171286241.719"; | 2426 { |
2399 a.append(item); | 2427 Json::Value c = Json::objectValue; |
2428 c["CodeValue"] = "122403"; | |
2429 c["0010,0010"] = "WORLD"; // Patient name | |
2430 b.append(c); | |
2431 } | |
2432 | |
2433 item["PurposeOfReferenceCodeSequence"] = b; | |
2400 } | 2434 } |
2435 | |
2436 a.append(item); | |
2437 } | |
2401 | 2438 |
2402 { | 2439 v["RelatedSeriesSequence"] = a; |
2403 Json::Value item = Json::objectValue; | 2440 } |
2404 item["ReferencedSOPClassUID"] = "1.2.840.10008.5.1.4.1.1.4"; | 2441 |
2405 item["ReferencedSOPInstanceUID"] = "1.2.840.113619.2.176.2025.1499492.7040.1171286241.726"; | 2442 static const char* CODE_VALUE = "0008,0100"; |
2406 a.append(item); | 2443 static const char* PATIENT_ID = "0010,0020"; |
2407 } | 2444 static const char* PATIENT_NAME = "0010,0010"; |
2445 static const char* PURPOSE_CODE_SEQ = "0040,a170"; | |
2446 static const char* REF_IM_SEQ = "0008,1140"; | |
2447 static const char* REF_SOP_CLASS = "0008,1150"; | |
2448 static const char* REF_SOP_INSTANCE = "0008,1155"; | |
2449 static const char* REL_SERIES_SEQ = "0008,1250"; | |
2450 | |
2451 { | |
2452 std::unique_ptr<ParsedDicomFile> dicom(ParsedDicomFile::CreateFromJson(v, DicomFromJsonFlags_None, "")); | |
2453 | |
2454 Json::Value vv; | |
2455 dicom->DatasetToJson(vv, DicomToJsonFormat_Short, DicomToJsonFlags_None, 0); | |
2456 | |
2457 ASSERT_EQ(5u, vv.size()); | |
2458 ASSERT_TRUE(vv.isMember(PATIENT_NAME)); | |
2459 ASSERT_EQ(2u, vv[REF_IM_SEQ].size()); | |
2460 ASSERT_EQ(1u, vv[REL_SERIES_SEQ].size()); | |
2461 ASSERT_EQ(2u, vv[REF_IM_SEQ][0].size()); | |
2462 ASSERT_EQ(2u, vv[REL_SERIES_SEQ][0].size()); | |
2463 ASSERT_EQ(1u, vv[REL_SERIES_SEQ][0][PURPOSE_CODE_SEQ].size()); | |
2464 | |
2465 ASSERT_TRUE(vv[REF_IM_SEQ][0].isMember(REF_SOP_CLASS)); | |
2466 ASSERT_TRUE(vv[REF_IM_SEQ][1].isMember(REF_SOP_CLASS)); | |
2467 ASSERT_TRUE(vv[REL_SERIES_SEQ][0][PURPOSE_CODE_SEQ][0].isMember(CODE_VALUE)); | |
2468 } | |
2469 | |
2470 { | |
2471 std::unique_ptr<ParsedDicomFile> dicom(ParsedDicomFile::CreateFromJson(v, DicomFromJsonFlags_None, "")); | |
2472 | |
2473 dicom->RemovePath(DicomPath::Parse("ReferencedImageSequence[*].ReferencedSOPClassUID")); | |
2474 | |
2475 Json::Value vv; | |
2476 dicom->DatasetToJson(vv, DicomToJsonFormat_Short, DicomToJsonFlags_None, 0); | |
2477 | |
2478 ASSERT_EQ(2u, vv[REF_IM_SEQ].size()); | |
2479 ASSERT_EQ(1u, vv[REF_IM_SEQ][0].size()); | |
2480 ASSERT_EQ(1u, vv[REF_IM_SEQ][1].size()); | |
2481 ASSERT_FALSE(vv[REF_IM_SEQ][0].isMember(REF_SOP_CLASS)); | |
2482 ASSERT_FALSE(vv[REF_IM_SEQ][1].isMember(REF_SOP_CLASS)); | |
2483 } | |
2484 | |
2485 { | |
2486 std::unique_ptr<ParsedDicomFile> dicom(ParsedDicomFile::CreateFromJson(v, DicomFromJsonFlags_None, "")); | |
2487 | |
2488 dicom->RemovePath(DicomPath::Parse("ReferencedImageSequence[0].ReferencedSOPClassUID")); | |
2489 | |
2490 Json::Value vv; | |
2491 dicom->DatasetToJson(vv, DicomToJsonFormat_Short, DicomToJsonFlags_None, 0); | |
2492 | |
2493 ASSERT_EQ(2u, vv[REF_IM_SEQ].size()); | |
2494 ASSERT_EQ(1u, vv[REF_IM_SEQ][0].size()); | |
2495 ASSERT_EQ(2u, vv[REF_IM_SEQ][1].size()); | |
2496 ASSERT_FALSE(vv[REF_IM_SEQ][0].isMember(REF_SOP_CLASS)); | |
2497 ASSERT_TRUE(vv[REF_IM_SEQ][1].isMember(REF_SOP_CLASS)); | |
2498 } | |
2499 | |
2500 { | |
2501 std::unique_ptr<ParsedDicomFile> dicom(ParsedDicomFile::CreateFromJson(v, DicomFromJsonFlags_None, "")); | |
2502 | |
2503 dicom->RemovePath(DicomPath::Parse("ReferencedImageSequence[1].ReferencedSOPClassUID")); | |
2504 | |
2505 Json::Value vv; | |
2506 dicom->DatasetToJson(vv, DicomToJsonFormat_Short, DicomToJsonFlags_None, 0); | |
2507 | |
2508 ASSERT_EQ(2u, vv[REF_IM_SEQ].size()); | |
2509 ASSERT_EQ(2u, vv[REF_IM_SEQ][0].size()); | |
2510 ASSERT_EQ(1u, vv[REF_IM_SEQ][1].size()); | |
2511 ASSERT_TRUE(vv[REF_IM_SEQ][0].isMember(REF_SOP_CLASS)); | |
2512 ASSERT_FALSE(vv[REF_IM_SEQ][1].isMember(REF_SOP_CLASS)); | |
2513 } | |
2514 | |
2515 { | |
2516 std::unique_ptr<ParsedDicomFile> dicom(ParsedDicomFile::CreateFromJson(v, DicomFromJsonFlags_None, "")); | |
2517 | |
2518 dicom->RemovePath(DicomPath::Parse("RelatedSeriesSequence[0].PurposeOfReferenceCodeSequence[0].CodeValue")); | |
2519 | |
2520 Json::Value vv; | |
2521 dicom->DatasetToJson(vv, DicomToJsonFormat_Short, DicomToJsonFlags_None, 0); | |
2522 | |
2523 ASSERT_EQ("WORLD", vv[REL_SERIES_SEQ][0][PURPOSE_CODE_SEQ][0][PATIENT_NAME].asString()); | |
2524 ASSERT_FALSE(vv[REL_SERIES_SEQ][0][PURPOSE_CODE_SEQ][0].isMember(CODE_VALUE)); | |
2525 } | |
2526 | |
2527 { | |
2528 std::unique_ptr<ParsedDicomFile> dicom(ParsedDicomFile::CreateFromJson(v, DicomFromJsonFlags_None, "")); | |
2529 | |
2530 dicom->RemovePath(DicomPath::Parse("RelatedSeriesSequence[0].PurposeOfReferenceCodeSequence")); | |
2531 | |
2532 Json::Value vv; | |
2533 dicom->DatasetToJson(vv, DicomToJsonFormat_Short, DicomToJsonFlags_None, 0); | |
2408 | 2534 |
2409 v["ReferencedImageSequence"] = a; | 2535 ASSERT_EQ(1u, vv[REL_SERIES_SEQ][0].size()); |
2410 } | 2536 ASSERT_FALSE(vv[REL_SERIES_SEQ][0].isMember(PURPOSE_CODE_SEQ)); |
2537 } | |
2411 | 2538 |
2412 { | 2539 { |
2413 Json::Value a = Json::arrayValue; | 2540 std::unique_ptr<ParsedDicomFile> dicom(ParsedDicomFile::CreateFromJson(v, DicomFromJsonFlags_None, "")); |
2414 | 2541 |
2415 { | 2542 dicom->RemovePath(DicomPath::Parse("RelatedSeriesSequence")); |
2416 Json::Value item = Json::objectValue; | 2543 |
2417 item["StudyInstanceUID"] = "1.2.840.113704.1.111.7016.1342451220.40"; | 2544 Json::Value vv; |
2418 | 2545 dicom->DatasetToJson(vv, DicomToJsonFormat_Short, DicomToJsonFlags_None, 0); |
2419 { | |
2420 Json::Value b = Json::arrayValue; | |
2421 | |
2422 { | |
2423 Json::Value c = Json::objectValue; | |
2424 c["CodeValue"] = "122403"; | |
2425 b.append(c); | |
2426 } | |
2427 | |
2428 item["PurposeOfReferenceCodeSequence"] = b; | |
2429 } | |
2430 | |
2431 a.append(item); | |
2432 } | |
2433 | 2546 |
2434 v["RelatedSeriesSequence"] = a; | 2547 ASSERT_FALSE(vv.isMember(REL_SERIES_SEQ)); |
2435 } | 2548 } |
2436 | 2549 |
2437 std::unique_ptr<DcmDataset> d(FromDcmtkBridge::FromJson(v, false /* generate UID */, false, Encoding_Latin1, "")); | 2550 { |
2438 | 2551 std::unique_ptr<ParsedDicomFile> dicom(ParsedDicomFile::CreateFromJson(v, DicomFromJsonFlags_None, "")); |
2439 static const DicomTag DICOM_TAG_REFERENCED_SOP_CLASS_UID(0x0008, 0x1150); | 2552 |
2440 static const DicomTag DICOM_TAG_REFERENCED_IMAGE_SEQUENCE(0x0008, 0x1140); | 2553 dicom->RemovePath(DicomPath(DICOM_TAG_PATIENT_NAME)); |
2441 | 2554 dicom->ReplacePath(DicomPath::Parse("ReferencedImageSequence[*].ReferencedSOPClassUID"), |
2442 DicomPath path(DICOM_TAG_REFERENCED_SOP_CLASS_UID); | 2555 "Hello1", false, DicomReplaceMode_ThrowIfAbsent, ""); |
2443 path.AddIndexedTagToPrefix(DICOM_TAG_REFERENCED_IMAGE_SEQUENCE, 2); | 2556 ASSERT_THROW(dicom->ReplacePath(DicomPath::Parse("ReferencedImageSequence[*].PatientID"), |
2444 //path.AddUniversalTagToPrefix(DICOM_TAG_REFERENCED_IMAGE_SEQUENCE); | 2557 "Hello2", false, DicomReplaceMode_ThrowIfAbsent, ""), OrthancException); |
2445 | 2558 dicom->ReplacePath(DicomPath::Parse("ReferencedImageSequence[*].PatientID"), |
2446 //DicomPath path(DicomTag(0x0008, 0x0100)); | 2559 "Hello3", false, DicomReplaceMode_InsertIfAbsent, ""); |
2447 //path.AddIndexedTagToPrefix(DicomTag(0x0008, 0x1250), 0); | 2560 dicom->ReplacePath(DicomPath::Parse("ReferencedImageSequence[*].PatientName"), |
2448 //path.AddIndexedTagToPrefix(DicomTag(0x0040, 0xa170), 1); | 2561 "Hello4", false, DicomReplaceMode_IgnoreIfAbsent, ""); |
2449 | 2562 dicom->ReplacePath(DicomPath::Parse("RelatedSeriesSequence[*].PurposeOfReferenceCodeSequence[*].CodeValue"), |
2450 //FromDcmtkBridge::RemovePath(*d, DicomPath::Parse("ReferencedImageSequence[*].ReferencedSOPClassUID")); | 2563 "Hello5", false, DicomReplaceMode_ThrowIfAbsent, ""); |
2451 //FromDcmtkBridge::RemovePath(*d, DicomPath::Parse("ReferencedImageSequence[0].ReferencedSOPClassUID")); | 2564 |
2452 //FromDcmtkBridge::RemovePath(*d, DicomPath::Parse("ReferencedImageSequence[1].ReferencedSOPClassUID")); | |
2453 FromDcmtkBridge::RemovePath(*d, DicomPath::Parse("RelatedSeriesSequence[0].PurposeOfReferenceCodeSequence[0].CodeValue")); | |
2454 //FromDcmtkBridge::RemovePath(*d, DicomPath::Parse("RelatedSeriesSequence[0].PurposeOfReferenceCodeSequence")); | |
2455 //FromDcmtkBridge::RemovePath(*d, DicomPath::Parse("RelatedSeriesSequence")); | |
2456 | |
2457 { | |
2458 Json::Value v = "Hello"; | |
2459 std::unique_ptr<DcmElement> e(FromDcmtkBridge::FromJson(DicomTag(0x0008, 0x0100), v, false, Encoding_Latin1, "")); | |
2460 FromDcmtkBridge::ReplacePath(*d, DicomPath::Parse("RelatedSeriesSequence[0].PurposeOfReferenceCodeSequence[0].CodeValue"), *e); | |
2461 } | |
2462 | |
2463 { | |
2464 Json::Value v = "Hello"; | |
2465 std::unique_ptr<DcmElement> e(FromDcmtkBridge::FromJson(DicomTag(0x0008, 0x1150), v, false, Encoding_Latin1, "")); | |
2466 FromDcmtkBridge::ReplacePath(*d, DicomPath::Parse("ReferencedImageSequence[*].ReferencedSOPClassUID"), *e); | |
2467 } | |
2468 | |
2469 Json::Value vv; | 2565 Json::Value vv; |
2470 std::set<DicomTag> ignoreTagLength; | 2566 dicom->DatasetToJson(vv, DicomToJsonFormat_Short, DicomToJsonFlags_None, 0); |
2471 FromDcmtkBridge::ExtractDicomAsJson(vv, *d, DicomToJsonFormat_Short, DicomToJsonFlags_None, 0, ignoreTagLength); | 2567 |
2472 std::cout << vv.toStyledString(); | 2568 ASSERT_EQ(4u, vv.size()); |
2569 ASSERT_FALSE(vv.isMember(PATIENT_NAME)); | |
2570 ASSERT_EQ("Hello1", vv[REF_IM_SEQ][0][REF_SOP_CLASS].asString()); | |
2571 ASSERT_EQ("Hello3", vv[REF_IM_SEQ][0][PATIENT_ID].asString()); | |
2572 ASSERT_EQ("Hello1", vv[REF_IM_SEQ][1][REF_SOP_CLASS].asString()); | |
2573 ASSERT_EQ("Hello3", vv[REF_IM_SEQ][1][PATIENT_ID].asString()); | |
2574 ASSERT_EQ("Hello5", vv[REL_SERIES_SEQ][0][PURPOSE_CODE_SEQ][0][CODE_VALUE].asString()); | |
2575 } | |
2576 | |
2577 { | |
2578 std::unique_ptr<ParsedDicomFile> dicom(ParsedDicomFile::CreateFromJson(v, DicomFromJsonFlags_None, "")); | |
2579 | |
2580 dicom->ReplacePath(DicomPath::Parse("ReferencedImageSequence[1].ReferencedSOPClassUID"), | |
2581 "Hello1", false, DicomReplaceMode_ThrowIfAbsent, ""); | |
2582 dicom->ReplacePath(DicomPath::Parse("RelatedSeriesSequence[0].PurposeOfReferenceCodeSequence[0].CodeValue"), | |
2583 "Hello2", false, DicomReplaceMode_ThrowIfAbsent, ""); | |
2584 | |
2585 Json::Value vv; | |
2586 dicom->DatasetToJson(vv, DicomToJsonFormat_Short, DicomToJsonFlags_None, 0); | |
2587 | |
2588 ASSERT_EQ("1.2.840.10008.5.1.4.1.1.4", vv[REF_IM_SEQ][0][REF_SOP_CLASS].asString()); | |
2589 ASSERT_EQ("Hello1", vv[REF_IM_SEQ][1][REF_SOP_CLASS].asString()); | |
2590 ASSERT_EQ("Hello2", vv[REL_SERIES_SEQ][0][PURPOSE_CODE_SEQ][0][CODE_VALUE].asString()); | |
2591 } | |
2592 | |
2593 { | |
2594 std::unique_ptr<ParsedDicomFile> dicom(ParsedDicomFile::CreateFromJson(v, DicomFromJsonFlags_None, "")); | |
2595 | |
2596 dicom->ClearPath(DicomPath::Parse("ReferencedImageSequence[1].ReferencedSOPClassUID"), true); | |
2597 dicom->ClearPath(DicomPath::Parse("RelatedSeriesSequence[0].PurposeOfReferenceCodeSequence[0].CodeValue"), true); | |
2598 dicom->ClearPath(DicomPath::Parse("ReferencedImageSequence[0].PatientID"), false); | |
2599 dicom->ClearPath(DicomPath::Parse("ReferencedImageSequence[0].PatientName"), true); | |
2600 | |
2601 Json::Value vv; | |
2602 dicom->DatasetToJson(vv, DicomToJsonFormat_Short, DicomToJsonFlags_None, 0); | |
2603 | |
2604 ASSERT_EQ(3u, vv[REF_IM_SEQ][0].size()); | |
2605 ASSERT_EQ(2u, vv[REF_IM_SEQ][1].size()); | |
2606 | |
2607 ASSERT_EQ("1.2.840.10008.5.1.4.1.1.4", vv[REF_IM_SEQ][0][REF_SOP_CLASS].asString()); | |
2608 ASSERT_EQ("1.2.840.113619.2.176.2025.1499492.7040.1171286241.719", vv[REF_IM_SEQ][0][REF_SOP_INSTANCE].asString()); | |
2609 ASSERT_EQ("", vv[REF_IM_SEQ][0][PATIENT_ID].asString()); | |
2610 | |
2611 ASSERT_EQ("", vv[REF_IM_SEQ][1][REF_SOP_CLASS].asString()); | |
2612 ASSERT_EQ("1.2.840.113619.2.176.2025.1499492.7040.1171286241.726", vv[REF_IM_SEQ][1][REF_SOP_INSTANCE].asString()); | |
2613 | |
2614 ASSERT_EQ("", vv[REL_SERIES_SEQ][0][PURPOSE_CODE_SEQ][0][CODE_VALUE].asString()); | |
2473 } | 2615 } |
2474 } | 2616 } |
2475 | 2617 |
2476 | 2618 |
2477 | 2619 |