Пример #1
0
        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);
            }
        }
Пример #2
0
        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;
            }
        }
Пример #3
0
        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();
        }