Esempio n. 1
0
        /// <summary> Creates and writes source code for all Messages and Groups.</summary>
        public static void makeAll(String baseDirectory, String version)
        {
            //get list of messages ...
            using (OleDbConnection conn = NormativeDatabase.Instance.Connection)
            {
                String       sql  = getMessageListQuery(version);
                OleDbCommand stmt = SupportClass.TransactionManager.manager.CreateStatement(conn);
                OleDbCommand temp_OleDbCommand;
                temp_OleDbCommand             = stmt;
                temp_OleDbCommand.CommandText = sql;
                OleDbDataReader rs       = temp_OleDbCommand.ExecuteReader();
                ArrayList       messages = new ArrayList();
                ArrayList       chapters = new ArrayList();
                while (rs.Read())
                {
                    messages.Add(Convert.ToString(rs[1 - 1]));
                    chapters.Add(Convert.ToString(rs[2 - 1]));
                }
                rs.Close();
                NormativeDatabase.Instance.returnConnection(conn);

                if (messages.Count == 0)
                {
                    log.Warn("No version " + version + " messages found in database " + conn.Database);
                }

                for (int i = 0; i < messages.Count; i++)
                {
                    string message = (String)messages[i];
                    string chapter = (String)chapters[i];
                    make(message, baseDirectory, chapter, version);
                }
            }
        }
Esempio n. 2
0
        /// <summary> Creates and writes source code for all Messages and Groups.</summary>
        public static void MakeAll(string baseDirectory, string version)
        {
            // get list of messages ...
            using (var conn = NormativeDatabase.Instance.Connection)
            {
                var       sql  = GetMessageListQuery(version);
                var       stmt = TransactionManager.Manager.CreateStatement(conn);
                DbCommand temp_OleDbCommand;
                temp_OleDbCommand             = stmt;
                temp_OleDbCommand.CommandText = sql;
                var rs       = temp_OleDbCommand.ExecuteReader();
                var messages = new ArrayList();
                var chapters = new ArrayList();
                while (rs.Read())
                {
                    messages.Add(Convert.ToString(rs[1 - 1]));
                    chapters.Add(Convert.ToString(rs[2 - 1]));
                }

                rs.Close();
                NormativeDatabase.Instance.ReturnConnection(conn);

                if (messages.Count == 0)
                {
                    Log.Warn("No version " + version + " messages found in database " + conn.Database);
                }

                for (var i = 0; i < messages.Count; i++)
                {
                    var message = (string)messages[i];
                    var chapter = (string)chapters[i];
                    Make(message, baseDirectory, chapter, version);
                }
            }
        }
Esempio n. 3
0
        /// <summary>
        /// Creates source code for a specific message structure and writes it under the specified
        /// directory. throws IllegalArgumentException if there is no message structure for this message
        /// in the normative database.
        /// </summary>
        ///
        /// <param name="message">          The message. </param>
        /// <param name="baseDirectory">    Pathname of the base directory. </param>
        /// <param name="chapter">          The chapter. </param>
        /// <param name="version">          The version. </param>

        public static void make(
            System.String message,
            System.String baseDirectory,
            System.String chapter,
            System.String version)
        {
            try
            {
                SegmentDef[] segments = getSegments(message, version);
                //System.out.println("Making: " + message + " with " + segments.length + " segments (not writing message code - just groups)");

                GroupDef        group    = GroupGenerator.getGroupDef(segments, null, baseDirectory, version, message);
                IStructureDef[] contents = group.Structures;

                //make base directory
                if (!(baseDirectory.EndsWith("\\") || baseDirectory.EndsWith("/")))
                {
                    baseDirectory = baseDirectory + "/";
                }

                System.IO.FileInfo targetDir =
                    SourceGenerator.makeDirectory(
                        baseDirectory + PackageManager.GetVersionPackagePath(version) + "Message");
                System.Console.Out.WriteLine("Writing " + message + " to " + targetDir.FullName);
                using (
                    System.IO.StreamWriter out_Renamed =
                        new System.IO.StreamWriter(targetDir.FullName + "/" + message + ".cs"))
                {
                    out_Renamed.Write(makePreamble(contents, message, chapter, version));
                    out_Renamed.Write(makeConstructor(contents, message, version));
                    for (int i = 0; i < contents.Length; i++)
                    {
                        out_Renamed.Write(GroupGenerator.makeAccessor(group, i));
                    }

                    //add implementation of model.control interface, if any
                    out_Renamed.Write("}\r\n"); //End class
                    out_Renamed.Write("}\r\n"); //End namespace
                }
            }
            catch (System.Exception e)
            {
                log.Error("Error while creating source code", e);

                log.Warn(
                    "Warning: could not write source code for message structure " + message + " - "
                    + e.GetType().FullName + ": " + e.Message);
            }
        }
