private void SaveForm(bool registerUpdateScript) { // only update dirty record if (isToxicityRecordDirty) { int patientId = int.Parse(BaseDecryptedPatientId); // save toxicity Toxicity tox = new Toxicity(); int toxicityId = SaveRecord(ToxicityFields, tox, ToxicityIdField, patientId); // PatientItem Record PatientItem item = new PatientItem(); int patientItemId; if (!string.IsNullOrEmpty(PatientItemId.Value)) { item.Get(int.Parse(base.DecrypyValue(PatientItemId.Value))); } else { item[PatientItem.PatientSchemaId] = PatientSchemaId; item[PatientItem.Status] = "Unplanned"; } item[PatientItem.ScheduledDate] = ToxDate.Value; item.Save(); patientItemId = (int)item[item.PrimaryKeyName]; PatientItemId.Value = base.EncryptValue(patientItemId.ToString()); // Related Record int relatedRecordId = PatientProtocolController.CreateUnplannedVisitRelatedRecord(patientItemId, tox.TableName, toxicityId); RelatedRecordId.Value = relatedRecordId.ToString(); // if visible to user and record dirty if (isSAERecordDirty) { // SAE Record SeriousAdverseEvent sae = new SeriousAdverseEvent(); SaveRecord(SAEFields, sae, ToxicityIdField, toxicityId); } } // no need to update parent Toxicity, update child record if needed else if (isSAERecordDirty && !string.IsNullOrEmpty(ToxicityIdField.Value)) { int toxicityId = int.Parse(ToxicityIdField.Value); SeriousAdverseEvent sae = new SeriousAdverseEvent(); SaveRecord(SAEFields, sae, ToxicityIdField, toxicityId); } // save attributions if (!string.IsNullOrEmpty(ToxicityIdField.Value) && ToxAttributionGrid.DirtyRows.Count > 0) { int toxicityId = int.Parse(ToxicityIdField.Value); ToxAttributionGrid.Save(toxicityId); } // register client update script (close form from popup) if (registerUpdateScript) { RegisterUpdateScript(false); } }
public virtual void Populate(Dictionary <string, IEnumerable <MedTxAdministration> > protocolMedTxAgents, int?toxicityId) { List <ToxAttribution> attributions = new List <ToxAttribution>(); // get attributions for exisitng toxicity if (toxicityId.HasValue) { attributions.AddRange(BusinessObject.GetByParent <ToxAttribution>(toxicityId.Value)); } DataTable patientAttributionTable = attributions.AsDataView <ToxAttribution>().Table; // clear restrictions foreach (DataColumn column in patientAttributionTable.Columns) { column.AllowDBNull = true; } // search for existing attributions var exisitngMedTxAgents = from row in patientAttributionTable.AsEnumerable() let agent = row[ToxAttribution.ToxAttribution_Field].ToString() where protocolMedTxAgents.Keys.Contains(agent) select agent; // add blank agents not yet attributed var blankMedTxAgents = protocolMedTxAgents.Keys.Except(exisitngMedTxAgents).ToArray(); for (int i = 0; i < blankMedTxAgents.Length; i++) { string agent = blankMedTxAgents[i]; DataRow blankRow = patientAttributionTable.NewRow(); blankRow[ToxAttribution.ToxAttribution_Field] = agent; patientAttributionTable.Rows.Add(blankRow); } DataView attributionView = patientAttributionTable.DefaultView; // build attributions if (attributionView.Count > 0) { ToxAttributionGrid.DataSource = attributionView; ToxAttributionGrid.DataBind(); AttributionsMessage.Visible = false; } // no attributions or expectations else { AttributionsMessage.Visible = true; } }
private void PopulateAttributions(int?toxicityId) { List <ToxAttribution> attributions = new List <ToxAttribution>(); // add attributions if (toxicityId.HasValue) { attributions.AddRange(BusinessObject.GetByParent <ToxAttribution>(toxicityId.Value)); } // add blank int medTxCount = protocolMedTxAgents.Length; int attributionCount = attributions.Count(); int totalCount = Math.Min(Math.Max(medTxCount, attributionCount), 1); int blankRows = Math.Max(totalCount - attributionCount, 0); attributions.AddRange(Enumerable.Range(0, blankRows).Select(i => new ToxAttribution())); ToxAttributionGrid.BlankRows = blankRows; ToxAttributionGrid.VisibleBlankRows = blankRows; // build attributions ToxAttributionGrid.DataSource = attributions.AsDataView <ToxAttribution>(); ToxAttributionGrid.DataBind(); }