예제 #1
0
파일: RegionArray.cs 프로젝트: OSEHRA/mdws
 public RegionArray(Region[] mdoRegions)
 {
     if (mdoRegions == null || mdoRegions.Length == 0)
     {
         count = 0;
         return;
     }
     regions = new RegionTO[mdoRegions.Length];
     for (int i = 0; i < mdoRegions.Length; i++)
     {
         regions[i] = new RegionTO(mdoRegions[i]);
     }
     count = mdoRegions.Length;
 }
예제 #2
0
파일: SitesLib.cs 프로젝트: OSEHRA/mdws
        public SiteTO addSite(string id, string name, string datasource, string port, string modality, string protocol, string region)
        {
            SiteTO result = new SiteTO();
            Site site = new Site();
            DataSource source = new DataSource();
            int iPort = 0;
            int iRegion = 0;

            if (!mySession.MdwsConfiguration.IsProduction)
            {
                result.fault = new FaultTO("You may not add data sources to non-production MDWS installations");
            }
            else if (String.IsNullOrEmpty(id) || String.IsNullOrEmpty(name) || String.IsNullOrEmpty(datasource) ||
                String.IsNullOrEmpty(port) || String.IsNullOrEmpty(modality) || String.IsNullOrEmpty(protocol) ||
                String.IsNullOrEmpty(region))
            {
                result.fault = new FaultTO("Must supply all parameters");
            }
            else if (mySession.SiteTable.Sites.ContainsKey(id))
            {
                result.fault = new FaultTO("That site id is in use", "Choose a different site id");
            }
            else if (!Int32.TryParse(port, out iPort))
            {
                result.fault = new FaultTO("Non-numeric port", "Provide a numeric value for the port");
            }
            else if (!Int32.TryParse(region, out iRegion))
            {
                result.fault = new FaultTO("Non-numeric region", "Provide a numeric value for the region");
            }
            else if (modality != "HIS")
            {
                result.fault = new FaultTO("Only HIS modality currently supported", "Use 'HIS' as your modality");
            }
            else if (protocol != "VISTA")
            {
                result.fault = new FaultTO("Only VISTA protocol currently supported", "Use 'VISTA' as your protocol");
            }

            if(result.fault != null)
            {
                return result;
            }

            source.Port = iPort;
            source.Modality = modality;
            source.Protocol = protocol;
            source.Provider = datasource;
            source.SiteId = new SiteId(id, name);

            site.Sources = new DataSource[1];
            site.Sources[0] = source;
            site.RegionId = region;
            site.Name = name;
            site.Id = id;

            if(!mySession.SiteTable.Regions.ContainsKey(iRegion))
            {
                Region r = new Region();
                r.Id = iRegion;
                r.Name = "Region " + region;
                r.Sites = new ArrayList();
                mySession.SiteTable.Regions.Add(iRegion, r);
            }
            ((Region)mySession.SiteTable.Regions[iRegion]).Sites.Add(site);
            mySession.SiteTable.Sites.Add(id, site);
            mySession.SiteTable.Sources.Add(site.Sources[0]);
            result = new SiteTO(site);
            return result;
        }
