Ejemplo n.º 1
0
        private void UpdateDependentParameterName(List <StoredQueryParameter> lstStoredQueryParameterRequest, List <StoredQueryParameter> lstStoredQueryParameterDB)
        {
            List <StoredQueryParameter> lstParamWithDependencyDB = null;
            StoredQueryParameter        parameterMatchingRequest = null;

            lstParamWithDependencyDB = GetAllParametersWithDependency(lstStoredQueryParameterDB);

            if ((lstParamWithDependencyDB != null) && (lstParamWithDependencyDB.Count > 0))
            {
                for (int count = 0; count < lstParamWithDependencyDB.Count; count++)
                {
                    parameterMatchingRequest = lstStoredQueryParameterRequest.Find(
                        delegate(StoredQueryParameter param)
                    {
                        if (param.ParameterName == lstParamWithDependencyDB[count].ParameterName)
                        {
                            return(true);
                        }

                        return(false);
                    }
                        );

                    if (parameterMatchingRequest != null)
                    {
                        parameterMatchingRequest.DependentParameterName = lstParamWithDependencyDB[count].DependentParameterName;
                    }
                }
            }
        }
Ejemplo n.º 2
0
        protected virtual string GetParameterValue(List <StoredQueryParameter> lstStoredQueryParameter, string parameterName)
        {
            string paramValue = null;
            StoredQueryParameter objQueryParameter = null;

            if (lstStoredQueryParameter != null)
            {
                objQueryParameter = lstStoredQueryParameter.Find(
                    delegate(StoredQueryParameter objStoredQueryParameter)
                {
                    if (objStoredQueryParameter.ParameterName == parameterName)
                    {
                        return(true);
                    }

                    return(false);
                }
                    );

                if (objQueryParameter != null)
                {
                    paramValue = objQueryParameter.ParameterValue;
                }
            }

            return(paramValue);
        }
Ejemplo n.º 3
0
        private bool IsValidDependentParameterValueCount(List <StoredQueryParameter> lstStoredQueryParameterRequest, out string parameterName, out string dependentParameterName)
        {
            //Validate whether dependent parameter's value count is equal
            bool isValid = true;
            List <StoredQueryParameter> lstParamWithDependencyRequest = null;
            StoredQueryParameter        parameterMatchingRequest      = null;

            string[] arrParamValues          = null;
            string[] arrDependentParamValues = null;

            parameterName          = string.Empty;
            dependentParameterName = string.Empty;

            lstParamWithDependencyRequest = GetAllParametersWithDependency(lstStoredQueryParameterRequest);

            if ((lstParamWithDependencyRequest != null) && (lstParamWithDependencyRequest.Count > 0))
            {
                for (int count = 0; count < lstParamWithDependencyRequest.Count; count++)
                {
                    parameterMatchingRequest = lstStoredQueryParameterRequest.Find(
                        delegate(StoredQueryParameter param)
                    {
                        if (param.ParameterName == lstParamWithDependencyRequest[count].DependentParameterName)
                        {
                            return(true);
                        }

                        return(false);
                    }
                        );

                    if (parameterMatchingRequest != null)
                    {
                        arrParamValues          = lstParamWithDependencyRequest[count].ParameterValue.Split(',');
                        arrDependentParamValues = parameterMatchingRequest.ParameterValue.Split(',');

                        if (arrParamValues.Length != arrDependentParamValues.Length)
                        {
                            isValid                = false;
                            parameterName          = lstParamWithDependencyRequest[count].ParameterName;
                            dependentParameterName = parameterMatchingRequest.ParameterName;
                            break;
                        }
                    }
                }
            }

            return(isValid);
        }
Ejemplo n.º 4
0
        private bool IsValidDependentParameterExists(List <StoredQueryParameter> lstStoredQueryParameterRequest, out string parameterName, out string dependentParameterName)
        {
            //Validate whether dependent parameter exists in the request
            bool isValid = true;
            List <StoredQueryParameter> lstParamWithDependencyRequest = null;
            StoredQueryParameter        parameterMatchingRequest      = null;

            parameterName          = string.Empty;
            dependentParameterName = string.Empty;

            lstParamWithDependencyRequest = GetAllParametersWithDependency(lstStoredQueryParameterRequest);

            if ((lstParamWithDependencyRequest != null) && (lstParamWithDependencyRequest.Count > 0))
            {
                for (int count = 0; count < lstParamWithDependencyRequest.Count; count++)
                {
                    if (!lstStoredQueryParameterRequest.Exists(
                            delegate(StoredQueryParameter param)
                    {
                        if (param.ParameterName == lstParamWithDependencyRequest[count].DependentParameterName)
                        {
                            return(true);
                        }

                        return(false);
                    }
                            ))
                    {
                        isValid                = false;
                        parameterName          = lstParamWithDependencyRequest[count].ParameterName;
                        dependentParameterName = lstParamWithDependencyRequest[count].DependentParameterName;
                        break;
                    }
                }
            }

            return(isValid);
        }
