/// <summary> /// 根据列表字段为列表创建新行 /// </summary> /// <param name="field">列表字段</param> /// <returns></returns> public CrfSection AddCrfSectionRow(CrfField field) { if (!field.ElementType.StartsWith(ConstCamp.ELEMENT_TYPE_TABLE)) { throw new ArgumentException("仅能为列表创建CrfSection"); } int rowIndex = 1; if (this.Children.Any(p => p.TableFieldId == field.StudyCrfFieldId)) { rowIndex = this.Children.Where(p => p.TableFieldId == field.StudyCrfFieldId).Max(p => p.RowIndex) + 1; } CrfSection rowSection = new CrfSection(this, field); rowSection.RowIndex = rowIndex; // 添加字段 foreach (CrfField tableField in field.Children) { rowSection.AddFieldItem(tableField); } return(rowSection); }
/// <summary> /// 添加字段的子字段 /// </summary> /// <param name="field"></param> private void AddChildrenFields(CrfField field) { foreach (CrfField child in field.Children) { this.AddFieldItem(child); } }
/// <summary> /// 为普通字段或分组标签添加字段项 /// </summary> /// <param name="field">字段定义</param> /// <returns></returns> public FieldItem AddFieldItem(CrfField field) { FieldItem newFieldItem = null; if (!string.IsNullOrEmpty(field.FieldId) && !this.FieldItems.Any(p => p.FieldId == field.FieldId)) { // 普通字段,且Section中没有该字段 newFieldItem = new FieldItem(field); if (!string.IsNullOrEmpty(field.Settings.DefaultValue)) { newFieldItem.Value = field.Settings.DefaultValue; newFieldItem.Text = field.Settings.DefaultValue; } this.FieldItems.Add(newFieldItem); this.AddChildrenFields(field); this.AddRemarkFieldItem(field); } else if (field.ElementType == ConstCamp.ELEMENT_TYPE_GROUP) { this.AddChildrenFields(field); } return(newFieldItem); }
public FieldItem(CrfField field) { FieldCode = field.FieldCode; FieldId = field.FieldId; FieldName = field.FieldName; IsEncrypted = field.IsEncrypted; StudyCrfFieldId = field.StudyCrfFieldId; TableId = field.TableId; TableRowId = field.TableRowId; if (!string.IsNullOrEmpty(field.Settings.DefaultValue)) { this.Text = field.Settings.DefaultValue; this.Value = field.Settings.DefaultValue; } }
/// <summary> /// 列表行CrfSection构造函数 /// </summary> /// <param name="parentSection"></param> /// <param name="field"></param> private CrfSection(CrfSection parentSection, CrfField field) { this.FieldItems = new List <FieldItem>(); this.Children = new List <CrfSection>(); StudyPatientId = parentSection.StudyPatientId; CrfId = parentSection.CrfId; VisitId = parentSection.VisitId; StudyId = parentSection.StudyId; StudySiteId = parentSection.StudySiteId; RandomId = parentSection.RandomId; TableFieldId = field.StudyCrfFieldId; RowFieldCode = field.FieldCode; RowTableId = field.TableId; RowFieldId = field.StudyCrfFieldId; CrfType = CrfSectionType.Row; Status = 0; parentSection.Children.Add(this); }
/// <summary> /// 添加备注字段 /// </summary> /// <param name="section"></param> /// <param name="field"></param> private FieldItem AddRemarkFieldItem(CrfField field) { FieldItem remarkFieldItem = null; if (field.SelectOptions != null) { foreach (FieldSelectOption option in field.SelectOptions) { if (option.RemarkField != null) { remarkFieldItem = new FieldItem(option.RemarkField); // 备注字段没有默认值,所以不需要设置默认值 this.FieldItems.Add(remarkFieldItem); // 多个选项,正常情况下只有一个有备注字段,如“其他” break; } } } return(remarkFieldItem); }
/// <summary> /// 根据检查套餐代码,添加检查子项列表行 /// </summary> /// <param name="detailsTablefield"></param> /// <param name="package"></param> /// <returns></returns> public IEnumerable <CrfSection> AddInpectionDetailRows(CrfField detailsTablefield, InspectionPackage package) { List <CrfSection> addedSections = new List <CrfSection>(); if (detailsTablefield.TableId == ConstCamp.INSPECT_DETAILS_TABLE_ID) { foreach (InspectionItem item in package.Items) { // 为每个检查子项创建一个 CrfSection CrfSection rowSection = this.AddCrfSectionRow(detailsTablefield); addedSections.Add(rowSection); // 字段赋值 foreach (FieldItem rfi in rowSection.FieldItems) { switch (rfi.FieldId) { case "Ti_code": rfi.Text = item.ItemCode; rfi.Value = item.ItemCode; break; case "Ti_name": rfi.Text = item.ItemName; rfi.Value = item.ItemName; break; case "Ti_minval": rfi.Text = item.MinValue.HasValue ? item.MinValue.ToString() : ""; rfi.Value = item.MinValue.HasValue ? item.MinValue.ToString() : ""; break; case "Ti_maxval": rfi.Text = item.MaxValue.HasValue ? item.MaxValue.ToString() : ""; rfi.Value = item.MaxValue.HasValue ? item.MaxValue.ToString() : ""; break; case "Ti_unit": rfi.Text = item.Unit; rfi.Value = item.Unit; break; case "Ti_referencerange": rfi.Text = item.ReferenceRange; rfi.Value = item.ReferenceRange; break; case "Ti_normalvalue": rfi.Text = item.NormalValue; rfi.Value = item.NormalValue; break; } } } } else { throw new ArgumentException($"'{detailsTablefield.FieldName}'不是检查明细表字段"); } return(addedSections); }