Symphonia 3.8 Service Pack 7 Release Notes

21 August 2007

Features in Service Pack 7

New HL7 2.5.1 and 2.6 Libraries

Symphonia 3.8.7 now includes libraries for the current drafts of HL7 v2.5.1 and HL7 v2.6.

New X12 Libraries

Symphonia 3.8.7 now includes new X12 libraries for versions 4022 through 5022.

New EDIFACT Libraries

Symphonia 3.8.7 now includes new EDIFACT libraries for versions D03B through D06B.

Bug Fixes in Service Pack 7

EDI Designer

SymptomResolutionReference
EDI Designer crashes or hangs after deleting the last message set
After deleting the last message set in a definition, EDI Designer will frequently crash or hang when subsequently using any plugins.
All the plugins are designed to operate with at least one message set present, so EDI Designer now prevents the last message set from being deleted.
  • REN-4184
Invalid library names are used by default in the DAG generator
Load some HL7 messages from a library and generate a DAG using all the defaults. This generates a type library with a fullstop '.' in the name, which then cannot be loaded into Visual C++.
This bug has been fixed to only allow valid characters in a library name.
  • REN-4072
Symphonia .NET Component Generator fails to run immediately after installation
After an installation of Symphonia, the .NET Component Generator would either fail to load correctly when starting EDI Message Designer, or would fail to generate an assembly due to a file not being found.
The .NET Component Generator was not registered correctly by the installer and did not have all its components in the required directory. This bug has been fixed.
  • REN-6333

EDI Explorer

SymptomResolutionReference
Cannot use ports higher than 32767 in the EDI Explorer TCP communications
In EDI Explorer, the spin control used to modify the port cannot be used to select port numbers greater than 32767.
The default spin control only allows 16-bit values, and so consequently only allowed values between -32768 and 32767. This bug has been fixed.
  • REN-4837
Batch import of flatwire messages didn't always correctly separate messages separated by a blank line
The batch import functionality of EDI Explorer allows a file containing multiple messages to be opened, and split into each of the constituent messages. This worked by either separately on a blank line (the default), or by using a user-defined sequence. However, it failed to work if the messages were separated by a line containing only a carriage return (0D) character.
The blank line detection has been improved to handle the sequences of 0D0A, 0D, and 0A.
  • REN-4849
