/// <summary>
        /// Create a CV from the specified domain
        /// </summary>
        public CV <T> CreateCV <T>(MARC.HI.EHRS.SVC.Core.DataTypes.CodeValue codeValue, List <IResultDetail> dtls)
        {
            if (codeValue == null)
            {
                return new CV <T>()
                       {
                           NullFlavor = MARC.Everest.DataTypes.NullFlavor.NoInformation
                       }
            }
            ;

            // Attempt to create the CV
            CV <T> retVal = new CV <T>();

            retVal.Code = CodeValue <T> .Parse(codeValue.Code);

            // Fill in details
            if (m_terminologyService != null && (retVal.Code.IsAlternateCodeSpecified ||
                                                 typeof(T) == typeof(String)))
            {
                codeValue = m_terminologyService.FillInDetails(codeValue);
            }

            retVal.CodeSystemVersion = codeValue.CodeSystemVersion;
            if (!String.IsNullOrEmpty(codeValue.CodeSystem))
            {
                retVal.CodeSystem = codeValue.CodeSystem;
            }
            if (codeValue.DisplayName != null)
            {
                retVal.DisplayName = codeValue.DisplayName;
            }
            else if (codeValue.CodeSystem != null)
            {
                retVal.CodeSystemName = codeValue.CodeSystemName;
            }

            if (codeValue.OriginalText != null)
            {
                retVal.OriginalText = codeValue.OriginalText;
            }

            return(retVal);
        }
Exemple #2
0
        /// <summary>
        /// Create a coded value
        /// </summary>
        public static decimal CreateCodedValue(IDbConnection conn, IDbTransaction tx, MARC.HI.EHRS.SVC.Core.DataTypes.CodeValue codeValue)
        {
            IDbCommand cmd = CreateCommandStoredProc(conn, tx);

            try
            {
                cmd.CommandText = "crt_code";

                // Add parameters
                cmd.Parameters.Add(CreateParameterIn(cmd, "cd_val_in", DbType.StringFixedLength, codeValue.Code));
                cmd.Parameters.Add(CreateParameterIn(cmd, "cd_domain_in", DbType.StringFixedLength, codeValue.CodeSystem));
                cmd.Parameters.Add(CreateParameterIn(cmd, "org_cnt_typ_in", DbType.StringFixedLength, "text/plain"));
                cmd.Parameters.Add(CreateParameterIn(cmd, "org_text_in", DbType.Binary, codeValue.OriginalText == null ? DBNull.Value : (object)Encoding.UTF8.GetBytes(codeValue.OriginalText)));
                cmd.Parameters.Add(CreateParameterIn(cmd, "cd_vrsn_id", DbType.StringFixedLength, codeValue.CodeSystemVersion));
                cmd.Parameters.Add(CreateParameterIn(cmd, "cd_qlfys_cd_id_in", DbType.Decimal, DBNull.Value));
                cmd.Parameters.Add(CreateParameterIn(cmd, "cd_qlfys_as_in", DbType.StringFixedLength, DBNull.Value));
                cmd.Parameters.Add(CreateParameterIn(cmd, "cd_qlfys_kv_id_in", DbType.StringFixedLength, DBNull.Value));
                cmd.Parameters.Add(CreateParameterIn(cmd, "can_share", DbType.Boolean, codeValue.Qualifies == null || codeValue.Qualifies.Count == 0));
                decimal codeId = Convert.ToDecimal(cmd.ExecuteScalar());

                // Create qualifiers
                if (codeValue.Qualifies != null)
                {
                    foreach (var kv in codeValue.Qualifies)
                    {
                        CreateCodedValue(conn, tx, codeId, kv);
                    }
                }


                // Return the code identifier
                return(codeId);
            }
            finally
            {
                cmd.Dispose();
            }
        }