예제 #3
0
파일: SiteTable.cs 프로젝트: OSEHRA/mdo
        private void parse(String filepath)
        {
            if (String.IsNullOrEmpty(filepath))
            {
                throw new ArgumentNullException("No source for site table");
            }

            Region currentRegion = null;
            ArrayList currentSites = null;
            Site currentSite = null;
            DataSource dataSource = null;
            ArrayList currentSources = null;
            #if DEBUG
            string currentDirStr = Directory.GetCurrentDirectory();
            #endif

            XmlReader reader = null;
            try
            {
                reader = new XmlTextReader(filepath);
                while (reader.Read())
                {
                    switch ((int)reader.NodeType)
                    {
                        case (int)XmlNodeType.Element:
                            String name = reader.Name;
                            if (name == "VhaVisn")
                            {
                                currentRegion = new Region();
                                currentRegion.Id = Convert.ToInt32(reader.GetAttribute("ID"));
                                currentRegion.Name = reader.GetAttribute("name");
                                currentSites = new ArrayList();
                            }
                            else if (name == "VhaSite")
                            {
                                currentSite = new Site();
                                currentSite.Id = reader.GetAttribute("ID");
                                currentSite.Name = reader.GetAttribute("name");
                                String displayName = reader.GetAttribute("displayname");
                                if (displayName == null)
                                {
                                    displayName = currentSite.Name;
                                }
                                currentSite.DisplayName = displayName;
                                currentSite.Moniker = reader.GetAttribute("moniker");
                                currentSite.RegionId = Convert.ToString(currentRegion.Id);
                                currentSources = new ArrayList();
                                currentSites.Add(currentSite);
                            }
                            else if (name == "DataSource")
                            {
                                dataSource = new DataSource();
                                KeyValuePair<string, string> kvp =
                                    new KeyValuePair<string, string>(currentSite.Id, currentSite.Name);
                                dataSource.SiteId = new SiteId(kvp.Key, kvp.Value);
                                dataSource.Modality = reader.GetAttribute("modality");
                                dataSource.Protocol = reader.GetAttribute("protocol");
                                dataSource.Provider = reader.GetAttribute("source");
                                dataSource.Status = reader.GetAttribute("status");
                                String sTmp = reader.GetAttribute("port");
                                if (String.IsNullOrEmpty(sTmp)) // StringUtils.isEmpty(sTmp))
                                {
                                    if (String.Equals(dataSource.Protocol, "VISTA", StringComparison.CurrentCultureIgnoreCase))
                                    {
                                        dataSource.Port = 9200;
                                    }
                                    else if (String.Equals(dataSource.Protocol, "HL7", StringComparison.CurrentCultureIgnoreCase))
                                    {
                                        dataSource.Port = 5000;
                                    }
                                }
                                else
                                {
                                    dataSource.Port = Convert.ToInt32(sTmp);
                                }
                                sTmp = reader.GetAttribute("provider");
                                if (sTmp != null)
                                {
                                    dataSource.Provider = sTmp;
                                }
                                sTmp = reader.GetAttribute("description");
                                if (sTmp != null)
                                {
                                    dataSource.Description = sTmp;
                                }
                                sTmp = reader.GetAttribute("vendor");
                                if (sTmp != null)
                                {
                                    dataSource.Vendor = sTmp;
                                }
                                sTmp = reader.GetAttribute("version");
                                if (sTmp != null)
                                {
                                    dataSource.Version = sTmp;
                                }
                                sTmp = reader.GetAttribute("context");
                                if (sTmp != null)
                                {
                                    dataSource.Context = sTmp;
                                }
                                sTmp = reader.GetAttribute("connectionString");
                                if (!String.IsNullOrEmpty(sTmp))
                                {
                                    dataSource.ConnectionString = sTmp;
                                }

                                currentSources.Add(dataSource);
                                sources.Add(dataSource);
                            }
                            break;
                        case (int)XmlNodeType.EndElement:
                            name = reader.Name;
                            if (name == "VhaVisn")
                            {
                                currentRegion.Sites = currentSites;
                                regions.Add(currentRegion.Id, currentRegion);
                            }
                            else if (name == "VhaSite")
                            {
                                currentSite.Sources = (DataSource[])currentSources.ToArray(typeof(DataSource));
                                sites.Add(currentSite.Id, currentSite);
                            }
                            break;
                    }
                }
            }
            catch (Exception) { /* do nothing */ }
            finally
            {
                if (reader != null)
                {
                    reader.Close();
                }
            }
        }
예제 #4
0
파일: RegionTO.cs 프로젝트: OSEHRA/mdws
 public RegionTO(Region mdoRegion)
 {
     this.name = mdoRegion.Name;
     this.id = Convert.ToString(mdoRegion.Id);
     this.sites = new SiteArray(mdoRegion.Sites);
 }