EDI Explorer crashes frequently on Windows Vista
EDI Explorer crashes frequently when running it on Windows Vista.
This bug has been fixed.
    Various fonts in EDI Explorer are unreadable with Clear Type on
    The EDI Explorer tree view font, message view font, and log view font can be unreadable when the system wide Clear Type setting is on.
    This bug has been fixed.
    • REN-4026
    The EDI Explorer event view overwrites itself when scrolling
    Once a number of events have been added to the event view, scrolling it causes it to redraw over the top of itself, making it unreadable.
    This bug has been fixed.
    • REN-4833
    ACK scripting doesn't use the GetACKMessageName function
    EDI Explorer allows VBScript or JavaScript to be used to control the auto-acknowledgment functionality. However, it never seems to call the GetACKMessageName function which should be called to determine the name of the acknowledgment message to create. This means that it is not possible to customize the acknowledgment message type.
    This bug has been fixed.
    • REN-6121

    Map Designer

    SymptomResolutionReference
    The Mapper Debugger skips over an entire statement when single-step debugging
    If the mapping code contains an if statement performing an isnull check, and the specified component actually is null, the entire if statement is skipped over when single-step debugging the code. It works correctly if the component is not null, or if running the mapping normally.
    A bug in the Mapper Debugger tried to display the specified component just before running the 'if' statement. This failed (as the component was null), and the consequence was that the entire statement was skipped. This bug has been fixed.
    • REN-5214
    Mapper output view is unreadable with Clear Type on
    The Mapper output view font is unreadable when the system-wide Clear Type setting is on.
    This bug has been fixed.
    • REN-5803
    Conditional expression was not usable in the Mapper
    Using the conditional expression (a ? b : c) caused a compilation error in the mapping code, even though it used to work previously.
    This bug has been fixed.
    • REN-6030
    Loading an XSD with a complexType that extends a sequence containing just the any element crashes the Map Designer
    If an XSD containing a complexType that extends a sequence containing just the any element is imported into the Map Designer, it will crash during the import.
    Internally the any element gained a reference to a temporary object which was cleaned up. The validate subsequently accessed the deleted object, causing a crash. This bug has been fixed.
    • REN-5980
    Unable to load XSD as 'Content of complexType does not validly restrict the base type'
    An XSD containing a complexType that restricts another complexType just containing the any element cannot be imported into the Map Designer due to reported errors in the schema.
    This was due to the Map Designer not handling the '##other' namespace correctly. This bug has been fixed.
    • REN-4720
    Map Designer crashes when trying to test a message definition
    In some unusual circumstances the Map Designer could attempt to load a message definition using the incorrect parsing engine. In some cases this would a buffer overflow in the XML parsing engine and so crash the Map Designer.
    This bug has been fixed.
    • REN-834

    EDI Engine

    SymptomResolutionReference
    Java EDI engine incorrectly reports the index of a parsed segment
    In a particular scenario the EDI parsing engine would report the index of a specific segment incorrectly. This could then cause unexpected behavior if the application running Symphonia relied on the index. In particular, this behavior could cause an infinite loop in the Rhapsody engine. Specifically this scenario required an unexpected segment to be found in middle of a group of optional segments, where at that point in the parsing, those optional segments could not be deterministically placed in a specific location in the message.
    With a particular message definition and message, the Java EDI engine could attach the same segment to the message twice. The first time it was attached correctly, but the second time it was attached as a generic segment (due to the non-determinism at that particular point during the parsing). Attaching it as a generic segment overrode its assigned index, causing it to be reported incorrectly. The parsing bug has been fixed, so the segment is now only attached once.
    • REN-4815
    OutOfMemoryError when parsing an HL7 message when the User1 separator is not defined
    When using the Java engine to parse HL7 messages using a modified message definition, an OutOfMemoryError can occur during the parse.
    Several of the HL7 primitive types (FT & TX) are configured by default to use the User1 separator (a backslash). However, if the User1 separator is explicitly removed, an error would occur during the parse. Due to a separate bug, the parse would then be repeated, eventually causing an OutOfMemoryError. Both bugs have been fixed.
    • REN-4260
    An invalid hex character for a separator causes an infinite loop when loading a definition
    If a message definition uses an invalid hex escape (such as '\x0' instead of '\x00'), an infinite loop (hang) occurs while loading the message definition.
    This bug has been fixed so partial hex escapes are now handled correctly where possible, and an infinite loop doesn't occur when it is not.
    • REN-4874
    Java engine references the incorrect version of Jakarta regexp in the manifest
    The Java engine referenced version 1.2 of the Jakarta regular expression library in its manifest instead of version 1.3. This meant that the wrong version of the regular expression library was loaded when using the engine in some application servers. This was relevant as version 1.2 of the library had some serious threading bugs which were fixed in version 1.3.
    This bug has been fixed.
    • REN-5023
    The C++ engine crashes when parsing a message with unexpected segments and situational rules
    Under some circumstances the C++ engine can crash when parsing a message that contains unexpected segments that use situational rules.
    This bug has been fixed.
    • REN-4543
    Names of fields in unknown segments have an extra '1' at the end
    In the .NET and Java engines, fields in unknown segments are named incorrectly, and have an extra '1' at the end of their name. For example, 'Field01', 'Field11', 'Field21', etc.
    This bug has been fixed.
      .NET parsing engine takes a long time to parse and validate messages with very large fields
      The .NET parsing engine takes a very long time to parse and validate messages, when those messages contain very large fields that didn't have a maximum length specified.
      This bug has been fixed.

        Mapping Engine

        SymptomResolutionReference
        Java and C++ Mappers give different results using setEncodedValue()
        The Java and C++ (GUI) Mappers give different output results when the mapper setEncodedValue() function is used to set the output of a repeating field or composite.
        The Java Mapper failed to clear an internal cache of the existing items within the repeat when setEncodedValue() was called. Consequently the output was not updated as it used the existing cache (for performance reasons) instead of the real values. The bug has been fixed so that the cache is cleared whenever a change like this is made.
        • REN-4875

        Features in Service Pack 6

        Visual Studio 2005 C++ Libraries

        Symphonia 3.8.6 includes C++ libraries compiled with Visual Studio 2005 (in addition to the libraries compiled with Visual Studio 2003), allowing either C++ development environment to be used.

        Enhancements in Service Pack 6

        Map Designer

        Bug Fixes in Service Pack 6

        Installer

        SymptomResolutionReference
        The .NET component generation plugin is not registered correctly by the installer
        In some circumstances the Symphonia .NET Component Generation plugin is not registered correctly in the installer, and so is not available when running EDI Message Designer. This was worked around by manually registering the component.
        This bug has been fixed.

          Mapping Engine

          SymptomResolutionReference
          Mapper engine ignores validation error settings of input message definitions
          EDI Message Designer allows each type of EDI validation error to be configured as either an error, a warning, or to be ignored. When the Mapper is then used with this definition, it correctly creates the error/warning in its list. However, if the stop on errors flag is set to false, the Mapper will stop processing even if only warnings have been found.
          This bug has been fixed so that processing is only halted if errors are found (and the stop on errors flag is on).
          • REN-182

          EDI Message Designer

          SymptomResolutionReference
          Changing tabs in the field properties dialog causes the values to be reset
          The field properties dialog in EDI Message Designer has two tabs. If values are updated on the first tab, then the second tab is displayed, the newly updated values on the first tab are lost and need to be re-entered.
          This bug has been fixed.
          • REN-691
          Unable to copy and paste rows from a validation table
          If some cells from a validation table are copied and then pasted into a new validation table, all the cells tend to end up in the same cell in the new table. Copying and pasting the values from a table in Word works correctly however.
          This bug has been fixed.
          • REN-684

          Bug Fixes in Service Pack 5

          Map Designer

          SymptomResolutionReference
          "Could not load PCF from definition file" when running mapping
          The Map Designer compiles a mapping definition, but whenever it is run, a fatal error is generated saying that the PCF could not be loaded from the definition file.
          This problem occurred when the input or output definition type (not just the definition file) is changed, but has now been fixed.
          • Internal - DCL#7158
          Unable to import XSD with abstract type implementations in a different schema
          When importing an XSD into the Map Designer, it says that it cannot find any implementations of an abstract type. These implementations do exist in the schema-set being imported, but are not in the same schema as the abstract type.
          This bug has been fixed.
          • Internal - DCL#14219
          Unable to import schema with the "mixed" attribute
          A schema with the "mixed" attribute used on a complexType with simpleContent cannot be imported into the Map Designer.
          This bug has been fixed.
          • Internal - DCL#12946
          Attributes on the base complexType are not found
          When importing a schema that uses a complex type extending a type defined in another schema but the same namespace, the attributes on the base type are not available for mapping.
          This bug has been fixed.
          • Internal - DCL#13421

          Bug Fixes in Service Pack 4

          Installer

          SymptomResolutionReference
          RuntimeKeyReg.exe missing from the installer
          The tool used to install a Symphonia runtime key was missing from the Symphonia installer.
          This tool is now included in the 'Redistribution' folder.
          • Internal - DCL#10991

          Map Designer

          SymptomResolutionReference
          Schemas without a default namespace fail to import
          XSD schemas that do not have a default namespace cannot be imported into the Symphonia Map Designer.
          This bug has been fixed by using the target namespace as the default if no default namespace is specified in the schema itself.
          • Internal - DCL#11838
          Map Designer ignores xmlns attributes on elements
          Elements can specify which namespace their type comes from by using the xmlns attribute, however the Map Designer ignores this attribute when importing schemas, meaning that their types cannot be found. Consequently the schemas cannot be loaded.
          This bug has been fixed so that the xmlns attribute is now used.
          • Internal - DCL#11749
          Circular includes result in duplicate element declarations
          XSD schemas are allowed to have circular includes (i.e. schema 'a' includes schema 'b', and schema 'b' includes schema 'a'), but when these are imported into the Map Designer, it complains about duplicate elements, and fails to import the schemas.
          This bug has been fixed.
          • Internal - DCL#11357
          Unable to import more than one schema with no target namespace
          If schema 'a' has target namespace 'ns', and it includes schema 'b' with no target namespace, and schema 'b' includes schema 'c', also with no target namespace, then elements in schema 'a' cannot access elements in schema 'b', even though they should be able to.
          This bug has been fixed.
          • Internal - DCL#11700
          Map Designer cannot create messages when there are no top-level elements
          If there are no top-level elements in the root schema, the Map Designer is unable to create any messages representing them in the internal Mapper structures, despite the schema importing correctly.
          This bug has been fixed by allowing the user to select from top-level complexTypes instead.
          • Internal - DCL#11335
          Changing the name of a child in a base type prevents the schema being loaded
          If a type extends another type, but renames an existing element, the Map Designer detects this as an error and refuses to load the schema. It is technically wrong, but several public schemas do this.
          The Map Designer now successfully imports these schemas, but issues a warning about this problem.
          • Internal - DCL#10689
          Cannot load schemas where a reference element uses the nillable attribute
          If a schema has an element that uses the ref attribute to identify it, and that element also uses the nillable attribute, then the Map Designer cannot load the schema. This is technically wrong, but several public schemas do this.
          The Map Designer now successfully imports these schemas, but issues a warning about this problem.
          • Internal - DCL#11177
          Cannot load schema with two imports into the same namespace
          The Map Designer cannot load a W3C schema that has two import statements that import the schemas into the same target namespace.
          This bug has been fixed.
          • Internal - DCL#11178
          Cannot load schema that imports the default namespace with providing a location
          A schema may have an import statement that references the default XML namespace but without providing a location. However, such a schema cannot be loaded into the Map Designer.
          This bug has been fixed.
          • Internal - DCL#10422
          Crash when browsing for types based on message paths
          When creating a new submap it is possible to browse for the types of the parameters. However, if the "Browse by Path" option is selected for any definitions imported from an XSD, the Map Designer will crash.
          This bug has been fixed.
          • Internal - DCL#11800
          Unable to import some schemas using abstract types
          Some schemas using abstract types cannot be imported as the Map Designer claims that it cannot find any types that extend those abstract types. However, there are such types in the schema.
          This bug was caused by a namespace problem, resulting in the subtypes not being found. This bug has been fixed.
          • Internal - DCL#12900

          Mapping Engine

          SymptomResolutionReference
          Infinite loop when calling the StrRemove() external function
          If the StrRemove() external function is called on the C++ Mapper (or in the Map Designer), and an empty string provided as the string to remove, and Mapper enters an infinte loop, hanging the application.
          This bug has been fixed.
          • Internal - DCL#11808

          EDI Engine

          SymptomResolutionReference
          NullPointerException when using generic fields in Java or .NET
          If generic segments are being used in the Java or .NET engine, some of the methods on the MessageElement API, particularly isEmpty(), cause NullPointerExceptions when called (or NullReferenceExceptions on .NET).
          This bug has been fixed.
          • Internal - DCL#12061

          Bug Fixes in Service Pack 3

          Installer

          SymptomResolutionReference
          Uninstall can delete all common shortcuts from the start menu
          When uninstalling Symphonia 3.8.2, it was possible for the uninstaller to delete all common shortcuts from the start menu.
          This bug has been fixed.
          • Internal - DCL#9204

          EDI Designer

          SymptomResolutionReference
          Some message definitions could cause EDI Designer to crash when viewing a segment or message
          Some message definitions that had been configured to display custom columns could cause EDI Designer to crash when a segment or message was viewed.
          The crash was due to certain columns being displayed multiple times. This bug has been fixed so that duplicate columns can no longer be displayed.
          • Internal - DCL#5833
          Miscenallenous HL7 library errors
          Incorrect descriptions in validation table HL700003
          Incorrect definition of ED composite
          PR1.ProcedureFunctionalType was required instead of optional
          Some fields in the OBR and OBX segments were optional instead of conditional
          These bugs have been fixed.
          • Internal - DCL#5634
          • Internal - DCL#8624
          • Internal - DCL#8553
          • Internal - DCL#5728
          Choice groups are not imported correctly from libraries
          Choice groups are not imported correctly from any library definitions. Instead they are always imported as ordered groups.
          This bug has been fixed.
          • Internal - DCL#10576

          EDI Explorer

          SymptomResolutionReference
          Acknowledgments fail to be generated using the default VB script provided
          An error in the default VB script used to generate acknowledgements meant that acknowledgments could not be generated by default for some versions of HL7.
          This bug has been fixed.
          • Internal - DCL#9640
          The autofill multiple messages dialog had a title of 'Dialog'
          The autofill multiple messages dialog had a title of 'Dialog' rather than something more descriptive.
          This bug has been fixed.
          • Internal - DCL#3862
          Explorer crashes while opening some messages structures up
          In some rare cases it was possible for Explorer to crash while expanding a parsed message structure.
          This would occur when an internal data structure got out of sync when parsing some complicated message structures. This bug has been fixed.
          • Internal - DCL#8326
          Explorer crashes while clearing the contents of a generic composite
          If a message was input parsed and it contained some generic composites, clearing them within EDI Explorer would cause it to crash.
          This bug has been fixed.
          • Internal - DCL#7480
          Saving a flatwire message makes it unloadable
          If a flatwire message is input parsed into EDI Explorer, and then the save button is pressed, the flatwire message file is overwritten and then cannot be input parsed.
          EDI Explorer was saving the message in its internal format, instead of popping up the Save As dialog. This bug has been fixed.
          • Internal - DCL#5496

          EDI Engine

          SymptomResolutionReference
          Threading bug in regular expression library
          The version of the jakarta regular expression library used by Symphonia (1.2) had a threading bug where compilation of multiple regular expressions simultaneously would cause a variety of problems. This bug is much more likely to be encountered when using Rhapsody as it loads message definitions more frequently.
          The jakarta regular expression library has been upgraded to version 1.3 which does not suffer from this threading problem.
          • Internal - DCL#9327
          Calling GetElementAt() causes validation failures on choice groups
          When the GetElementAt() method is called on a choice group it would create the element, which could subsequently cause validation errors.
          This bug has been fixed.
          • Internal - DCL#9489
          Count paths do not work when the count field is in a nested message set
          Count paths do not work correctly when the count field is in a nested message set relative to the component that it is counting.
          This bug has been fixed.
          • Internal - DCL#9523
          NullPointerException while loading a PCF
          A message definition using tagged segments but with a message containing no message items fails to load in the Java and .NET engines, causing a NullPointerException.
          This bug has been fixed.
          • Internal - DCL#7397

          Map Designer

          SymptomResolutionReference
          Upgrading message structures could change existing submaps or main maps incorrectly
          In some circumstances it was possible for the upgrade message structures functionality to cause some submaps to be promoted to main maps.
          This bug has been fixed.
          • Internal - DCL#9109
          Map Designer can corrupt an test XML file when copying it
          When an XML file is added as a test message for a mapping project, the Map Designer can corrupt this file when copying it to the input directory, so that it is no longer valid XML.
          This bug has been fixed.
          • Internal - DCL#9204
          Some large SXD files cannot be loaded into the Map Designer
          Some large SXD files cannot be imported into either the Map Designer or Rhapsody. The problem never occurs with small SXD files, and some large files still load correctly as well.
          A bug in the loading mechanism could cause a failure on some but not all large files. This bug has been fixed.
          • Internal - DCL#9128
          Submap name could be reset while editing its definition
          The name of a submap can be automatically reset to a default value when new parameters are added to it, causing existing mapping code to fail to compile.
          This bug has been fixed.
          • Internal - DCL#5569
          Error numbers are not displayed when an XSD import fails
          The Symphonia help files contain a lot of information about possible importer errors and warnings when importing W3C XML schemas. However, only the error descriptions are output to the Map Designer output window, not the error numbers. This makes it very difficult to find them in the help files.
          Importer error numbers are now displayed in the Map Designer output window.
          • Internal - DCL#10423
          Cannot import an XSD where the any type is extended
          The W3C XML schema specification allows extension of the any type, even this is not strictly required. However, the Map Designer would refuse to import schemas where the any type was extended.
          This restriction has been removed, so that it is now possible to extend the any type.
          • Internal - DCL#10419
          The same toolbar icon was used for multiple buttons
          The same toolbar icon was used to view global variables when running a mapping, and to view the entire mapping code.
          This has been fixed so that different icons are now used.
          • Internal - DCL#3080
          Importing some invalid S3Ds into the Map Designer would result in truncated error messages
          Some errors, such as an empty group, would not be displayed correctly in the output window of the Map Designer when importing an invalid S3D. In this case, only the first character of the group name was included in the error message.
          An ANSI/Unicode conversion error meant that the full name was not displayed. This bug has now been fixed.
          • Internal - DCL#5664
          Importing some complex XSDs with lots of interrelated includes and imports fails
          If an attempt was made to import some XSD schemas that used a number of includes and imports that were interrelated, then it was possible for the import to fail complaining that it could not find some types which should have been accessible.
          This bug has been fixed.
          • Internal - DCL#5839
          Map Designer refuses to import XSD schemas containing invalid regular expressions
          The Map Designer would refuse to import XSD schemas that incldued any regular expressions, even though the Mapper does not require these to be valid to run.
          This bug has been fixed.
          • Internal - DCL#10690
          Map Designer refuses to import XSD schemas when a fixed value is overridden incorrectly
          A complex type extension can override the user of an attribute with a fixed value, possibly setting its use to be prohibited. However, the Map Designer refused to import the schema if the fixed value was not explicitly set to the same value as the original declaration. While this is technically invalid, it should not prevent the schemas from importing.
          This bug has been fixed.
          • Internal - DCL#10693

          Mapping Engine

          SymptomResolutionReference
          Double separator not used for decimal points in the Mapper
          The double separator is not used when converting decimal values to strings in the Mapper.
          The double separator is now used by default when converting decimal values in the Mapper.
          • Internal - DCL#9486
          Mapping Engine disallows custom XML element names containing a full stop
          Using type casting it is possible to add additional XML elements into the output message during a mapping. However, the mapping engine would disallow any element names containing a full stop, even though this is a valid character.
          Full stop characters are now allowed in XML element names.
          • Internal - DCL#10385
          C++ and Java Mapping Engines handling string standard functions differently
          An inconsistency between the C++ and Java mapper engine handling of string standard functions meant that some mappings would succeed during testing, but then fail when run using the Java engine (often within Rhapsody). This was due to a different in how the internal C++/Java libraries handle string indexes, specifically negative indexes.
          The Java mapper engine has been changed to match the behaviour of the C++ engine. Negative indexes are now generally treated as the end of the string, and will not cause StringIndexOutOfBoundsExceptions.
          • Internal - DCL#9236
          Threading issues calling stored procedures from the Mapper
          When using the C++ Mapper in a multi-threaded environment with stored procedure calls, race conditions can occur potentially causing transactions to not be committed properly, or in some cases, deadlock can occur.
          There was a threading bug relating to how the Mapper called stored procedures which has now been fixed.
          • Internal - DCL#10530

          XML Designer

          SymptomResolutionReference
          XML DAG Generator mangles the DLL filename
          If the specified filename for the DLL to generate contains multiple full stops, the XML DAG generator ignores everything after the first decimal point, thus generates the DLL in the wrong location.
          This bug has been fixed.
          • Internal - DCL#10411

          Enhancements in Service Pack 2

          Installer

          EDI Engine

          Mapping Engine

          Bug Fixes in Service Pack 2

          EDI Designer

          SymptomResolutionReference
          Export to HL7 2.x Schema does not work for all HL7 versions
          The Export to HL7 2.x Schema option did not work when using a message definition for any HL7 version other than 2.4.
          This bug has been fixed.
          • Internal - DCL#6791
          XSD Generator violates unique partical attribution rule
          Previously each segment had an ANY element at its end, this caused optional fields at the end of the segment to violate the unique particle attribution rule.
          This bug has been fixed.
            XSD Generator incorrectly generates a top level element containing a choice group with all the messages
            The messages.xsd mistakenly contained a choice group which referenced each of the messages. The Map Designer does not show top level elements which are referenced elsewhere in the schema. The choice group was useless and caused none of the messages to be displayed in the Mapper's list of messages.
            The choice group is no longer output into the messages.xsd file.

              EDI Designer Libraries

              SymptomResolutionReference
              Some EDIFACT messages were defined incorrectly
              UNT Segment - NumberOfSegmentsInTheMessage field is defined in the library as a String, but should be a 4 Byte Long. EDIFACT DateTimeOfPreperation was a numeric field when it should have been a string with a validating regular expression. All the required fields had a minimum repeat count of 0 instead of 1.
              These bugs has been fixed.
              • Internal - DCL#7315
              • Internal - DCL#7291
              Missing separators on HIPAA messages
              HIPAA (X12) 4010 was missing separators on both the Transactions and Interchange message sets. HIPAA 4010A was missing separators on the Transactions message set.
              This bug has been fixed.
              • Internal - DCL#7113
              Library wizard displayed the internal HIPAA transactions message set
              HIPAA (X12) 4010 and 4010A showed both the Interchange and the Transactions message sets in the Library Wizard while importing.
              Now the Transactions are hidden to force selection of the required Interchange message set.
                HL7 2.5 DT composites were not fixed width
                The HL7 2.5 DT composites should be marked as fixed width but were not.
                This bug has been fixed.
                • Internal - DCL#6807

                EDI Engine

                SymptomResolutionReference
                Calling setEncodedValue() repeatedly on the same element eventually fails
                If setEncodedValue() was called on a message 330 times it would cause Symphonia to fail on the 331 setEncodedValue() call. Note: this is only an issue if setEncodedValue is called on the same MessageElement tree (i.e.the same message) it is not an issue if setEncodedValue is called 331 times on different messages.
                This bug has been fixed.
                • Internal - DCL#6984
                .NET engine reports validation errors on separator fields
                The .NET engine was incorrectly reporting validation errors on fields designated to hold separators.
                This bug has been fixed.
                • Internal - DCL#7551
                .NET and Java engines do not always check situational rules
                The Java and .NET engines didn't check Situational Rules on fields inside composites. The C++/COM engines did.
                This bug has been fixed.
                • Internal - DCL#7599
                Character range violations do not include the element path
                If a field contained a value outside of the fields Character Range, the validation errors would not contain a path.
                This bug has been fixed.
                • Internal - DCL#6885
                Name value pairs could cause NullPointerExceptions
                Messages with Name Value pairs would cause a NullPointerException for the Java Engine. The .NET engine suffered the same issue but instead of crashing gave incorrect results in some cases when Name Value pairs were used. The C++/COM engines were not effected by this issue.
                This bug has been fixed.
                • Internal - DCL#7743
                Java engine could report InvalidKeyException with incorrect nested exception
                In rare cases the Java Engine would report an InvalidKeyException with a nested NullPointerException instead of a nested UnknownHostException.
                This bug has been fixed.
                • Internal - DCL#6790
                License checks used case-sensitive comparisons for the hostname
                The license checking mechanism used case-sensitive comparisons for the hostname would could potentially cause problems.
                Case-insensitive hostname comparisons are now performed.

                  Mapping Engine

                  SymptomResolutionReference
                  Outputting doubles in XML can have undesired trailing zeros after the decimal point
                  When a double is outputted into the XML structure the trailing zeros are removed. If all the numbers to the right of the decimal point are zeros the number outputted will have a trailing decimal point. E.g. '24100.00' is outputted '24100.'
                  Changed so that the trailing decimal point is removed in the C++ version. In the Java version output is what Double.toString() outputs which is often different from the C++ version.
                  • Internal - DCL#6462

                  Map Designer

                  SymptomResolutionReference
                  Main map changed to submap after updating message structures
                  After updating the message structure with multiple inputs, a main map was changed to a submap. This happened if any of the main maps referenced messages that were not defined in the first namespace (but in subsequent namespaces).
                  This bug has been fixed.
                    Datatypes can become mixed up after updating message structures
                    After updating the message structures with multiple namespaces and the same types in the first namespace and another namespace, the types would always refer to the first namespace, even when they should have referred to another one.
                    This bug has been fixed.
                    • Internal - DCL#7201
                    Annotations in an xsd after an include or import will cause the xsd to fail to import
                    If importing an xsd schema in the Map Designer that contains an annotation element after an import or an include element the import would fail.
                    This bug has been fixed.
                    • Internal - DCL#6276
                    Some valid complex type derivations were rejected by the importer
                    When importing an xsd containing complex type derivations, sometimes the importer would reject valid derivations.
                    This bug has been fixed.
                      Child attributes not always linked up correctly
                      The XPF generation could fail to link up appropriate child attributes of an element in some cases.
                      This bug has been fixed.
                        Repeats of a local simple type in a restricted attribute were not allowed
                        Repeats of a local simple type in a restricted attribute were not allowed as Xerces thinks they make a schema invalid.
                        This bug has been fixed.

                          Mapper Service

                          SymptomResolutionReference
                          Preceding junk in a message received by TCP caused the message to be lost
                          If the mapper service sends the test message: 'leading junk[0B]message[1C][0D]trailing junk', the presence of the leading junk caused the Mapper Service to garble the message.
                          The wrapping has been fixed so that preceding junk is now ignored and still allows the message to be processed correctly.
                          • Internal - DCL#7150

                          Enhancements in Service Pack 1

                          EDI Message Designer

                          EDI Explorer

                          EDI Engine

                          Mapping Engine

                          Map Designer

                          Bug Fixes in Service Pack 1

                          Installer

                          SymptomResolutionReference
                          Long filename registration can be lost
                          The long filename registration can be lost when double-clicking on an MDF or S3D, resulting in old DOS 8.3 filenames being used subsequently.
                          This was due to incorrect filename registration in the installer and has now been fixed.
                          • Internal - DCL#3393
                          • Internal - DCL#5593
                          Installer hangs when installing with Visual Studio .NET 2002 present
                          The Symphonia installer would hang early on in the installation process if Visual Studio .NET 2002 was installed.
                          This bug has been fixed.

                            EDI Message Designer

                            SymptomResolutionReference
                            Assemblies generated by the .NET Component Generator could throw FormatExceptions when retrieving a value
                            Assemblies generated by the .NET Component Generator would throw FormatExceptions when retrieving the value from an empty numeric primitive field.
                            A zero is now returned instead when the value is empty and no default value is defined.
                              Cannot generate .NET assembly with variable type fields and multiple message sets
                              The .NET Component Generator would fail to generate assemblies that used both variable type fields and multiple message sets.
                              This bug has been fixed.
                                EDI Message Designer hangs when generating Java classes
                                In some circumstances the EDI Message Designer would hang while generating the Java classes for a message definition.
                                This bug has been fixed.
                                  Clicking on the hyperlink to edit a syntax rule does not work
                                  Clicking on the hyperlink to edit a syntax rule did not work, so syntax rules could only be edited using the formal syntax.
                                  This bug has been fixed.
                                    EDI Message Designer hangs while editing the Message Type fields
                                    In some rare circumstances, EDI Message Designer would hang and consume all CPU while editing the Message Type fields.
                                    This bug has been fixed.
                                      Incorrect required flags in some X12 libraries
                                      Some of the X12 libraries had the required/optional flags inverted.
                                      This bug has been fixed.
                                        Typos in some HIPAA validation tables
                                        Two HIPAA validation tables had a typo: Tbl_837PRO_2300_CLM_05_1 and Tbl_837PRO_2400_SV1_05. Both tables contained an 82 instead of an 81.
                                        This bug has been fixed.
                                          Invalid allocation size when using Gap Compliance plugin
                                          "Invalid allocation size" bugs that caused composer to crash could occur when double clicking on a list in the Gap Compliance Plugin. (The Gap Compliance Plugin is a custom plugin created for McKesson).
                                          This bug has been fixed.
                                            EDI Message Designer crash when the main window is very small
                                            The EDI Message Designer would sometimes crash when open a window when the main window is small.
                                            This bug has been fixed.
                                            • Internal - DCL#5024
                                            DAG Generation would sometimes fail
                                            DAG generation fails on composites that only contain a single field when the field is also a composite.
                                            This bug has been fixed.
                                              The force count update engine option did not work correctly with minimise changes
                                              The forceCountUpdate engine option was using the counts that would have been used if MinimizeChanges was not on. Since MinimizeChanges is on, missing segments and fields will not automatically be created, so the counts need to not include the missing segments.
                                              This bug has been fixed.
                                              • Support Tracker #2714
                                              HL7 libraries used NM datatype for components of DTTM composites
                                              There was a minor issue with the HL7 message libraries: DT, TM, DTTM and TS composites use NM (floating point) type for the date time components (year, month, day, hours, minutes...).
                                              This revision changes these components to use integers instead of floats. This should make mapping of these fields much cleaner as DoubleToInt conversions will no longer be required.
                                                Wildcard ACKs do not always work
                                                Wildcard ACKs only work when the Message Type fields point at actual fields instead of composites.
                                                This revision changes the HL7v2.1, 2.2 and 2.3 (but not 2.3.1 or greater) messages to have individual message type fields instead of composites so wild ACKs will work on the older HL7 messages.

                                                  EDI Explorer

                                                  SymptomResolutionReference
                                                  Autofilling a message in a test set does not work
                                                  A message cannot be autofilled if it is part of a test set.
                                                  This bug has been fixed.
                                                  • Internal - DCL#5104
                                                  Explorer can crash when test set ignore paths are used
                                                  In some circumstances, EDI Explorer can crash when using ignore paths for a message definition inside a test set.
                                                  This bug has been fixed.
                                                  • Internal - DCL#5922
                                                  Manual acknowledgments has no default ACK codes
                                                  When manual acknowledgments are configured in EDI Explorer, it has an empty list of possible ACK codes by default.
                                                  The list now includes the normally used ACK codes of AA, AR, and AE.

                                                    EDI Engine

                                                    SymptomResolutionReference
                                                    Threading problem when using regular expressions
                                                    The Java EDI engine uses the Jakarta regular expression library for processing regular expressions, but is not thread-safe. Consequently there was threading bug in the Symphonia Java EDI engine that would normally manifest itself by message, segment, or message item match lists failing to match correctly.
                                                    This bug has been fixed by making the relevant calls thread-safe.
                                                      Java engine fails to parse messages larger than 25MB
                                                      When parsing from a stream in the EDI Java Engine it was possible for the MessageFactory to fail to parse parts of the message when the message was over 25MB.
                                                      This was due to the caching mechanism of the stream and has now been fixed.
                                                        Fields with an empty validation table would always cause validation errors
                                                        It was possible to configure fields to validate against a validation table and then remove all entries from the table, thus causing the field to fail validation every time.
                                                        Empty validation tables are now ignored by the engine.
                                                        • Internal - DCL#5405
                                                        Could not change the value of a null field
                                                        Once a field value was set to null, it was impossible to change it by simply setting a new value.
                                                        This bug has been fixed.
                                                          Memory leak in EDI COM engine
                                                          A memory leak would occur in the EDI COM engine if an invalid message path was passed to the GetElementAt() method.
                                                          This bug has been fixed.
                                                            Junk after a composite field of a specific length caused parsing to fail
                                                            If there was junk after a composite field that the engine was configured to ignore, and that junk had a length of 81, 82, or 83 characters, it would cause parsing to fail.
                                                            This bug has been fixed.
                                                              Java engine was built with JDK 1.4
                                                              The Java engine was built with JDK 1.4 and would not run on JRE 1.3.
                                                              This bug has been fixed.

                                                                Mapping Engine

                                                                SymptomResolutionReference
                                                                Extracting doubles from EDI messages could fail on non-English systems
                                                                Extracting doubles from EDI messages was locale dependent, as it used the system value for the decimal character.
                                                                This has been changed to use the decimal separator from the EDI message when it is present. When a decimal separator was not defined on the message the system locale is used as a default.
                                                                  Error when concatenating empty strings or elements
                                                                  If two empty strings (or message elements containing empty strings) were concatenated together in the mapping code, the result would be an empty element (with no type) rather than an empty string. This would cause an error in some cases when passing the result to an external function or assigning it to particular components.
                                                                  This bug has been fixed.
                                                                    Calling setInput(byte[]) can cause a ClassCastException
                                                                    Ff setInput(byte[]) was used for the old XML, it would run both the old and new XML, causing a ClassCastException.
                                                                    This bug has been fixed.
                                                                      Java engine was built with JDK 1.4
                                                                      The Java engine was built with JDK 1.4 and would not run on JRE 1.3.
                                                                      This bug has been fixed.

                                                                        Map Designer

                                                                        SymptomResolutionReference
                                                                        Automation schema was technically invalid
                                                                        The XML schema used for automating the Map Designer was incorrect.
                                                                        The xsd:all elements have been replaced with xsd:sequence elements to resolve this.
                                                                          Incorrect header files provided for building custom external functions
                                                                          The wrong version of the header files for writing custom external functions were released with the Mapper.
                                                                          The correct versions are now included in this release.
                                                                            Map Designer automatically switches to the test results even if the test was cancelled
                                                                            When cancelling debugging a mapping, the Map Designer would automatically switch back to the test results window even though there are no results to show.
                                                                            This bug has been fixed.
                                                                            • Internal - DCL#3807
                                                                            Auto-mapper can create invalid type casts
                                                                            The auto-mapper is able to use the explicit type casts supported by the Symphonia Mapper, but in some cases would do so incorrectly.
                                                                            This bug has been fixed.
                                                                            • Internal - DCL#5318
                                                                            Symphonia DAG objects could not be imported into the Map Designer
                                                                            Symphonia DAG objects contain all the EDI message information, but could not be imported into the Map Designer as an input or output definition, even though they could previously.
                                                                            This bug has been fixed.
                                                                            • Internal - DCL#5262
                                                                            Up arrow in debug variables windows does not always work
                                                                            There are hidden rows in the variables windows to handle expanding and contracting of complex types. When hidden rows were present, the up arrow did not always work correctly.
                                                                            The up arrow now works even if hidden rows are present.
                                                                            • Internal - DCL#5624
                                                                            Accelerator keys do not work if the output window has the focus
                                                                            Accelerator keys allow common actions to be performed quickly (e.g. Ctrl+S to Save) but did not work correctly when the output window had the input focus.
                                                                            This bug has been fixed.
                                                                            • Internal - DCL#3768

                                                                            Features in Symphonia 3.8

                                                                            W3C XML support within the Mapper (includes support for HL7 v3)

                                                                            The Mapper will allow W3C XML schema to imported directly into the Symphonia Map Builder, and treated the same as any other message definition within the Mapper. As HL7 v3 is defined using W3C XML schema, the Mapper will support the mapping of HL7 v3 messages to or from other EDI or XML messages.

                                                                            Symphonia EDI .NET Engine

                                                                            A version of the Symphonia dynamic EDI engine has been written completely in C# for those wanting to use a pure .NET component. This component has a similar interface to the existing C++/COM/Java dynamic engines, but with appropriate changes to fit in with .NET API guidelines.

                                                                            Symphonia .NET Component Generator

                                                                            Symphonia will be able to dynamically generated .NET components with a static interface corresponding to the message definition being used. This is a .NET version of the Dynamic ActiveX Generation introduced in a prior version of Symphonia. This feature will allow the user to generate a static interface around the Symphonia .NET Engine, making it very easy to use, and greatly reducing development time.

                                                                            Support for NCPDP v5.1

                                                                            A new type of segment called a 'Tagged Segment' has been introduced to support the NCPDP v5.1 standard. This type of segment provides some special handling for NCPDP repeating fields and for the identification of NCPDP fields, allowing NCPDP v5.1 to be processed correctly.

                                                                            Type casting in the Mapper

                                                                            The Mapper will support type casting between similar or identical datatypes, therefore allowing more generic mapping code to be written. This is particularly useful when the message definition has lots of identical datatypes which can be treated in the same way (this is often the case for XML definitions).

                                                                            Symphonia Map Builder automation via XML command file

                                                                            The Symphonia Map Builder application can be passed an XML file on the command line containing a number of commands to execute. This allows the user to automate the updating of message definitions and recompilation of the mapping definition. This feature has mainly been added for Rhapsody to allow the Administrator to easily create new mapping definitions, automap them, and then compile them.

                                                                            Improved handling of HL7 ACKs

                                                                            HL7 defines over 100 acknowledgment messages: one for each trigger event that can occur (for example, ACKA01, ACKA01...). However, each of these messages has exactly the same structure as the basic ACK message, even though Symphonia thinks that they are different types. Symphonia now supports a wildcard message matching mechanism, allowing the basic ACK message to match any other type of ACK if that particular acknowledgment type is not present in the message definition. This means that the number of messages required in the message definition, and the development effort required can potentially be significantly reduced.

                                                                            Improved support for CSV files

                                                                            EDI Message Designer will introduce a new basic datatype called 'Quoted String' which has been designed especially for handling comma-separated value messages (such as a CSV file exported from Microsoft Excel). This quoted string datatype can use double-quotes to surround field values, so that the values are handled correctly even if they contain commas.

                                                                            Improved support for batch messages in Explorer

                                                                            Explorer will be able to import a file containing multiple messages much more easily that it could be done previously. The Import Batch Message command allows the user to specify how the messages within the file are separated (for example, the messages are separated by a blank line). Explorer will then parse each message in turn and show each one in a separate window.