Exemple #1
0
        private CQLQueryResults getAnnotationOfAnnotationCQLInfo()
        {
            object[]    obj      = null;
            Attribute   attrTemp = null;
            Association assoTemp = null;
            var         proxy    = new AIM3DataServicePortTypeClient();

            proxy.Endpoint.Address = new System.ServiceModel.EndpointAddress(AIMDataServiceSettings.Default.AIMDataServiceUrl);
            var associationList = new ArrayList();

            obj = null;
            Association aecAssociation = null;

            foreach (var queryData in _queryParameters.AecQueryParameters)
            {
                var results = new ArrayList();
                if (!queryData.CodeValue.IsEmpty)
                {
                    results.Add(CreateAttribute("codeValue", queryData.CodeValue));
                }
                if (!queryData.CodeMeaning.IsEmpty)
                {
                    results.Add(CreateAttribute("codeMeaning", queryData.CodeMeaning));
                }
                if (!queryData.CodingSchemeDesignator.IsEmpty)
                {
                    results.Add(CreateAttribute("codingSchemeDesignator", queryData.CodingSchemeDesignator));
                }
                if (!queryData.CodingSchemeVersion.IsEmpty)
                {
                    results.Add(CreateAttribute("codingSchemeVersion", queryData.CodingSchemeVersion));
                }
                if (!queryData.Confidence.IsEmpty)
                {
                    results.Add(CreateAttribute("annotatorConfidence", queryData.Confidence));
                }
                if (results.Count > 0)
                {
                    obj = (object[])results.ToArray(typeof(object));
                }
                if (obj != null && obj.Length > 0)
                {
                    Group grpAnnatomicEntityCharacteristic = null;
                    if (obj.Length > 1)
                    {
                        grpAnnatomicEntityCharacteristic = CreateQRAttrAssoGroup.createGroup(obj, LogicalOperator.AND);
                        obj = null;
                    }
                    else
                    {
                        attrTemp = obj[0] as Attribute;
                    }

                    aecAssociation = CreateQRAttrAssoGroup.createAssociation("edu.northwestern.radiology.aim.AnatomicEntityCharacteristic", "anatomicEntityCharacteristicCollection", grpAnnatomicEntityCharacteristic, attrTemp, null);
                }
            }

            obj = null;
            if (aecAssociation != null && _queryParameters.AeQueryParameters.Count == 0)
            {
                var queryData = new AimAnatomicEntityQueryData();
                queryData.CodeMeaning = new QueryData(String.Empty, QueryPredicate.LIKE);
                _queryParameters.AeQueryParameters.Add(queryData);
            }
            foreach (var queryData in _queryParameters.AeQueryParameters)
            {
                var results = new ArrayList();
                if (!queryData.CodeValue.IsEmpty)
                {
                    results.Add(CreateAttribute("codeValue", queryData.CodeValue));
                }
                //if (!queryData.CodeMeaning.IsEmpty)
                results.Add(CreateAttribute("codeMeaning", queryData.CodeMeaning));
                if (!queryData.CodingSchemeDesignator.IsEmpty)
                {
                    results.Add(CreateAttribute("codingSchemeDesignator", queryData.CodingSchemeDesignator));
                }
                if (!queryData.CodingSchemeVersion.IsEmpty)
                {
                    results.Add(CreateAttribute("codingSchemeVersion", queryData.CodingSchemeVersion));
                }
                if (!queryData.Confidence.IsEmpty)
                {
                    results.Add(CreateAttribute("annotatorConfidence", queryData.Confidence));
                }
                if (aecAssociation != null)
                {
                    results.Add(aecAssociation);
                }
                if (results.Count > 0)
                {
                    obj = (object[])results.ToArray(typeof(object));
                }
                if (obj != null && obj.Length > 0)
                {
                    Group grpAnnatomicEntity = null;
                    if (obj.Length > 1)
                    {
                        grpAnnatomicEntity = CreateQRAttrAssoGroup.createGroup(obj, LogicalOperator.AND);
                        obj = null;
                    }
                    else
                    {
                        attrTemp = obj[0] as Attribute;
                    }
                    associationList.Add(CreateQRAttrAssoGroup.createAssociation("edu.northwestern.radiology.aim.AnatomicEntity", "anatomicEntityCollection", grpAnnatomicEntity, attrTemp, null));
                }
            }

            obj = null;
            Association iocAssociation = null;

            foreach (var queryData in _queryParameters.ImcQueryParameters)
            {
                var results = new ArrayList();
                if (!queryData.CodeValue.IsEmpty)
                {
                    results.Add(CreateAttribute("codeValue", queryData.CodeValue));
                }
                if (!queryData.CodeMeaning.IsEmpty)
                {
                    results.Add(CreateAttribute("codeMeaning", queryData.CodeMeaning));
                }
                if (!queryData.CodingSchemeDesignator.IsEmpty)
                {
                    results.Add(CreateAttribute("codingSchemeDesignator", queryData.CodingSchemeDesignator));
                }
                if (!queryData.CodingSchemeVersion.IsEmpty)
                {
                    results.Add(CreateAttribute("codingSchemeVersion", queryData.CodingSchemeVersion));
                }
                if (!queryData.Confidence.IsEmpty)
                {
                    results.Add(CreateAttribute("annotatorConfidence", queryData.Confidence));
                }
                if (!queryData.Comment.IsEmpty)
                {
                    results.Add(CreateAttribute("comment", queryData.Comment));
                }
                if (results.Count > 0)
                {
                    obj = (object[])results.ToArray(typeof(object));
                }
                if (obj != null && obj.Length > 0)
                {
                    Group grpImagingObservationCharacteristic = null;
                    if (obj.Length > 1)
                    {
                        grpImagingObservationCharacteristic = CreateQRAttrAssoGroup.createGroup(obj, LogicalOperator.AND);
                        obj = null;
                    }
                    else
                    {
                        attrTemp = obj[0] as Attribute;
                    }

                    iocAssociation = CreateQRAttrAssoGroup.createAssociation("edu.northwestern.radiology.aim.ImagingObservationCharacteristic", "imagingObservationCharacteristicCollection", grpImagingObservationCharacteristic, attrTemp, null);
                }
            }

            obj = null;
            if (iocAssociation != null && _queryParameters.ImQueryParameters.Count == 0)
            {
                var queryData = new AimImagingObservationQueryData();
                queryData.CodeMeaning = new QueryData(String.Empty, QueryPredicate.LIKE);
                _queryParameters.ImQueryParameters.Add(queryData);
            }
            foreach (var queryData in _queryParameters.ImQueryParameters)
            {
                var results = new ArrayList();
                if (!queryData.CodeValue.IsEmpty)
                {
                    results.Add(CreateAttribute("codeValue", queryData.CodeValue));
                }
                //if (!queryData.CodeMeaning.IsEmpty)
                results.Add(CreateAttribute("codeMeaning", queryData.CodeMeaning));
                if (!queryData.CodingSchemeDesignator.IsEmpty)
                {
                    results.Add(CreateAttribute("codingSchemeDesignator", queryData.CodingSchemeDesignator));
                }
                if (!queryData.CodingSchemeVersion.IsEmpty)
                {
                    results.Add(CreateAttribute("codingSchemeVersion", queryData.CodingSchemeVersion));
                }
                if (!queryData.Comment.IsEmpty)
                {
                    results.Add(CreateAttribute("comment", queryData.Comment));
                }
                if (!queryData.Confidence.IsEmpty)
                {
                    results.Add(CreateAttribute("annotatorConfidence", queryData.Confidence));
                }
                if (iocAssociation != null)
                {
                    results.Add(iocAssociation);
                }
                if (results.Count > 0)
                {
                    obj = (object[])results.ToArray(typeof(object));
                }
                if (obj != null && obj.Length > 0)
                {
                    attrTemp = null;
                    Group grpImagingObservation = null;
                    if (obj.Length > 1)
                    {
                        grpImagingObservation = CreateQRAttrAssoGroup.createGroup(obj, LogicalOperator.AND);
                        obj = null;
                    }
                    else
                    {
                        attrTemp = obj[0] as Attribute;
                    }
                    associationList.Add(CreateQRAttrAssoGroup.createAssociation("edu.northwestern.radiology.aim.ImagingObservation", "imagingObservationCollection", grpImagingObservation, attrTemp, null));
                }
            }
            obj = null;
            foreach (var queryData in _queryParameters.UserParameters)
            {
                var results = new ArrayList();
                if (!queryData.IsEmpty)
                {
                    results.Add(CreateAttribute("loginName", queryData));
                    results.Add(CreateAttribute("name", queryData));
                }
                if (results.Count > 0)
                {
                    obj = (object[])results.ToArray(typeof(Attribute));
                }
                if (obj != null && obj.Length > 0)
                {
                    Group grpAnnatomicEntityCharacteristic = null;
                    if (obj.Length > 1)
                    {
                        grpAnnatomicEntityCharacteristic = CreateQRAttrAssoGroup.createGroup(obj, LogicalOperator.OR);
                        obj = null;
                    }
                    else
                    {
                        attrTemp = obj[0] as Attribute;
                    }
                    associationList.Add(CreateQRAttrAssoGroup.createAssociation("edu.northwestern.radiology.aim.User", "user", grpAnnatomicEntityCharacteristic, attrTemp, null));
                }
            }
            obj = null;
            Group grpAnnotationOfAnnotation = null;

            if (associationList.Count > 0)
            {
                obj = (object[])associationList.ToArray(typeof(Association));
            }
            if (obj != null && obj.Length > 0)
            {
                assoTemp = null;
                if (obj.Length > 1)
                {
                    grpAnnotationOfAnnotation = CreateQRAttrAssoGroup.createGroup(obj, LogicalOperator.AND);
                }
                else
                {
                    assoTemp = obj[0] as Association;
                }
            }
            var arg = CreateQRAttrAssoGroup.createQueryRequestCqlQuery("edu.northwestern.radiology.aim.AnnotationOfAnnotation", null, null, assoTemp, grpAnnotationOfAnnotation);
            var doc = XMLSerializingDeserializing.Serialize(arg);

            Console.WriteLine(doc.InnerXml);
            CQLQueryResults result;

            try
            {
                result = proxy.query(arg);
            }
            catch (System.Net.WebException ex)
            {
                Console.WriteLine(ex.Message);
                result = null;
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
                result = null;
                throw new GridServicerException("Error querying AIM data service", e);
            }
            return(result);
        }
