Ejemplo n.º 1
0
        public void GivenDicomDatasetWithImplicitVR_WhenValidating_ThenItShouldThrowNotAcceptableException(DicomTransferSyntax transferSyntax)
        {
            var dicomDataset = Samples
                               .CreateRandomInstanceDataset(dicomTransferSyntax: transferSyntax)
                               .NotValidated();

            Assert.Throws <NotAcceptableException>(() => ImplicitValueRepresentationValidator.Validate(dicomDataset));
        }
Ejemplo n.º 2
0
        public void GivenDicomDatasetWithNonImplicitVR_WhenValidating_ThenItShouldSucceed(DicomTransferSyntax transferSyntax)
        {
            var dicomDataset = Samples
                               .CreateRandomInstanceDataset(dicomTransferSyntax: transferSyntax)
                               .NotValidated();

            ImplicitValueRepresentationValidator.Validate(dicomDataset);
        }
        private static void ValidateCoreTags(DicomDataset dicomDataset, string requiredStudyInstanceUid)
        {
            // Validate for Implicit VR
            ImplicitValueRepresentationValidator.Validate(dicomDataset);

            // Ensure required tags are present.
            EnsureRequiredTagIsPresent(DicomTag.PatientID);
            EnsureRequiredTagIsPresent(DicomTag.SOPClassUID);

            // The format of the identifiers will be validated by fo-dicom.
            string studyInstanceUid  = EnsureRequiredTagIsPresent(DicomTag.StudyInstanceUID);
            string seriesInstanceUid = EnsureRequiredTagIsPresent(DicomTag.SeriesInstanceUID);
            string sopInstanceUid    = EnsureRequiredTagIsPresent(DicomTag.SOPInstanceUID);

            // Ensure the StudyInstanceUid != SeriesInstanceUid != sopInstanceUid
            if (studyInstanceUid == seriesInstanceUid ||
                studyInstanceUid == sopInstanceUid ||
                seriesInstanceUid == sopInstanceUid)
            {
                throw new DatasetValidationException(
                          FailureReasonCodes.ValidationFailure,
                          DicomCoreResource.DuplicatedUidsNotAllowed);
            }

            // If the requestedStudyInstanceUid is specified, then the StudyInstanceUid must match.
            if (requiredStudyInstanceUid != null &&
                !studyInstanceUid.Equals(requiredStudyInstanceUid, StringComparison.OrdinalIgnoreCase))
            {
                throw new DatasetValidationException(
                          FailureReasonCodes.MismatchStudyInstanceUid,
                          string.Format(
                              CultureInfo.InvariantCulture,
                              DicomCoreResource.MismatchStudyInstanceUid,
                              studyInstanceUid,
                              requiredStudyInstanceUid));
            }

            string EnsureRequiredTagIsPresent(DicomTag dicomTag)
            {
                if (dicomDataset.TryGetSingleValue(dicomTag, out string value))
                {
                    return(value);
                }

                throw new DatasetValidationException(
                          FailureReasonCodes.ValidationFailure,
                          string.Format(
                              CultureInfo.InvariantCulture,
                              DicomCoreResource.MissingRequiredTag,
                              dicomTag.ToString()));
            }
        }