internal override void ApplyDefaults(ProcedureRequisition procedureRequisition, OrderEditorComponent component) { if (this.Defaults.ScheduledTime.HasValue) { procedureRequisition.ScheduledTime = ComputeScheduledTime(this.Defaults.ScheduledTime.Value, component._proceduresTable.Items); } if (this.Defaults.ModalityRef != null) { var modality = component._modalityChoices.FirstOrDefault(m => m.ModalityRef.Equals(this.Defaults.ModalityRef, true)); procedureRequisition.Modality = modality; } }
internal override void ApplyDefaults(ProcedureRequisition procedureRequisition, OrderEditorComponent component) { // apply the defaults iff this requisition is specifically the one that was requested to be edited if (!EntityRef.Equals(procedureRequisition.ProcedureRef, this.ProcedureRef, true)) return; if (!procedureRequisition.CanModify) return; if (this.Defaults.ScheduledTime.HasValue) { procedureRequisition.ScheduledTime = this.Defaults.ScheduledTime.Value; } if (this.Defaults.ScheduledDuration.HasValue) { procedureRequisition.ScheduledDuration = this.Defaults.ScheduledDuration.Value; } if (this.Defaults.ModalityRef != null) { var modality = component._modalityChoices.FirstOrDefault(m => m.ModalityRef.Equals(this.Defaults.ModalityRef, true)); procedureRequisition.Modality = modality; } }
public void UpdateProcedureFromRequisition(Procedure procedure, ProcedureRequisition requisition, Staff currentUserStaff, IPersistenceContext context) { // check if the procedure was cancelled if (requisition.Cancelled) { if (procedure.Status == ProcedureStatus.SC) { // if RP is still scheduled, cancel it procedure.Cancel(); } else if (procedure.Status == ProcedureStatus.IP) { // if RP in-progress, discontinue it procedure.Discontinue(); } // early exit - nothing else to update return; } // The following properties are appropriate only for procedures in SC status. if (!IsProcedureModifiable(procedure)) return; procedure.Schedule(requisition.ScheduledTime, requisition.ScheduledDuration); procedure.SchedulingCode = EnumUtils.GetEnumValue<SchedulingCodeEnum>(requisition.SchedulingCode, context); procedure.PerformingFacility = context.Load<Facility>(requisition.PerformingFacility.FacilityRef, EntityLoadFlags.Proxy); procedure.PerformingDepartment = requisition.PerformingDepartment == null ? null : context.Load<Department>(requisition.PerformingDepartment.DepartmentRef, EntityLoadFlags.Proxy); // if the requisition explicitly specifies a modality, assign that modality to all MPS // (we ignore the fact that the procedure plan can theoretically contain modality procedures steps spanning multiple // DICOM modalities, since in the small clinic use-case, each procedure type generally only has a single MPS) if (requisition.Modality != null) { foreach (var mps in procedure.ModalityProcedureSteps) { mps.Modality = context.Load<Modality>(requisition.Modality.ModalityRef, EntityLoadFlags.Proxy); } } procedure.Laterality = EnumUtils.GetEnumValue<Laterality>(requisition.Laterality); procedure.Portable = requisition.PortableModality; if (requisition.CheckedIn && procedure.IsPreCheckIn) { procedure.CheckIn(currentUserStaff, null); } else if (!requisition.CheckedIn && procedure.IsCheckedIn) { procedure.RevertCheckIn(); } }
/// <summary> /// Applies default values to the specified procedure requisition. /// </summary> /// <param name="procedureRequisition"></param> /// <param name="component"></param> internal abstract void ApplyDefaults(ProcedureRequisition procedureRequisition, OrderEditorComponent component);
/// <summary> /// Formats the procedure name, portable and laterality similar to "Name (Portable/Laterality)". /// Name is formatted according to the default person name format as specified in <see cref="FormatSettings"/> /// </summary> /// <param name="p"></param> /// <returns></returns> public static string Format(ProcedureRequisition p) { return Format(p.ProcedureType.Name, p.PortableModality, p.Laterality, FormatSettings.Default.ProcedurePortableLateralityDefaultFormat); }