Ejemplo n.º 5
0
        private string GetDependentParameterName(List <StoredQueryParameter> lstStoredQueryParameter, string paramName)
        {
            string dependentParameterName         = null;
            StoredQueryParameter storedQueryParam = null;

            storedQueryParam = lstStoredQueryParameter.Find(
                delegate(StoredQueryParameter parameter)
            {
                if (parameter.ParameterName == paramName)
                {
                    return(true);
                }

                return(false);
            }
                );

            if (storedQueryParam != null)
            {
                dependentParameterName = storedQueryParam.DependentParameterName;
            }

            return(dependentParameterName);
        }
Ejemplo n.º 6
0
        public XmlDocument RegistryStoredQuery(XmlDocument xmlDocRequest, out StringDictionary atnaParameterValues)
        {
            XmlDocument     xmlDocResponse         = null;
            StoredQuery     objStoredQueryRequest  = null;
            StoredQuery     objStoredQueryDB       = null;
            StoredQueryBase objStoredQuery         = null;
            string          parameterName          = null;
            string          dependentParameterName = null;
            string          eventOutcomeIndicator  = "0";

            atnaParameterValues = new StringDictionary();

            try
            {
                //Construct the Request Stored Query Object
                objStoredQueryRequest = StoredQueryBase.ConstructStoredQuery(xmlDocRequest);

                //-------------------------------------------------------------------------------------
                //ATNA
                StoredQueryParameter queryParamPatientID = objStoredQueryRequest.ParameterList.Find(
                    delegate(StoredQueryParameter queryParameter)
                {
                    if (queryParameter != null && queryParameter.ParameterName != null && queryParameter.ParameterName == "$XDSDocumentEntryPatientId")
                    {
                        return(true);
                    }

                    return(false);
                }
                    );
                if (queryParamPatientID != null)
                {
                    atnaParameterValues.Add("$XDSPatient$", queryParamPatientID.ParameterValue);
                }

                XmlNode nodeAdhocQuery = xmlDocRequest.SelectSingleNode(@"//*[local-name()='AdhocQuery']");

                if (nodeAdhocQuery != null)
                {
                    atnaParameterValues.Add("$AdhocQuery$", nodeAdhocQuery.OuterXml);
                }

                //-------------------------------------------------------------------------------------

                objStoredQueryDB = GetStoredQueryDetails(objStoredQueryRequest.StoredQueryUniqueID, objStoredQueryRequest.ReturnType);


                #region "***********Validations****************"

                if (objStoredQueryDB == null)
                {
                    eventOutcomeIndicator = "8";
                    atnaParameterValues.Add("$EventIdentification.EventOutcomeIndicator$", eventOutcomeIndicator);

                    //Invalid Query ID
                    xmlDocResponse = StoredQueryBase.ConstructStoredQueryErrorResponse(GlobalValues.CONST_RESPONSE_STATUS_TYPE_FAILURE, string.Empty, "Invalid query id.", GlobalValues.CONST_REGISTRYERROR_CODE_XDSRegistryError, GlobalValues.CONST_SEVERITY_TYPE_ERROR, string.Empty);
                    return(xmlDocResponse);
                }

                //Update the Request Parameters with Dependent Parameters
                UpdateDependentParameterName(objStoredQueryRequest.ParameterList, objStoredQueryDB.ParameterList);

                //Validate Repeating Parameter
                if (IsParameterRepeated(objStoredQueryRequest.ParameterList))
                {
                    eventOutcomeIndicator = "8";
                    atnaParameterValues.Add("$EventIdentification.EventOutcomeIndicator$", eventOutcomeIndicator);

                    //Parameter Repeating
                    xmlDocResponse = StoredQueryBase.ConstructStoredQueryErrorResponse(GlobalValues.CONST_RESPONSE_STATUS_TYPE_FAILURE, string.Empty, "Repeating parameter.", GlobalValues.CONST_REGISTRYERROR_CODE_XDSRegistryError, GlobalValues.CONST_SEVERITY_TYPE_ERROR, string.Empty);
                    return(xmlDocResponse);
                }


                //Parameter Validation
                if (!IsRequiredQueryParameterExists(objStoredQueryRequest.ParameterList, objStoredQueryDB.ParameterList))
                {
                    eventOutcomeIndicator = "8";
                    atnaParameterValues.Add("$EventIdentification.EventOutcomeIndicator$", eventOutcomeIndicator);

                    //Required Parameter Missing
                    xmlDocResponse = StoredQueryBase.ConstructStoredQueryErrorResponse(GlobalValues.CONST_RESPONSE_STATUS_TYPE_FAILURE, string.Empty, "Required parameter missing.", GlobalValues.CONST_REGISTRYERROR_CODE_XDSRegistryError, GlobalValues.CONST_SEVERITY_TYPE_ERROR, string.Empty);
                    return(xmlDocResponse);
                }

                //Validate Dependent Parameter
                if (!IsValidDependentParameterExists(objStoredQueryRequest.ParameterList, out parameterName, out dependentParameterName))
                {
                    eventOutcomeIndicator = "8";
                    atnaParameterValues.Add("$EventIdentification.EventOutcomeIndicator$", eventOutcomeIndicator);

                    //Required Parameter Missing
                    xmlDocResponse = StoredQueryBase.ConstructStoredQueryErrorResponse(GlobalValues.CONST_RESPONSE_STATUS_TYPE_FAILURE, string.Empty, string.Format("{0} parameter is specified but corresponding {1} parameter is not specified.", parameterName, dependentParameterName), GlobalValues.CONST_REGISTRYERROR_CODE_XDSRegistryError, GlobalValues.CONST_SEVERITY_TYPE_ERROR, string.Empty);
                    return(xmlDocResponse);
                }

                //Validate Dependent Parameter Value Count
                if (!IsValidDependentParameterValueCount(objStoredQueryRequest.ParameterList, out parameterName, out dependentParameterName))
                {
                    eventOutcomeIndicator = "8";
                    atnaParameterValues.Add("$EventIdentification.EventOutcomeIndicator$", eventOutcomeIndicator);

                    //Required Parameter Missing
                    xmlDocResponse = StoredQueryBase.ConstructStoredQueryErrorResponse(GlobalValues.CONST_RESPONSE_STATUS_TYPE_FAILURE, string.Empty, string.Format("{0} parameter values does not have equivalent number of values in {1} parameter.", parameterName, dependentParameterName), GlobalValues.CONST_REGISTRYERROR_CODE_XDSRegistryError, GlobalValues.CONST_SEVERITY_TYPE_ERROR, string.Empty);
                    return(xmlDocResponse);
                }

                #endregion

                //Merge the StoredQuery Request & DB details
                //we are left with only one StoredQuery Object with all the params & it's values
                objStoredQueryRequest = StoredQueryBase.UpdateParameterValues(objStoredQueryRequest, objStoredQueryDB);

                //Create concrete StoredQuery object based on query name
                objStoredQuery = StoredQueryBase.GetStoredQueryObject(objStoredQueryRequest.StoredQueryName);

                //Process Message & Construct Response Accordingly
                xmlDocResponse = objStoredQuery.ProcessQuery(objStoredQueryRequest);
            }
            catch
            {
                //Return Error Response
                xmlDocResponse = StoredQueryBase.ConstructStoredQueryErrorResponse(GlobalValues.CONST_RESPONSE_STATUS_TYPE_FAILURE, string.Empty, "Unexpected Registry Error.", GlobalValues.CONST_REGISTRYERROR_CODE_XDSRegistryError, GlobalValues.CONST_SEVERITY_TYPE_ERROR, string.Empty);

                eventOutcomeIndicator = "8";
            }

            atnaParameterValues.Add("$EventIdentification.EventOutcomeIndicator$", eventOutcomeIndicator);

            return(xmlDocResponse);
        }
