C2025-023 Electronic Procedures - Modifications to PROMS (Phase 1)

This commit is contained in:
2025-04-08 10:54:19 -04:00
parent 689ea71846
commit 6fd84e2f2a
23 changed files with 2791 additions and 1316 deletions

View File

@@ -19,6 +19,7 @@ using System.Xml;
using System.Drawing;
using System.ComponentModel;
using System.Collections.Generic;
using Volian.Base.Library;
namespace VEPROMS.CSLA.Library
{
@@ -226,6 +227,34 @@ namespace VEPROMS.CSLA.Library
//}
}
OnFormatLoaded(null, new FormatEventArgs("Formats Updated"));
//C2025-023 - Electronic Procedures - Modifications to PROMS
//Begin section for processing Electronic Procedure (EP) Format Files
// now loop through all EP format files
string epPath = fmtPath.Replace("\\fmtall", "\\epall");
DirectoryInfo diEP = new DirectoryInfo(epPath);
if (diEP.Exists)
{
FileInfo[] fisEP = diEP.GetFiles("*.xml");
OnFormatLoaded(null, new FormatEventArgs(fisEP.Length.ToString() + " EP Formats to Load"));
foreach (FileInfo fi in fisEP)
{
string fmtname = Path.GetFileNameWithoutExtension(fi.Name);
try
{
AddEPFormatToDB(fmtname, DateTime.Now, VlnSettings.UserID, epPath);
}
catch (Exception ex)
{
Console.WriteLine("{0} - {1}", ex.GetType().Name, ex.Message);
}
}
OnFormatLoaded(null, new FormatEventArgs("EP Formats Updated"));
// update all in-use annotation types that have Electronic Procedures
EPFormatFile.UpdateAllInUseEPAnnotationTypes();
}
}
private static Dictionary<string, int> _LookupFormats;
@@ -338,8 +367,54 @@ namespace VEPROMS.CSLA.Library
}
return rec;
}
//C2025-023 - Electronic Procedures - Modifications to PROMS
//Procedure to load the EP format fiels into the DB
private static void AddEPFormatToDB(string formatname, DateTime Dts, string Userid, string epPath)
{
string fmtdata = null;
FileInfo fmtfi = null;
XmlDocument xd = null;
OnFormatLoaded(null, new FormatEventArgs("Loading Format " + formatname));
string path = Path.Combine(epPath, formatname + ".xml");
if (File.Exists(path))
{
try
{
using (StreamReader srf = new StreamReader(path))
{
fmtfi = new FileInfo(path);
xd = new XmlDocument();
xd.XmlResolver = null;
xd.Load(srf);
fmtdata = xd.OuterXml;
}
}
catch (Exception ex)
{
OnFormatLoaded(null, new FormatEventArgs("Error Loading Format " + formatname));
_MyLog.ErrorFormat($"AddEPFormatToDB('{path}')");
return;
}
}
if (string.IsNullOrEmpty(Userid)) Userid = "Migration";
try
{
EPFormatFile.UpdateEPFormat(formatname, fmtdata, Userid);
}
catch (Exception ex)
{
_MyLog.ErrorFormat($"AddFormatToDB-make format('{path}')");
}
}
}
public partial class FormatInfo : IFormatOrFormatInfo
public partial class FormatInfo : IFormatOrFormatInfo
{
//transition report stuff
private static Dictionary<int, string> _TransitionTypes;

View File

@@ -2112,6 +2112,45 @@ namespace VEPROMS.CSLA.Library
return (sd.Type == type);
}
// C2025-023 - Electronic Procedures - Modifications to PROMS
//return EPFields that match this step type or a parent step type
public EPFields GetValidEPFields(int AnnTypeID)
{
EPFields filtered = new EPFields();
EPFields unfiltered = ActiveFormat.PlantFormat.EPFormatFiles.First(x => x.AnnotationTypeID == AnnTypeID).FieldList;
//Build list of step type and step type of it's parents
List<string> steptypelist = new List<string>();
if ((int)MyContent.Type < 20000) return filtered;
int stepType = ((int)MyContent.Type) % 10000;
StepDataList sdlist = ActiveFormat.PlantFormat.FormatData.StepDataList;
if (stepType > sdlist.MaxIndex)
{
Console.WriteLine("Error getting type - contentid = {0}", MyContent.ContentID);
return filtered;
}
StepData sd = sdlist[stepType];
while (sd.Index != 0)
{
steptypelist.Add(sd.Type);
sd = sdlist[sd.ParentType];
}
//if unfiltered list contains All as a step type, include it
foreach (EPField EP in unfiltered)
{
//if unfiltered list contains All as a step type, include it
if (EP.IsValidForStepType("All"))
filtered.Add(EP);
//check for intersections between unfiltered list and step type list
if (EP.validforsteptypes.Any(steptypelist.Contains))
filtered.Add(EP);
}
return filtered;
}
// determine if the the current step should automatically be placed on the Continuous Action Summary
// Note, this logic only checks the format setting of the step. We will check the value of the Tag's Check Box later on.
public bool IncludeOnContActSum