/// <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); }
/// <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(); } }