Esempio n. 4
0
        /// <summary> <p>Creates skeletal source code (without correct data structure but no business
        /// logic) for all segments found in the normative database.  </p>
        /// </summary>
        public static void MakeAll(string baseDirectory, string version)
        {
            // make base directory
            if (!(baseDirectory.EndsWith("\\") || baseDirectory.EndsWith("/")))
            {
                baseDirectory = baseDirectory + "/";
            }

            var targetDir =
                SourceGenerator.MakeDirectory(baseDirectory + PackageManager.GetVersionPackagePath(version) + "Segment");

            // get list of data types
            var conn = NormativeDatabase.Instance.Connection;
            var sql  =
                "SELECT seg_code, [section] from HL7Segments, HL7Versions where HL7Segments.version_id = HL7Versions.version_id AND hl7_version = '" +
                version + "'";
            DbCommand temp_OleDbCommand = conn.CreateCommand();

            temp_OleDbCommand.Connection  = conn;
            temp_OleDbCommand.CommandText = sql;
            var rs = temp_OleDbCommand.ExecuteReader();

            var segments = new ArrayList();

            while (rs.Read())
            {
                var segName = Convert.ToString(rs[1 - 1]);
                if (char.IsLetter(segName[0]))
                {
                    segments.Add(AltSegName(segName));
                }
            }

            temp_OleDbCommand.Dispose();
            NormativeDatabase.Instance.ReturnConnection(conn);

            if (segments.Count == 0)
            {
                Log.Warn($"No version {version} segments found in database {conn.Database}");
            }

            for (var i = 0; i < segments.Count; i++)
            {
                try
                {
                    var seg    = (string)segments[i];
                    var source = MakeSegment(seg, version);
                    using (var w = new StreamWriter(targetDir.ToString() + @"\" + GetSpecialFilename(seg) + ".cs"))
                    {
                        w.Write(source);
                        w.Write("}");
                    }
                }
                catch (Exception e)
                {
                    Console.Error.WriteLine($"Error creating source code for all segments: {e.Message}");
                    SupportClass.WriteStackTrace(e, Console.Error);
                }
            }
        }
Esempio n. 5
0
        /// <summary>
        /// Creates skeletal source code (without correct data structure but no business logic) for all
        /// data types found in the normative database.  For versions > 2.2, Primitive data types are not
        /// generated, because they are coded manually (as of HAPI 0.3).
        /// </summary>
        ///
        /// <param name="baseDirectory">    Pathname of the base directory. </param>
        /// <param name="version">          the HL7 version of the intended data type. </param>

        public static void makeAll(System.String baseDirectory, System.String version)
        {
            //make base directory
            if (!(baseDirectory.EndsWith("\\") || baseDirectory.EndsWith("/")))
            {
                baseDirectory = baseDirectory + "/";
            }
            System.IO.FileInfo targetDir =
                SourceGenerator.makeDirectory(
                    baseDirectory + PackageManager.GetVersionPackagePath(version) + "Datatype");
            SourceGenerator.makeDirectory(baseDirectory + PackageManager.GetVersionPackagePath(version) + "Datatype");
            //get list of data types
            System.Collections.ArrayList      types = new System.Collections.ArrayList();
            System.Data.OleDb.OleDbConnection conn  = NormativeDatabase.Instance.Connection;
            System.Data.OleDb.OleDbCommand    stmt  = SupportClass.TransactionManager.manager.CreateStatement(conn);
            //get normal data types ...
            System.Data.OleDb.OleDbCommand temp_OleDbCommand;
            temp_OleDbCommand             = stmt;
            temp_OleDbCommand.CommandText =
                "select data_type_code from HL7DataTypes, HL7Versions where HL7Versions.version_id = HL7DataTypes.version_id and HL7Versions.hl7_version = '"
                + version + "'";
            System.Data.OleDb.OleDbDataReader rs = temp_OleDbCommand.ExecuteReader();
            while (rs.Read())
            {
                types.Add(System.Convert.ToString(rs[1 - 1]));
            }
            rs.Close();
            //get CF, CK, CM, CN, CQ sub-types ...

            System.Data.OleDb.OleDbCommand temp_OleDbCommand2;
            temp_OleDbCommand2             = stmt;
            temp_OleDbCommand2.CommandText = "select data_structure from HL7DataStructures, HL7Versions where ("
                                             + "data_type_code  = 'CF' or " + "data_type_code  = 'CK' or "
                                             + "data_type_code  = 'CM' or " + "data_type_code  = 'CN' or "
                                             + "data_type_code  = 'CQ') and "
                                             + "HL7Versions.version_id = HL7DataStructures.version_id and  HL7Versions.hl7_version = '"
                                             + version + "'";
            rs = temp_OleDbCommand2.ExecuteReader();
            while (rs.Read())
            {
                types.Add(System.Convert.ToString(rs[1 - 1]));
            }

            stmt.Dispose();
            NormativeDatabase.Instance.returnConnection(conn);

            System.Console.Out.WriteLine("Generating " + types.Count + " datatypes for version " + version);
            if (types.Count == 0)
            {
                log.Warn("No version " + version + " data types found in database " + conn.Database);
            }

            for (int i = 0; i < types.Count; i++)
            {
                if (!((String)types[i]).Equals("*"))
                {
                    make(targetDir, (System.String)types[i], version);
                }
            }
        }
Esempio n. 6
0
        /// <summary>
        /// <p>Creates skeletal source code (without correct data structure but no business logic) for
        /// all segments found in the normative database.  </p>
        /// </summary>
        ///
        /// <param name="baseDirectory">    Pathname of the base directory. </param>
        /// <param name="version">          The version. </param>

        public static void makeAll(System.String baseDirectory, System.String version)
        {
            //make base directory
            if (!(baseDirectory.EndsWith("\\") || baseDirectory.EndsWith("/")))
            {
                baseDirectory = baseDirectory + "/";
            }
            System.IO.FileInfo targetDir =
                SourceGenerator.makeDirectory(baseDirectory + PackageManager.GetVersionPackagePath(version) + "Segment");

            //get list of data types
            System.Data.OleDb.OleDbConnection conn = NormativeDatabase.Instance.Connection;
            System.String sql =
                "SELECT seg_code, [section] from HL7Segments, HL7Versions where HL7Segments.version_id = HL7Versions.version_id AND hl7_version = '"
                + version + "'";
            System.Data.OleDb.OleDbCommand temp_OleDbCommand = new System.Data.OleDb.OleDbCommand();
            temp_OleDbCommand.Connection  = conn;
            temp_OleDbCommand.CommandText = sql;
            System.Data.OleDb.OleDbDataReader rs = temp_OleDbCommand.ExecuteReader();

            System.Collections.ArrayList segments = new System.Collections.ArrayList();
            while (rs.Read())
            {
                System.String segName = System.Convert.ToString(rs[1 - 1]);
                if (System.Char.IsLetter(segName[0]))
                {
                    segments.Add(altSegName(segName));
                }
            }
            temp_OleDbCommand.Dispose();
            NormativeDatabase.Instance.returnConnection(conn);

            if (segments.Count == 0)
            {
                log.Warn("No version " + version + " segments found in database " + conn.Database);
            }

            for (int i = 0; i < segments.Count; i++)
            {
                try
                {
                    System.String seg    = (System.String)segments[i];
                    System.String source = makeSegment(seg, version);
                    using (
                        System.IO.StreamWriter w =
                            new System.IO.StreamWriter(targetDir + @"\" + GetSpecialFilename(seg) + ".cs"))
                    {
                        w.Write(source);
                        w.Write("}");
                    }
                }
                catch (System.Exception e)
                {
                    System.Console.Error.WriteLine("Error creating source code for all segments: " + e.Message);
                    SupportClass.WriteStackTrace(e, Console.Error);
                }
            }
        }
Esempio n. 7
0
        /// <summary> Creates skeletal source code (without correct data structure but no business
        /// logic) for all data types found in the normative database.  For versions > 2.2, Primitive data types
        /// are not generated, because they are coded manually (as of HAPI 0.3).
        /// </summary>
        public static void MakeAll(string baseDirectory, string version)
        {
            // make base directory
            if (!(baseDirectory.EndsWith("\\") || baseDirectory.EndsWith("/")))
            {
                baseDirectory = baseDirectory + "/";
            }

            var targetDir =
                SourceGenerator.MakeDirectory(baseDirectory + PackageManager.GetVersionPackagePath(version) + "Datatype");

            SourceGenerator.MakeDirectory(baseDirectory + PackageManager.GetVersionPackagePath(version) + "Datatype");

            // get list of data types
            var types = new ArrayList();
            var conn  = NormativeDatabase.Instance.Connection;
            var stmt  = TransactionManager.Manager.CreateStatement(conn);

            // get normal data types ...
            DbCommand temp_OleDbCommand;

            temp_OleDbCommand             = stmt;
            temp_OleDbCommand.CommandText =
                "select data_type_code from HL7DataTypes, HL7Versions where HL7Versions.version_id = HL7DataTypes.version_id and HL7Versions.hl7_version = '" +
                version + "'";
            var rs = temp_OleDbCommand.ExecuteReader();

            while (rs.Read())
            {
                types.Add(Convert.ToString(rs[1 - 1]));
            }

            rs.Close();

            // get CF, CK, CM, CN, CQ sub-types ...
            DbCommand temp_OleDbCommand2;

            temp_OleDbCommand2             = stmt;
            temp_OleDbCommand2.CommandText = "select data_structure from HL7DataStructures, HL7Versions where (" +
                                             "data_type_code  = 'CF' or " + "data_type_code  = 'CK' or " +
                                             "data_type_code  = 'CM' or " + "data_type_code  = 'CN' or " +
                                             "data_type_code  = 'CQ') and " +
                                             "HL7Versions.version_id = HL7DataStructures.version_id and  HL7Versions.hl7_version = '" +
                                             version + "'";
            rs = temp_OleDbCommand2.ExecuteReader();
            while (rs.Read())
            {
                types.Add(Convert.ToString(rs[1 - 1]));
            }

            stmt.Dispose();
            NormativeDatabase.Instance.ReturnConnection(conn);

            Console.Out.WriteLine("Generating " + types.Count + " datatypes for version " + version);
            if (types.Count == 0)
            {
                Log.Warn("No version " + version + " data types found in database " + conn.Database);
            }

            foreach (var type in types.Cast <string>())
            {
                if (!type.Equals("*"))
                {
                    Make(targetDir, type, version);
                }
            }
        }