Exemple #2
0
        public void PerformSearch()
        {
            _criteriaComponent.Enabled = false;

            AIMQueryParameters aimQueryParameters = new AIMQueryParameters();

            if (!string.IsNullOrEmpty(_criteriaComponent.StudyInstanceUid))
            {
                aimQueryParameters.StudyInstanceUidParameters.Add(new QueryData(_criteriaComponent.StudyInstanceUid.Trim(), QueryPredicate.LIKE));
            }
            if (_criteriaComponent.AnnotationOfAnnotation)
            {
                aimQueryParameters.AnnotationType = AnnotationType.AnnotationOfAnnotation;
            }
            else if (_criteriaComponent.ImageAnnotation)
            {
                aimQueryParameters.AnnotationType = AnnotationType.ImageAnnotation;
            }
            else
            {
                Platform.Log(LogLevel.Error, "Type of annotation cannot be retrieved from the user selection.");
            }
            foreach (AnatomicEntity anatomicEntity in _criteriaComponent.AnatomicEntities)
            {
                AimAnatomicEntityQueryData ae = new AimAnatomicEntityQueryData();
                ae.CodeValue              = new QueryData(anatomicEntity.CodeValue, QueryPredicate.LIKE);
                ae.CodeMeaning            = new QueryData(anatomicEntity.CodeMeaning, QueryPredicate.LIKE);
                ae.CodingSchemeDesignator = new QueryData(anatomicEntity.CodingSchemeDesignator, QueryPredicate.LIKE);
                aimQueryParameters.AeQueryParameters.Add(ae);
            }
            foreach (AnatomicEntityCharacteristic anatomicEntityCharacteristic in _criteriaComponent.AnatomicEntityCharacteristics)
            {
                AimAnatomicEntityCharacteristicQueryData aec = new AimAnatomicEntityCharacteristicQueryData();
                aec.CodeValue              = new QueryData(anatomicEntityCharacteristic.CodeValue, QueryPredicate.LIKE);
                aec.CodeMeaning            = new QueryData(anatomicEntityCharacteristic.CodeMeaning, QueryPredicate.LIKE);
                aec.CodingSchemeDesignator = new QueryData(anatomicEntityCharacteristic.CodingSchemeDesignator, QueryPredicate.LIKE);
                aimQueryParameters.AecQueryParameters.Add(aec);
            }
            foreach (ImagingObservation imagingObservation in _criteriaComponent.ImagingObservations)
            {
                AimImagingObservationQueryData io = new AimImagingObservationQueryData();
                io.CodeValue              = new QueryData(imagingObservation.CodeValue, QueryPredicate.LIKE);
                io.CodeMeaning            = new QueryData(imagingObservation.CodeMeaning, QueryPredicate.LIKE);
                io.CodingSchemeDesignator = new QueryData(imagingObservation.CodingSchemeDesignator, QueryPredicate.LIKE);
                aimQueryParameters.ImQueryParameters.Add(io);
            }
            foreach (ImagingObservationCharacteristic imagingObservation in _criteriaComponent.ImagingObservationCharacteristics)
            {
                AimImagingObservationCharacteristicQueryData ioc = new AimImagingObservationCharacteristicQueryData();
                ioc.CodeValue              = new QueryData(imagingObservation.CodeValue, QueryPredicate.LIKE);
                ioc.CodeMeaning            = new QueryData(imagingObservation.CodeMeaning, QueryPredicate.LIKE);
                ioc.CodingSchemeDesignator = new QueryData(imagingObservation.CodingSchemeDesignator, QueryPredicate.LIKE);
                aimQueryParameters.ImcQueryParameters.Add(ioc);
            }
            if (!string.IsNullOrEmpty(_criteriaComponent.User))
            {
                aimQueryParameters.UserParameters.Add(new QueryData(_criteriaComponent.User.Trim(), QueryPredicate.LIKE));
            }

            AIMSearchCommand searchCommand = new AIMSearchCommand(aimQueryParameters);

            base.PerformSearch(searchCommand);
        }