Ejemplo n.º 7
0
        public static StoredQuery ConstructStoredQuery(XmlDocument xmlDoc)
        {
            StoredQuery          objStoredQuery = new StoredQuery();
            StoredQueryParameter objParameter   = null;
            string returnComposedObjects        = null;

            //ResponseOption
            XmlNode xmlNodeResponseOption = xmlDoc.SelectSingleNode(@"//*[local-name()='ResponseOption']");

            //returnComposedObjects
            if (xmlNodeResponseOption.Attributes["returnComposedObjects"] != null)
            {
                returnComposedObjects = xmlNodeResponseOption.Attributes["returnComposedObjects"].Value;
            }

            if ((!string.IsNullOrEmpty(returnComposedObjects)) && returnComposedObjects == "true")
            {
                objStoredQuery.ReturnComposedObjects = true;
            }

            //returnType
            objStoredQuery.ReturnType = xmlNodeResponseOption.Attributes["returnType"].Value;

            //AdhocQuery
            XmlNode xmlNodeAdhocQuery = xmlDoc.SelectSingleNode(@"//*[local-name()='AdhocQuery']");

            objStoredQuery.StoredQueryUniqueID = xmlNodeAdhocQuery.Attributes["id"].Value;

            //Slot
            XmlNodeList xmlNodeListSlot = xmlDoc.SelectNodes(@"//*[local-name()='Slot']");

            //Looping through the Slots
            for (int iSlotCount = 0; iSlotCount < xmlNodeListSlot.Count; iSlotCount++)
            {
                objParameter = new StoredQueryParameter();

                //name
                objParameter.ParameterName = xmlNodeListSlot[iSlotCount].Attributes["name"].Value;

                //ValueList
                if (xmlNodeListSlot[iSlotCount].HasChildNodes)
                {
                    foreach (XmlNode node in xmlNodeListSlot[iSlotCount].ChildNodes)
                    {
                        if ((node.NodeType == XmlNodeType.Element) && (node.LocalName == "ValueList"))
                        {
                            //Value
                            //Only 1 Value will exist at any given point in time
                            //Although the node is ValueList with multiple possible Value node
                            //But the request will contain ('some_value','some_value') for multiple values
                            if (node.ChildNodes.Count > 0)
                            {
                                objParameter.ParameterValue = node.ChildNodes[0].InnerText;
                            }
                        }
                    }
                }

                //Adding Parameter to the collection
                objStoredQuery.ParameterList.Add(objParameter);
            }


            return(objStoredQuery);
        }