public static void AddScheduledProcedureStep(this MWLDataset ds, ImagingServiceRequest request, WorklistRequestedProcedure procedure, WorklistScheduledProcedureStep procedureStep) { MWLDataset.ScheduledProcedureStepRow sps = ds.ScheduledProcedureStep.NewScheduledProcedureStepRow(); procedureStep.CopyTo <MWLDataset.ScheduledProcedureStepRow>(sps); sps.AccessionNumber = request.AccessionNumber; sps.RequestedProcedureID = procedure.RequestedProcedureID; if (procedureStep.ScheduledProcedureStepStartDate_Time != null && procedureStep.ScheduledProcedureStepStartDate_Time.StartDate.HasValue) { sps.ScheduledProcedureStepStartDate_Time = procedureStep.ScheduledProcedureStepStartDate_Time.StartDate.Value; } ds.ScheduledProcedureStep.AddScheduledProcedureStepRow(sps); if (procedureStep.ScheduledStationAETitle != null && procedureStep.ScheduledStationAETitle.Count > 0) { foreach (string ae in procedureStep.ScheduledStationAETitle) { MWLDataset.ScheduledStationAETitlesRow row = ds.ScheduledStationAETitles.NewScheduledStationAETitlesRow(); row.ScheduledStationAETitle = ae; row.ScheduledProcedureStepID = procedureStep.ScheduledProcedureStepID; ds.ScheduledStationAETitles.Rows.Add(row); } } if (procedureStep.ScheduledStationName != null && procedureStep.ScheduledStationName.Count > 0) { foreach (string name in procedureStep.ScheduledStationName) { MWLDataset.ScheduledStationNamesRow row = ds.ScheduledStationNames.NewScheduledStationNamesRow(); row.ScheduledStationName = name; row.ScheduledProcedureStepID = procedureStep.ScheduledProcedureStepID; ds.ScheduledStationNames.Rows.Add(row); } } if (procedureStep.ScheduledProtocolCodeSequence != null) { foreach (ScheduledProtocolCodeSequence spcs in procedureStep.ScheduledProtocolCodeSequence) { MWLDataset.ScheduledProtocolCodeSequenceRow row = ds.ScheduledProtocolCodeSequence.NewScheduledProtocolCodeSequenceRow(); row.CodeMeaning = spcs.CodeMeaning; row.CodeValue = spcs.CodeValue; row.CodingSchemeDesignator = spcs.CodingSchemeDesignator; row.CodingSchemeVersion = spcs.CodingSchemeVersion; row.SetOrderNumberNull(); row.ScheduledProcedureStepID = procedureStep.ScheduledProcedureStepID; ds.ScheduledProtocolCodeSequence.AddScheduledProtocolCodeSequenceRow(row); } } }
public void UpdateScheduledProcedureStep(string scheduledProcedureStepID, WCFScheduledProcedureStep procedureStep) { WCFScheduledProcedureStep sps = new WCFScheduledProcedureStep() { ScheduledProcedureStepID = scheduledProcedureStepID }; Guard.ArgumentNotNullOrEmpty(scheduledProcedureStepID, "scheduledProcedureStepID"); Guard.ArgumentNotNull(procedureStep.ScheduledProcedureStepStartDate_Time, "ScheduledProcedureStepStartDate_Time"); Guard.ArgumentNotNullOrEmpty(procedureStep.Modality, "Modality"); Guard.ArgumentNotNullOrEmpty(procedureStep.ScheduledProcedureStepDescription, "ScheduledProcedureStepDescription"); if (procedureStep.ScheduledProtocolCodeSequence != null) { foreach (ScheduledProtocolCodeSequence cs in procedureStep.ScheduledProtocolCodeSequence) { Guard.ArgumentNotNullOrEmpty(cs.CodeValue, "ScheduledProtocolCodeSequence.CodeValue"); Guard.ArgumentNotNullOrEmpty(cs.CodingSchemeDesignator, "ScheduledProtocolCodeSequence.CodingSchemeDesignator"); } } using (MWLDataset ds = DB.DataAccess.Find(sps)) { if (ds != null && ds.ScheduledProcedureStep.Rows.Count > 0) { MWLDataset.ScheduledProcedureStepRow row = ds.ScheduledProcedureStep.Rows[0] as MWLDataset.ScheduledProcedureStepRow; row.Update(procedureStep); DB.DataAccess.UpdateMWL(ds); } else { throw new Exception("Scheduled procedure step not found"); } } }
/// <summary> /// Adds the patient. /// </summary> /// <param name="ds">The ds.</param> /// <param name="patient">The patient.</param> public static void AddPatient(this MWLDataset ds, WCFPatient patient) { MWLDataset.PatientRow pr = ds.Patient.NewPatientRow(); MWLDataset.VisitRow vr = ds.Visit.NewVisitRow(); MWLDataset.ImagingServiceRequestRow isrr = ds.ImagingServiceRequest.NewImagingServiceRequestRow(); MWLDataset.RequestedProcedureRow rpr = ds.RequestedProcedure.NewRequestedProcedureRow(); MWLDataset.ScheduledProcedureStepRow spsr = ds.ScheduledProcedureStep.NewScheduledProcedureStepRow(); MWLDataset.ScheduledStationAETitlesRow ssaetr = ds.ScheduledStationAETitles.NewScheduledStationAETitlesRow(); Random rnd = new Random(); string AccessionNumber = rnd.Next(100000000, 999999999).ToString() + "." + DateTime.Now.ToString("ssfff"); string ReferDrLastName = "N/A"; string ReferDrFirstName = "N/A"; string modality = "IO"; string[] Accessions = DB.DataAccess.GetAccessionNumbers(patient.PatientID, patient.IssuerOfPatientID); if (Accessions.Length < 1) { patient.CopyTo <MWLDataset.PatientRow>(pr); if (patient.LastMenstrualDate.HasValue) { pr.LastMenstrualDate = patient.LastMenstrualDate.Value.Date1.ToDateTime(); } if (patient.PatientBirthDate.HasValue) { pr.PatientBirthDate = patient.PatientBirthDate.Value.Date1.ToDateTime(); } if (!patient.PregnancyStatus.IsNullOrEmpty()) { switch (patient.PregnancyStatus.ToLower()) { case "not pregnant": pr.PregnancyStatus = 1; break; case "possibly pregnant": pr.PregnancyStatus = 2; break; case "definitely pregnant": pr.PregnancyStatus = 3; break; case "unknown": pr.PregnancyStatus = 4; break; default: pr.PregnancyStatus = 0; break; } } pr.IssuerOfPatientID = patient.IssuerOfPatientID; ds.Patient.AddPatientRow(pr); } else { LogMessage(Logger.Global, LogType.Information, "Patient <" + patient.PatientID + "> already exists."); } if (patient.MedicalAlerts != null) { foreach (string ma in patient.MedicalAlerts) { MWLDataset.MedicalAlertsRow mar = ds.MedicalAlerts.NewMedicalAlertsRow(); mar.MedicalAlert = ma; mar.PatientID = patient.PatientID; mar.IssuerOfPatientID = patient.IssuerOfPatientID; ds.MedicalAlerts.AddMedicalAlertsRow(mar); } } if (patient.ContrastAllergies != null) { foreach (string ca in patient.ContrastAllergies) { MWLDataset.ContrastAllergiesRow car = ds.ContrastAllergies.NewContrastAllergiesRow(); car.ContrastAllergy = ca; car.PatientID = patient.PatientID; car.IssuerOfPatientID = patient.IssuerOfPatientID; ds.ContrastAllergies.AddContrastAllergiesRow(car); } } if (patient.OtherPatientIDs != null) { foreach (string id in patient.OtherPatientIDs) { MWLDataset.OtherPatientIDsRow oir = ds.OtherPatientIDs.NewOtherPatientIDsRow(); oir.OtherPatientID = id; oir.PatientID = patient.PatientID; oir.IssuerOfPatientID = patient.IssuerOfPatientID; ds.OtherPatientIDs.AddOtherPatientIDsRow(oir); } } //Start Insert of Remaining Tables needed for MWL if (AccessionNumber != null) { if (Accessions.Length < 1) { //Insert Visit vr.AdmissionID = AccessionNumber; vr.CurrentPatientLocation = "MEDICAL"; ds.Visit.AddVisitRow(vr); //Insert ImagingServiceRequest isrr.AccessionNumber = AccessionNumber; isrr.PatientID = patient.PatientID; isrr.IssuerOfPatientID = patient.IssuerOfPatientID; isrr.RequestingPhysicianFamilyName = ReferDrLastName; isrr.RequestingPhysicianGivenName = ReferDrFirstName; isrr.ReferringPhysicianFamilyName = ReferDrLastName; isrr.ReferringPhysicianGivenName = ReferDrFirstName; ds.ImagingServiceRequest.AddImagingServiceRequestRow(isrr); //Insert RequestedProcedure rpr.AccessionNumber = AccessionNumber; rpr.RequestedProcedureID = AccessionNumber; rpr.StudyInstanceUID = "1.2.840.114257.15.400000.2." + DateTime.Now.ToString("hhmmss") + patient.PatientID + DateTime.Now.ToString("yyyyMMdd"); rpr.RequestedProcedureDescription = "MEDICAL"; rpr.RequestedProcedurePriority = "MED"; rpr.AdmissionID = AccessionNumber; ds.RequestedProcedure.AddRequestedProcedureRow(rpr); //Insert ScheduledProcedureStep spsr.ScheduledProcedureStepID = AccessionNumber; spsr.AccessionNumber = AccessionNumber; spsr.RequestedProcedureID = AccessionNumber; spsr.ScheduledProcedureStepLocation = "MEDICAL"; spsr.ScheduledProcedureStepStartDate_Time = DateTime.Now; spsr.ScheduledPerformingPhysicianNameFamilyName = ReferDrLastName; spsr.ScheduledPerformingPhysicianNameGivenName = ReferDrFirstName; spsr.Modality = modality; spsr.ScheduledProcedureStepDescription = "MEDICAL"; ds.ScheduledProcedureStep.AddScheduledProcedureStepRow(spsr); //Insert ScheduledStationAETitles ssaetr.ScheduledProcedureStepID = AccessionNumber; ssaetr.ScheduledStationAETitle = patient.ScheduledStationAE; ds.ScheduledStationAETitles.AddScheduledStationAETitlesRow(ssaetr); LogMessage(Logger.Global, LogType.Information, "Patient <" + patient.PatientID + "> was added"); } } }