private void SetInstanceValuesForSpontaneousRelease3(DatasetInstance e2bInstance, DatasetInstance spontaneousReport, User currentUser) { e2bInstance.SetInstanceValue(_unitOfWork.Repository <DatasetElement>().Queryable().Single(dse => dse.ElementName == "N.1.2 Batch Number"), "MSH.PViMS-B01000" + spontaneousReport.ToString()); e2bInstance.SetInstanceValue(_unitOfWork.Repository <DatasetElement>().Queryable().Single(dse => dse.ElementName == "N.1.5 Date of Batch Transmission"), DateTime.Now.ToString("yyyyMMddHHmmsss")); e2bInstance.SetInstanceValue(_unitOfWork.Repository <DatasetElement>().Queryable().Single(dse => dse.ElementName == "N.2.r.1 Message Identifier"), "MSH.PViMS-B01000" + spontaneousReport.ToString() + "-" + DateTime.Now.ToString("mmsss")); e2bInstance.SetInstanceValue(_unitOfWork.Repository <DatasetElement>().Queryable().Single(dse => dse.ElementName == "N.2.r.4 Date of Message Creation"), DateTime.Now.ToString("yyyyMMddHHmmsss")); e2bInstance.SetInstanceValue(_unitOfWork.Repository <DatasetElement>().Queryable().Single(dse => dse.ElementName == "C.1.1 Sender’s (case) Safety Report Unique Identifier"), String.Format("US-MSH.PViMS-{0}-{1}", DateTime.Today.ToString("yyyy"), spontaneousReport.Id.ToString())); e2bInstance.SetInstanceValue(_unitOfWork.Repository <DatasetElement>().Queryable().Single(dse => dse.ElementName == "C.1.2 Date of Creation"), DateTime.Now.ToString("yyyyMMddHHmmsss")); e2bInstance.SetInstanceValue(_unitOfWork.Repository <DatasetElement>().Queryable().Single(dse => dse.ElementName == "C.1.8.1 Worldwide Unique Case Identification Number"), String.Format("US-MSH.PViMS-{0}-{1}", DateTime.Today.ToString("yyyy"), spontaneousReport.Id.ToString())); // Default remaining fields // C1 Identification e2bInstance.SetInstanceValue(_unitOfWork.Repository <DatasetElement>().Queryable().Single(dse => dse.ElementName == "C.1.3 Type of Report"), "1=Spontaneous report"); e2bInstance.SetInstanceValue(_unitOfWork.Repository <DatasetElement>().Queryable().Single(dse => dse.ElementName == "C.1.4 Date Report Was First Received from Source"), spontaneousReport.Created.ToString("yyyy-MM-dd")); // C2 Primary Source var fullName = spontaneousReport.GetInstanceValue("Reporter Name"); if (fullName != string.Empty) { if (fullName.Contains(" ")) { e2bInstance.SetInstanceValue(_unitOfWork.Repository <DatasetElement>().Queryable().Single(dse => dse.ElementName == "C.2.r.1.2 Reporter’s Given Name"), fullName.Substring(0, fullName.IndexOf(" "))); e2bInstance.SetInstanceValue(_unitOfWork.Repository <DatasetElement>().Queryable().Single(dse => dse.ElementName == "C.2.r.1.4 Reporter’s Family Name"), fullName.Substring(fullName.IndexOf(" ") + 1, fullName.Length - (fullName.IndexOf(" ") + 1))); } else { e2bInstance.SetInstanceValue(_unitOfWork.Repository <DatasetElement>().Queryable().Single(dse => dse.ElementName == "C.2.r.1.2 Reporter’s Given Name"), fullName); } } var place = spontaneousReport.GetInstanceValue("Reporter Place of Practise"); if (place != string.Empty) { e2bInstance.SetInstanceValue(_unitOfWork.Repository <DatasetElement>().Queryable().Single(dse => dse.ElementName == "C.2.r.2.1 Reporter’s Organisation"), place); } var address = spontaneousReport.GetInstanceValue("Reporter Address"); if (address != string.Empty) { e2bInstance.SetInstanceValue(_unitOfWork.Repository <DatasetElement>().Queryable().Single(dse => dse.ElementName == "C.2.r.2.3 Reporter’s Street"), address.Substring(0, 99)); } var telNo = spontaneousReport.GetInstanceValue("Reporter Telephone Number"); if (telNo != string.Empty) { e2bInstance.SetInstanceValue(_unitOfWork.Repository <DatasetElement>().Queryable().Single(dse => dse.ElementName == "C.2.r.2.7 Reporter’s Telephone"), telNo); } // C3 Sender e2bInstance.SetInstanceValue(_unitOfWork.Repository <DatasetElement>().Queryable().Single(dse => dse.ElementName == "C.3.3.3 Sender’s Given Name"), currentUser.FirstName); e2bInstance.SetInstanceValue(_unitOfWork.Repository <DatasetElement>().Queryable().Single(dse => dse.ElementName == "C.3.3.5 Sender’s Family Name"), currentUser.LastName); e2bInstance.SetInstanceValue(_unitOfWork.Repository <DatasetElement>().Queryable().Single(dse => dse.ElementName == "C.3.4.8 Sender’s E-mail Address"), currentUser.Email); // D Patient var dob = spontaneousReport.GetInstanceValue("Date of Birth"); var onset = spontaneousReport.GetInstanceValue("Date of Onset"); if (dob != string.Empty) { e2bInstance.SetInstanceValue(_unitOfWork.Repository <DatasetElement>().Queryable().Single(dse => dse.ElementName == "D.2.1 Date of Birth"), dob); if (onset != string.Empty) { var age = (Convert.ToDateTime(onset) - Convert.ToDateTime(dob)).Days; e2bInstance.SetInstanceValue(_unitOfWork.Repository <DatasetElement>().Queryable().Single(dse => dse.ElementName == "D.2.2a Age at Time of Onset of Reaction / Event"), age.ToString()); e2bInstance.SetInstanceValue(_unitOfWork.Repository <DatasetElement>().Queryable().Single(dse => dse.ElementName == "D.2.2bAge at Time of Onset of Reaction / Event (unit)"), "Day"); } } var weight = spontaneousReport.GetInstanceValue("Weight (kg)"); if (weight != string.Empty) { e2bInstance.SetInstanceValue(_unitOfWork.Repository <DatasetElement>().Queryable().Single(dse => dse.ElementName == "D.3 Body Weight (kg)"), weight); } var sex = spontaneousReport.GetInstanceValue("Sex"); if (sex != string.Empty) { if (sex == "Male") { e2bInstance.SetInstanceValue(_unitOfWork.Repository <DatasetElement>().Queryable().Single(dse => dse.ElementName == "D.5 Sex"), "1=Male"); } if (sex == "Female") { e2bInstance.SetInstanceValue(_unitOfWork.Repository <DatasetElement>().Queryable().Single(dse => dse.ElementName == "D.5 Sex"), "2=Female"); } } var death = spontaneousReport.GetInstanceValue("Reaction date of death"); if (death != string.Empty) { e2bInstance.SetInstanceValue(_unitOfWork.Repository <DatasetElement>().Queryable().Single(dse => dse.ElementName == "D.9.1 Date of Death"), death); e2bInstance.SetInstanceValue(_unitOfWork.Repository <DatasetElement>().Queryable().Single(dse => dse.ElementName == "E.i.3.2a Results in Death"), "Yes"); } // E Reaction var evnt = spontaneousReport.GetInstanceValue("Description of reaction"); if (evnt != string.Empty) { e2bInstance.SetInstanceValue(_unitOfWork.Repository <DatasetElement>().Queryable().Single(dse => dse.ElementName == "E.i.1.1a Reaction / Event as Reported by the Primary Source in Native Language"), evnt); } var term = spontaneousReport.GetInstanceValue("TerminologyMedDra"); var termOut = "NOT SET"; if (term != string.Empty) { var termid = Convert.ToInt32(term); termOut = _unitOfWork.Repository <TerminologyMedDra>().Queryable().Single(u => u.Id == termid).DisplayName; } ; e2bInstance.SetInstanceValue(_unitOfWork.Repository <DatasetElement>().Queryable().Single(dse => dse.ElementName == "E.i.2.1b MedDRA Code for Reaction / Event"), termOut); if (onset != string.Empty) { e2bInstance.SetInstanceValue(_unitOfWork.Repository <DatasetElement>().Queryable().Single(dse => dse.ElementName == "E.i.4 Date of Start of Reaction / Event"), onset); } var outcome = spontaneousReport.GetInstanceValue("Outcome of reaction"); if (outcome != string.Empty) { switch (outcome) { case "Died - Drug may be contributory": case "Died - Due to adverse reaction": case "Died - Unrelated to drug": e2bInstance.SetInstanceValue(_unitOfWork.Repository <DatasetElement>().Queryable().Single(dse => dse.ElementName == "E.i.7 Outcome of Reaction / Event at the Time of Last Observation"), "5=fatal"); break; case "Not yet recovered": e2bInstance.SetInstanceValue(_unitOfWork.Repository <DatasetElement>().Queryable().Single(dse => dse.ElementName == "E.i.7 Outcome of Reaction / Event at the Time of Last Observation"), "3=not recovered/not resolved/ongoing"); break; case "Recovered": e2bInstance.SetInstanceValue(_unitOfWork.Repository <DatasetElement>().Queryable().Single(dse => dse.ElementName == "E.i.7 Outcome of Reaction / Event at the Time of Last Observation"), "1=recovered/resolved"); break; case "Uncertain outcome": e2bInstance.SetInstanceValue(_unitOfWork.Repository <DatasetElement>().Queryable().Single(dse => dse.ElementName == "E.i.7 Outcome of Reaction / Event at the Time of Last Observation"), "0=unknown"); break; default: break; } } for (int i = 1; i <= 6; i++) { var drugId = 0; var elementName = ""; var drugName = ""; var tempi = 0; if (i < 4) { drugId = i; elementName = string.Format("Suspected Drug {0}", drugId); drugName = spontaneousReport.GetInstanceValue(elementName); if (drugName != string.Empty) { // Create a new context var context = Guid.NewGuid(); e2bInstance.SetInstanceSubValue(_unitOfWork.Repository <DatasetElementSub>().Queryable().Single(dse => dse.ElementName == "G.k.1 Characterisation of Drug Role"), "1=Suspect", context); e2bInstance.SetInstanceSubValue(_unitOfWork.Repository <DatasetElementSub>().Queryable().Single(dse => dse.ElementName == "G.k.2.2 Medicinal Product Name as Reported by the Primary Source"), drugName, context); elementName = string.Format("Suspected Drug {0} Dosage", drugId); var dosage = spontaneousReport.GetInstanceValue(elementName); if (dosage != string.Empty) { if (Int32.TryParse(dosage, out tempi)) { e2bInstance.SetInstanceSubValue(_unitOfWork.Repository <DatasetElementSub>().Queryable().Single(dse => dse.ElementName == "G.k.4.r.1a Dose (number)"), dosage, context); } } elementName = string.Format("Suspected Drug {0} Dosage Unit", drugId); var dosageUnit = spontaneousReport.GetInstanceValue(elementName); if (dosageUnit != string.Empty) { e2bInstance.SetInstanceSubValue(_unitOfWork.Repository <DatasetElementSub>().Queryable().Single(dse => dse.ElementName == "G.k.4.r.1b Dose (unit)"), dosageUnit, context); } elementName = string.Format("Suspected Drug {0} Date Started", drugId); var dateStarted = spontaneousReport.GetInstanceValue(elementName); if (dateStarted != string.Empty) { e2bInstance.SetInstanceSubValue(_unitOfWork.Repository <DatasetElementSub>().Queryable().Single(dse => dse.ElementName == "G.k.4.r.4 Date of Start of Drug"), dateStarted, context); } elementName = string.Format("Suspected Drug {0} Date Stopped", drugId); var dateStopped = spontaneousReport.GetInstanceValue(elementName); if (dateStopped != string.Empty) { e2bInstance.SetInstanceSubValue(_unitOfWork.Repository <DatasetElementSub>().Queryable().Single(dse => dse.ElementName == "G.k.4.r.5 Date of Last Administration"), dateStopped, context); } elementName = string.Format("Suspected Drug {0} Batch Number", drugId); var batch = spontaneousReport.GetInstanceValue(elementName); if (batch != string.Empty) { e2bInstance.SetInstanceSubValue(_unitOfWork.Repository <DatasetElementSub>().Queryable().Single(dse => dse.ElementName == "G.k.4.r.7 Batch / Lot Number"), batch, context); } elementName = string.Format("Suspected Drug {0} Route", drugId); var route = spontaneousReport.GetInstanceValue(elementName); if (route != string.Empty) { e2bInstance.SetInstanceSubValue(_unitOfWork.Repository <DatasetElementSub>().Queryable().Single(dse => dse.ElementName == "G.k.4.r.10.1 Route of Administration"), route, context); } } } else { drugId = i - 3; elementName = string.Format("Concomitant Drug {0}", drugId); drugName = spontaneousReport.GetInstanceValue(elementName); if (drugName != string.Empty) { // Create a new context var context = Guid.NewGuid(); e2bInstance.SetInstanceSubValue(_unitOfWork.Repository <DatasetElementSub>().Queryable().Single(dse => dse.ElementName == "G.k.1 Characterisation of Drug Role"), "1=Suspect", context); e2bInstance.SetInstanceSubValue(_unitOfWork.Repository <DatasetElementSub>().Queryable().Single(dse => dse.ElementName == "G.k.2.2 Medicinal Product Name as Reported by the Primary Source"), drugName, context); elementName = string.Format("Concomitant Drug {0} Dosage", drugId); var dosage = spontaneousReport.GetInstanceValue(elementName); if (dosage != string.Empty) { e2bInstance.SetInstanceSubValue(_unitOfWork.Repository <DatasetElementSub>().Queryable().Single(dse => dse.ElementName == "G.k.4.r.1a Dose (number)"), dosage, context); } elementName = string.Format("Concomitant Drug {0} Dosage Unit", drugId); var dosageUnit = spontaneousReport.GetInstanceValue(elementName); if (dosageUnit != string.Empty) { e2bInstance.SetInstanceSubValue(_unitOfWork.Repository <DatasetElementSub>().Queryable().Single(dse => dse.ElementName == "G.k.4.r.1b Dose (unit)"), dosageUnit, context); } elementName = string.Format("Concomitant Drug {0} Date Started", drugId); var dateStarted = spontaneousReport.GetInstanceValue(elementName); if (dateStarted != string.Empty) { e2bInstance.SetInstanceSubValue(_unitOfWork.Repository <DatasetElementSub>().Queryable().Single(dse => dse.ElementName == "G.k.4.r.4 Date of Start of Drug"), dateStarted, context); } elementName = string.Format("Concomitant Drug {0} Date Stopped", drugId); var dateStopped = spontaneousReport.GetInstanceValue(elementName); if (dateStopped != string.Empty) { e2bInstance.SetInstanceSubValue(_unitOfWork.Repository <DatasetElementSub>().Queryable().Single(dse => dse.ElementName == "G.k.4.r.5 Date of Last Administration"), dateStopped, context); } elementName = string.Format("Concomitant Drug {0} Batch Number", drugId); var batch = spontaneousReport.GetInstanceValue(elementName); if (batch != string.Empty) { e2bInstance.SetInstanceSubValue(_unitOfWork.Repository <DatasetElementSub>().Queryable().Single(dse => dse.ElementName == "G.k.4.r.7 Batch / Lot Number"), batch, context); } elementName = string.Format("Concomitant Drug {0} Route", drugId); var route = spontaneousReport.GetInstanceValue(elementName); if (route != string.Empty) { e2bInstance.SetInstanceSubValue(_unitOfWork.Repository <DatasetElementSub>().Queryable().Single(dse => dse.ElementName == "G.k.4.r.10.1 Route of Administration"), route, context); } } } } }