Beispiel #1
0
        public static void WriteConfig(CapiConfig config)
        {
            var configFilePath = Path.GetFullPath(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, $@"..{Path.DirectorySeparatorChar}cfg{Path.DirectorySeparatorChar}config.json"));

            FileSystem.DirectoryExistsIfNotCreate(Path.GetFullPath(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, $@"..{Path.DirectorySeparatorChar}cfg{Path.DirectorySeparatorChar}")));
            File.WriteAllText(configFilePath, JsonConvert.SerializeObject(config, new CapiConfigJsonConverter()));
        }
Beispiel #2
0
        private void HandleDicomConf(CapiConfig conf, JToken jtoken)
        {
            // This needs extra attention because we're using a list of abstracts.
            conf.DicomConfig.LocalNode = JsonConvert.DeserializeObject <DicomConfig.DicomConfigNode>(jtoken["LocalNode"].ToString());
            var remoteNodes = JsonConvert.DeserializeObject <List <DicomConfig.DicomConfigNode> >(jtoken["RemoteNodes"].ToString());

            conf.DicomConfig.RemoteNodes = new List <IDicomNode>();
            foreach (var remoteNode in remoteNodes)
            {
                conf.DicomConfig.RemoteNodes.Add(remoteNode);
            }
        }
Beispiel #3
0
        public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
        {
            var jsonToken = JToken.Load(reader);

            var conf = CapiConfig.GenerateDefault();

            if (jsonToken["AgentDbConnectionString"] != null)
            {
                conf.AgentDbConnectionString = jsonToken["AgentDbConnectionString"].ToString();
            }
            if (jsonToken["Binaries"] != null)
            {
                conf.Binaries = jsonToken["Binaries"].ToObject <Binaries>();
            }
            if (jsonToken["DefaultRecipePath"] != null)
            {
                conf.DefaultRecipePath = jsonToken["DefaultRecipePath"].ToString();
            }
            if (jsonToken["DicomConfig"] != null)
            {
                HandleDicomConf(conf, jsonToken["DicomConfig"]);
            }
            if (jsonToken["Hl7ProcessPath"] != null)
            {
                conf.Hl7ProcessPath = jsonToken["Hl7ProcessPath"].ToString();
            }
            if (jsonToken["ProcessCasesAddedByHL7"] != null)
            {
                conf.ProcessCasesAddedByHL7 = jsonToken["ProcessCasesAddedByHL7"].ToObject <bool>();
            }
            if (jsonToken["ManualProcessPath"] != null)
            {
                conf.ManualProcessPath = jsonToken["ManualProcessPath"].ToString();
            }
            if (jsonToken["ProcessCasesAddedManually"] != null)
            {
                conf.ProcessCasesAddedManually = jsonToken["ProcessCasesAddedManually"].ToObject <bool>();
            }
            if (jsonToken["RunInterval"] != null)
            {
                conf.RunInterval = jsonToken["RunInterval"].ToString();
            }
            if (jsonToken["ImagePaths"] != null)
            {
                conf.ImagePaths = jsonToken["ImagePaths"].ToObject <ImagePaths>();
            }

            return(conf);
        }
Beispiel #4
0
        public static Recipe Default()
        {
            CapiConfig conf = CapiConfig.GetConfig();

            string sourceAet = "";
            string destAet   = "";

            if (conf.DicomConfig?.RemoteNodes != null && conf.DicomConfig.RemoteNodes.Count > 0)
            {
                sourceAet = conf.DicomConfig.RemoteNodes[0].AeTitle;
                if (conf.DicomConfig.RemoteNodes.Count > 1)
                {
                    destAet = conf.DicomConfig.RemoteNodes[1].AeTitle;
                }
                else
                {
                    destAet = sourceAet;
                }
            }

            // By default we will match any of the following series.
            const string SERIES_DESC = "flair sag;flair sag 3d;t2 sag flair;flair sag fs;flair sag 3d - t2 space da-fl;3d sag flair fs;t2 sag flair 3d;flair 3d t2_spc_irprep_ns_sag_p2_da-fl_iso;3d flair_sag_p3_iso;3d t2 flair sag;t2_spc_irprep_ns_sag_p2_da-fl_iso;flair 3d;t2_3d_sag flair iso;sag 3d flair;t2 sag flair 3d;sag 3d flair";

            return(new Recipe()
            {
                SourceAet = sourceAet,
                PatientId = "",
                PatientFullName = "",
                PatientBirthDate = "",
                CurrentAccession = "",
                PriorAccession = "",
                ExtractBrain = true,
                RegisterTo = RegisterToOption.CURRENT,
                BiasFieldCorrection = true,
                CurrentSeriesCriteria = new List <SeriesSelectionCriteria>(new[] { new SeriesSelectionCriteria()
                                                                                   {
                                                                                       PriorStudyIndex = 0,            // 0-based index i.e. 0=most recent, 1=second most recent
                                                                                       MostRecentPriorStudy = false,   // overrides PriorStudyIndex if true; true equals PriorStudyIndex of 0
                                                                                       OldestPriorStudy = false,       // overrides PriorStudyIndex if true
                                                                                       CutOffPeriodValueInMonths = "", // leave blank to include all dates
                                                                                       StudyDescription = "demyelin",
                                                                                       StudyDescriptionOperand = Common.StringOperand.Contains,
                                                                                       StudyDate = "",
                                                                                       StudyDateOperand = Common.DateOperand.Before,
                                                                                       SeriesDescription = SERIES_DESC,
                                                                                       SeriesDescriptionOperand = Common.StringOperand.OccursIn,
                                                                                       SeriesDescriptionDelimiter = ";"
                                                                                   } }),
                PriorSeriesCriteria = new List <SeriesSelectionCriteria>(new[] { new SeriesSelectionCriteria()
                                                                                 {
                                                                                     PriorStudyIndex = 0,            // 0-based index i.e. 0=most recent, 1=second most recent
                                                                                     MostRecentPriorStudy = false,   // overrides PriorStudyIndex if true; true equals PriorStudyIndex of 0
                                                                                     OldestPriorStudy = false,       // overrides PriorStudyIndex if true
                                                                                     CutOffPeriodValueInMonths = "", // leave blank to include all dates
                                                                                     StudyDescription = "",
                                                                                     StudyDescriptionOperand = Common.StringOperand.Contains,
                                                                                     StudyDate = "",
                                                                                     StudyDateOperand = Common.DateOperand.Before,
                                                                                     SeriesDescription = SERIES_DESC,
                                                                                     SeriesDescriptionOperand = Common.StringOperand.OccursIn,
                                                                                     SeriesDescriptionDelimiter = ";"
                                                                                 } }),
                CompareSettings = new CompareSettings()
                {
                    CompareIncrease = true,
                    CompareDecrease = true,
                    BackgroundThreshold = 10,
                    MinRelevantStd = -1,
                    MaxRelevantStd = 5,
                    MinChange = 0.8f,
                    MaxChange = 5,
                    GenerateHistogram = true
                },
                OutputSettings = new OutputSettings()
                {
                    ResultsDicomSeriesDescription = "VisTarsier Results",
                    ReslicedDicomSeriesDescription = "VisTarsier Resliced",
                    FilesystemDestinations = new List <string>(),
                    OnlyCopyResults = false,
                    DicomDestinations = new List <string> (new[] { destAet })
                }
            });
        }