/// <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); } } }
/// <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); } } }
/// <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); } }
/// <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); } } }
/// <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); } } }
/// <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); } } }
/// <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); } } }