Difference between revisions of "RMIM Diagram Representation"
(70 intermediate revisions by 9 users not shown) | |||
Line 1: | Line 1: | ||
− | {{MnM | + | {{MnM Resolved Hot Topic}} |
== Introduction == | == Introduction == | ||
This page is intended to capture discussion and considerations related to whether the next generation of the Static Model Designer needs to retain support for the "traditional" HL7 static model diagramming syntax, and if so, what sort of support is necessary. | This page is intended to capture discussion and considerations related to whether the next generation of the Static Model Designer needs to retain support for the "traditional" HL7 static model diagramming syntax, and if so, what sort of support is necessary. | ||
+ | |||
+ | ===Known Discussions in MnM=== | ||
+ | An October 2011 review of MnM Minutes since January 2009 reveal the following sets of minutes that discuss this Hot Topic. CAVEAT: There may have been more that escaped my attention, AND I did not cross-correlate with Tooling Work Group minutes, where this has also been discussed. | ||
+ | *[[MnM_Minutes_CC_20090313]] | ||
+ | *[[MnM_Minutes_CC_20090320]] | ||
+ | *[[MnM_Minutes_CC_20090327]] | ||
+ | *[[MnM_Minutes_CC_20090619]] | ||
+ | *[[MnM_Minutes_CC_20090731]] | ||
+ | |||
+ | == Issue and Request for Decision == | ||
+ | |||
+ | The HL7 Visio RMIM Designer is slated to be retired in the next year or two as HL7 moves to a replacement tool. At present, the expected replacement is the Eclipse-based Static Model Designer, though Dave Carlson has been investing significant effort in adapting an off-the-shelf UML tool to support HL7 Diagram development as well. At the moment neither of these two solutions support a diagrammatic format that is identical to the "traditional" format used by the Visio tool. | ||
+ | |||
+ | HL7, as an organization, faces two questions: | ||
+ | |||
+ | === 1. Will HL7 allow multiple formats to be published? === | ||
+ | In the past, HL7 has had a policy that all RMIMs published in universal ballots must be documented using the "Visio" style format. While some committees had requested permission to document their models using standard UML tooling, this request was denied. Initially, the rationale was to ensure consistency of presentation as well as ensuring all artifacts could be maintained by a common set of tooling. As time went on, the rationale expanded to include the inability to express the UML models in MIF, which was necessary to produce the other artifacts published by HL7. | ||
+ | |||
+ | The MIF argument no longer exists, as both the Static Model Designer and the UML tool adaptation both support the MIF format. However the other two arguments may still apply. | ||
+ | |||
+ | Possible options include: | ||
+ | |||
+ | a) Requiring that only one graphical format be used in all HL7 publications | ||
+ | |||
+ | b) Requiring that one standardized graphical format be used in all HL7 publications, but allow additional formats to be published as well | ||
+ | |||
+ | c) Allowing any one of a set of HL7-approved graphical formats to be used in HL7 publications | ||
+ | - Allowing any graphical format to be used in HL7 publications, so long as a MIF representation is provided | ||
+ | |||
+ | === 2. What graphical format(s) will HL7 consider acceptable? === | ||
+ | Options (a), (b) and (c) above presume that HL7 will adopt identify one (or possibly more) formats as acceptable as primary graphical formats for representing RMIMs. We need to decide if either of the two alternative formats proposed for the candidate RMIM Designer replacements are acceptable. | ||
+ | |||
+ | Possible outcomes are: | ||
+ | |||
+ | a) Only one of the proposed formats is acceptable | ||
+ | |||
+ | b) Neither are acceptable - the tools must be updated to support the traditional format | ||
+ | |||
+ | c) Neither are acceptable, but an adjusted syntax drawing from one or the other or the traditional format but not identical to the traditional format would be acceptable | ||
+ | |||
+ | d) Both of the proposed formats are acceptable (assuming that option 'c' was selected as the answer to the first question) | ||
+ | |||
+ | == Requirements == | ||
+ | |||
+ | An HL7 static model diagram notation must satisfy the following requirements: | ||
+ | |||
+ | # The notatation shall be derived from the adopted standard UML 2.1 class diagram notation for representing: Class, Property, Association, and Generalization. | ||
+ | # All attributes allowed for a class shall be displayed in the class box, including immutable attributes (e.g. classCode, moodCode, and typeCode). | ||
+ | # Each association class (ActRelationship, Participation, RoleLink) shall be displayed as a separate class in the diagram with two associations, one to the source class and one to the target class. Names shall be present for each association direction that is 'navigable'. | ||
+ | # A class attribute shall display additional HL7 metadata, as defined in the HL7 metamodel for class attributes. Examples include: attribute mandatory flag and vocabulary binding specification. A complete [[Static Model BNF Grammar|BNF grammar]] shall be provided for metadata display syntax. | ||
+ | # Alternative "profiles" should be provided for choosing which attribute metadata is included in the diagram. | ||
+ | # Choice group members are represented in the HL7 metamodel using class specialization, and shall be displayed in the diagram using UML generalization relationships. | ||
+ | # Choices shall be denoted as abstract and shall have no attributes (at least for now). | ||
+ | # Each class box, including CMETs and stubs shall be displayed with background color corresponding to the HL7 conventions for RIM class type derivation. | ||
+ | # Each standard class box shall indicate its 'backbone type' (Act, Role, Entity, ActRelationship, Participation, RoleLink, Other) via stereotype. CMETs and Stubs shall be stereotyped as Stub and CMET respectively with the backbone type conveyed via the clone name. | ||
+ | # 'Simple' Annotations (those without additional metadata) may be displayed on a diagram using UML standard notation for Comment, with a dashed line connected to the annotated model element. The type of annotation (description, rationale, etc.) shall be conveyed as a stereotype on the Comment | ||
+ | # CMET and Stub component references in a class diagram shall be represented using the CMET name in a class box. The component's classCode (if any) must be displayed including vocabulary binding. | ||
+ | # It shall be possible to include multiple views of the same class in a single class diagram. Only one view of a class may display attribute details; other copies (shadows) shall be displayed using a collapsed class box notation. | ||
+ | |||
+ | === Support for Requirements === | ||
+ | |||
+ | The requirements are justified as follows: ... | ||
+ | |||
+ | Ad 3) | ||
+ | ::What does "as a separate class" mean? Is this rejecting block-arrows off-hand without further justification? [[User:Gschadow|Gschadow]] 16:16, 22 January 2010 (UTC) | ||
+ | |||
+ | Ad 6) | ||
+ | ::This requirement is not followed in one of the examples below. [[User:Gschadow|Gschadow]] 16:19, 22 January 2010 (UTC) | ||
+ | |||
+ | Ad 7) | ||
+ | ::Aside from the limitation of the "choice box" notation, this requirement might be justified by the fact that in the specializations many of the common attributes would still have different constraints. However, ideally one could still push common attributes up into the generalization and only define the additional constraints in the specializations where necessary. This would lead to a more concise and clearer UML presentation. [[User:Gschadow|Gschadow]] 16:22, 22 January 2010 (UTC) | ||
== Background == | == Background == | ||
Line 22: | Line 93: | ||
The next generation of the static model designer developed by the NHS currently uses underlying Eclipse graphical design features that do not support the HL7 specialized diagramming syntax. Some elements are or will be supported. Some are not yet supported. Some are not planned to be supported, at least in the "design" view. There's the possibility of using automated layout to generate a v3 view, but this possibility is likely to be technically challenging and does not have a high probability. | The next generation of the static model designer developed by the NHS currently uses underlying Eclipse graphical design features that do not support the HL7 specialized diagramming syntax. Some elements are or will be supported. Some are not yet supported. Some are not planned to be supported, at least in the "design" view. There's the possibility of using automated layout to generate a v3 view, but this possibility is likely to be technically challenging and does not have a high probability. | ||
− | === Standard UML | + | === Standard UML Diagram Notation === |
− | + | UML class diagram notation is a widely adopted standard that is nowadays taught in many universities and is understood by many implementers of HL7 standards. A well-defined relationship to UML standard notation would help promote adoption by the HL7 user community. If UML class diagram notation is used as the baseline for HL7, then the unique HL7 extensions may be specified as ''optional'' or ''recommended'' notational decorators. Some UML tools may then include an alternative class diagram view using these HL7 decorator extensions. The primary difference is in displaying additional attribute metadata and choice groups. HL7 extended metadata is retained in UML stereotypes and is viewable in property view editors. The choice group representation in UML is nearly identical to that in MIF (choice items as class specializations). The standard UML class diagram, as shown below, displays the choice group content as represented in MIF. | |
− | |||
== Sample Traditional diagram (Visio) == | == Sample Traditional diagram (Visio) == | ||
Line 60: | Line 130: | ||
[[Image:SMD Diagram Example.png|1024px|SMD diagram of R_Specimen minimal]] | [[Image:SMD Diagram Example.png|1024px|SMD diagram of R_Specimen minimal]] | ||
− | * | + | === Notes === |
+ | * CMETs are not supported by the current version of the SMD, they were substituted with classes in the above diagram. | ||
+ | * The SMD only supports MIF 2.1.0, 2.1.1 and 2.1.2 import, however, the most recent version of the R_Specimen model is only available in MIF 2.1.3 format. Because of that, some manual modifications of the MIF file were necessary to be able to import it. [[User:ZsTorok|Zsolt Török]] | ||
For more screenshots, please click [[OHT - NHS sponsored Static Model Designer|here]]. | For more screenshots, please click [[OHT - NHS sponsored Static Model Designer|here]]. | ||
=== Comments === | === Comments === | ||
+ | ==== Grahame ==== | ||
* Looks pretty good actually. 2 comments: what's with the html control elements? And with regard to space, does it have to laid out with so much space? Can't we diagram with the same density as the existing diagrams? --[[User:Grahamegrieve|Grahamegrieve]] 11:23, 16 January 2009 (UTC) | * Looks pretty good actually. 2 comments: what's with the html control elements? And with regard to space, does it have to laid out with so much space? Can't we diagram with the same density as the existing diagrams? --[[User:Grahamegrieve|Grahamegrieve]] 11:23, 16 January 2009 (UTC) | ||
** 1. Currently, the annotations within the diagram are handled as plain strings. However, these annotations are edited using a rich text editor as html (formatting buttons, etc..). As for the spacing, the user can lay-out or rearrange these artefacts in a more compact fashion if needed. [[User:Bbanfai|Bbanfai]] | ** 1. Currently, the annotations within the diagram are handled as plain strings. However, these annotations are edited using a rich text editor as html (formatting buttons, etc..). As for the spacing, the user can lay-out or rearrange these artefacts in a more compact fashion if needed. [[User:Bbanfai|Bbanfai]] | ||
** 2. The default layout comes as out of box functionality and we are trying alternate layout's that can reduce the space efficiently in the second phase.[[User:Ravi Natarajan|Ravi Natarajan]] | ** 2. The default layout comes as out of box functionality and we are trying alternate layout's that can reduce the space efficiently in the second phase.[[User:Ravi Natarajan|Ravi Natarajan]] | ||
+ | |||
+ | ==== Rene ==== | ||
*Personally I don't have a problem with this visualization of the model. Anybody with any background in modelling should be able to grasp what this is trying to convey. It would be nice to have a side by side rendering of one and the same model (a densely-packed class-rich model, with its layout optimized -in both tools- by a human designer) to see if the "space" requirements are an issue. I guess it doesn't have to be an issue if the layout is optimized (as it is Visio) by a human being. [[User:Rene spronk|Rene spronk]] | *Personally I don't have a problem with this visualization of the model. Anybody with any background in modelling should be able to grasp what this is trying to convey. It would be nice to have a side by side rendering of one and the same model (a densely-packed class-rich model, with its layout optimized -in both tools- by a human designer) to see if the "space" requirements are an issue. I guess it doesn't have to be an issue if the layout is optimized (as it is Visio) by a human being. [[User:Rene spronk|Rene spronk]] | ||
** That's the same conclusion we reached on the MnM call last week. We'll create a version of COCT_RM080100UV with the new tool to allow easier comparison. --[[User:Brandonulrich|brandonulrich]] 13:33, 5 February 2009 (UTC) | ** That's the same conclusion we reached on the MnM call last week. We'll create a version of COCT_RM080100UV with the new tool to allow easier comparison. --[[User:Brandonulrich|brandonulrich]] 13:33, 5 February 2009 (UTC) | ||
+ | |||
+ | ==== Rik ==== | ||
* Agree that this looks good. On the cosmetics, the choice of thick black lines for scopedBy/PlayedBy and choice boxes makes them stand out more than the light grey ones. Your eyes are drawn to the choices and entity relationships, which are often not the key elements. | * Agree that this looks good. On the cosmetics, the choice of thick black lines for scopedBy/PlayedBy and choice boxes makes them stand out more than the light grey ones. Your eyes are drawn to the choices and entity relationships, which are often not the key elements. | ||
**Perhaps the light grey needs to be a darker shade, or the black and grey reversed. | **Perhaps the light grey needs to be a darker shade, or the black and grey reversed. | ||
Line 80: | Line 157: | ||
***# Non-traversable + Source = S | ***# Non-traversable + Source = S | ||
***# Non-traversable + Target = T ([[User:ZsTorok|Zsolt Török]] 13 Feb 2009) | ***# Non-traversable + Target = T ([[User:ZsTorok|Zsolt Török]] 13 Feb 2009) | ||
+ | |||
+ | ==== Lloyd ==== | ||
+ | (From tooling list email) | ||
* A few questions/suggestions for the SMD representation: | * A few questions/suggestions for the SMD representation: | ||
− | ** Can we make CMETs have a small dashed border? It would just call them out | + | ** Can we make CMETs have a small dashed border? It would just call them out a bit more and make it more obvious that they aren't regular classes. |
− | a bit more and make it more obvious that they aren't regular classes. | + | ** Can we make the "S" and "T" designating source and target for arrow classes black and bold so they jump out a bit more? (Fine if the circle and arrows are still grey.) Also, the letter isn't always rendering properly in the center of the circle which can make it a little hard to read. |
− | ** Can we make the "S" and "T" designating source and target for arrow | + | ** The constraint specified in your sample isn't the same as the one above and is missing the identification of the attribute it deals with |
− | classes black and bold so they jump out a bit more? (Fine if the circle and | + | ** The notes (& constraints) should ideally render the XML markup rather than exposing the raw XML |
− | arrows are still grey.) Also, the letter isn't always rendering properly in | ||
− | the center of the circle which can make it a little hard to read. | ||
− | ** The constraint specified in your sample isn't the same as the one above | ||
− | and is missing the identification of the attribute it deals with | ||
− | ** The notes (& constraints) should ideally render the XML markup rather than | ||
− | exposing the raw XML | ||
** Any particular reason for making the notes yellow instead of white? --Lloyd on Tooling list | ** Any particular reason for making the notes yellow instead of white? --Lloyd on Tooling list | ||
+ | |||
+ | ==== Mike B ==== | ||
+ | (From tooling) | ||
+ | * Can we make sure that each class is NOT only represented by color. Could we have the base class listed in the box somewhere? (like the UML model) Or maybe an abbreviation like 'A' for Act, 'AR' for ActRelationship, 'R' for Role etc. | ||
+ | Speaking from experience, color blind people have trouble with some of these colors. This fix would also help the diagrams to conform to the [http://www.section508.gov/index.cfm?FuseAction=Content&ID=3 Section 508] guidlines put out by the US gov't. | ||
+ | |||
+ | ==== Brandon ==== | ||
+ | In response to some of the comments: | ||
+ | * It's easy to change the line styles (color, intensity, dash length) and cosmetic issues, as long as a consensus emerges on how they should be represented. | ||
+ | * We're not entirely convinced of the S and T for source and target either; open to better ideas. We thought about hollow and solid figures (circles, aggregation/composition diamonds) as well. We just want to be careful not to visually confuse source/target with traversable/nontraversable. | ||
+ | * Constraints have both visual and machine-processable data, respectively expressed as XHTML and OCL. Not sure of the utility and/or return on embedding a browser in a sticky note, but could be done...or perhaps the OCL could be exposed instead. The OCL is used by the validation framework. | ||
+ | |||
+ | ====[[User:Gwbeeler|GWBeeler]]==== | ||
+ | I like the SMD, with one key reservation. The code constraints for the structural attributes (classCode, moodCode, typeCode) are not displayed on the graphics, and yet they are essential to understanding a design. Without these values displayed, you have no idea whether you are dealing with an Observation Order or an Invoice Event. Remember that '''the clone name is supposed to convey no semantics'''. Therefore, a model should be interpretable with the classes named "A", "B", "C", etc. In the "traditional" view you can see the codes and either remember or look up the semantic. Thus, my question is whether you can add display of the code constraints in the SMD representation? | ||
+ | |||
+ | * The missing info is in the model--just not displayed on the diagram--so adding it to the display is trivial as long as there's consensus on how the information should appear. --[[User:Brandonulrich|brandonulrich]] 15:51, 13 March 2009 (UTC) | ||
+ | |||
+ | ==== [[User:Gschadow|Gunther]] ==== | ||
+ | |||
+ | I am O.K. with a UML notation in general. However, I think that unfortunately the wrong piece of the old notation was preserved and the better piece was toasted. I never liked "choice boxes" as they are misleading and a main semantic confusion. On the other hand, block-arrows are an advantage as the criss-crossing lines can be very bothersome. So, I would much rather like to see a UML with normal UML specialization arrows instead of choice boxes. | ||
+ | |||
+ | Just as a reminder to the origin of the blocks we had up until now. We used to do plain UML in HL7 back until 1999/2000. I introduced the blocks as a means of communicating to business people for tutorials from where they had been adopted by MnM and Lloyd wrote the Visio automation. The blocks are often seen in conceptual slide shows, they promote very compact layout that fits on a slide. The blocks trade off more in-class space for empty space surrounding the classes and reduce criss-crossing lines drastically. This is a major advantage. The blocks sometimes feel rigid, but by enlarging the size of the class boxes, the diagram author can arrange them compactly and visually enhancing the important classes (i.e., the classes with the most connections is usually the more important one and since it covers more area will be emphasized to the reader.) | ||
+ | |||
+ | If I could just wish up the tools, I would go back to my original single-box specialization notation and routable block arrows. | ||
== Standard UML diagram (same model) == | == Standard UML diagram (same model) == | ||
+ | Following is a reduced image (click to enlarge) showing standard UML notation for the R_Specimen Universal CMET. Software developed in the Open Health Tools (OHT) [http://modeling-mdt.projects.openhealthtools.org Modeling Tools for Healthcare] project was used to import the MIF2 representation of this CMET into UML. | ||
+ | |||
+ | Two variations on a UML class diagram are included below. The first model represents the Participation and ActRelationship as a class with two separate associations, whereas the second example uses UML Association Classes. The first example also include all structured attributes in model classes in the diagram, whereas the second saves this information within stereotype properties that are not visible in the diagram. | ||
+ | |||
+ | [[Image:UML_COCT_MT080100UV_associations.png|1024px|UML diagram of R_Specimen minimal]] | ||
+ | |||
+ | The proposed SMD diagram notation is very similar to standard UML notation. It may be beneficial to define HL7 diagram notation as ''optional'' notational extensions for UML tool vendors. The notational extensions are guided by use of UML profile stereotypes that capture additional HL7 metadata. | ||
+ | |||
+ | ''Profile stereotype documentation for HL7 extensions will be added to the OHT modeling tools project wiki. A hyperlink will be added to this page when it is available.'' | ||
+ | |||
+ | The salient characteristics of using standard UML class diagrams for HL7 are as follows: | ||
+ | |||
+ | * '''Class:''' The RIM derivation is displayed using both stereotype and color. Most UML tools support choice of class background color. The OHT modeling tools project has automated the assignment of HL7 color based on the RIM derivation of classes. | ||
+ | |||
+ | * '''Shadow Class:''' The diagram convention of HL7 "shadow classes" is supported by hiding attribute and operation compartments and making the class background color a darker shade. See the example of SpecimenInContainer in the diagram shown above. | ||
+ | |||
+ | * '''CMET:''' CMET class references are displayed using a class box with attribute and operation compartments hidden. The CMET package name is shown within the class box using UML parent name of the class, e.g. (from COCT_MT090000UV). | ||
+ | |||
+ | * '''Choice Group:''' Choice group members are displayed using UML generalizations, which is how they are represented in the MIF. UML tools support user assigned changes to line weight and color, but relationships may not be changed to dashed lines because this has special significance in UML notation. In this example, the line weight of generalizations was increased to make choice groups more obvious. | ||
+ | |||
+ | * '''Association:''' Scoper associations are represented and displayed in UML diagrams with the <<scope>> stereotype. We are investigating the UML representation and diagram notation for source/target of association ends (see discussion in SMD diagram section). | ||
+ | |||
+ | * '''Entry Point:''' A CMET entry point is represented as a UML Interface with a Realization relationship from the class. | ||
+ | |||
+ | * '''Annotations:''' All HL7 model annotations are represented and (optionally) displayed on diagrams as UML comments. The various kinds of annotations are distinguished using stereotypes, e.g. <<Definition>>, <<Design>>, <<UsageNotes>>, etc. Any UML model element may have zero or more comments. | ||
+ | |||
+ | * '''Constraints:''' Model constraints are represented and displayed using UML Constraint. This is a separate metaclass from Comment. Each UML constraint specifies its language (e.g. "analysis" or "OCL") and the constraint text. Any UML model element may have zero or more constraints. | ||
+ | |||
+ | === UML diagram using Association Class === | ||
+ | [[Image:UML_COCT_MT080100UV.png|1024px|UML diagram of R_Specimen minimal]] | ||
+ | |||
+ | * '''Structural Attributues:''' The HL7 structural attributes (classCode, typeCode, moodCode, and determinerCode) are represented using properties of the RIM stereotype on each class. The values are editable via property view fields. The idea behind this design is that many structural attribute values are predictable by users based on the RIM derivation, and the diagram is less cluttered if those attributes are not shown for every class in the diagram. For example, most Observation classes have classCode=OBS and moodCode=EVN. | ||
+ | * '''Association Class:''' The HL7 types for Participation, ActRelationship, and RoleLink are represented in UML using an Association Class. We discussed this in detail during the UML BOF at the Sept 2007 WGM, and the consensus was that association classes are a good match to the original intent of these types in HL7 methodology. When transforming MIF to UML models, the two separate associations are collapsed to one association, and all attributes are fully modeled in the association class. The use of two separate associations seems to be more of an implementation design view than a conceptual modeling view. | ||
+ | ::Actually, Charlie Mead and I had explored this right back in 1998/99 and found that association classes are ''not'' a good match to the original intent of these types in HL7 methodology, because -- at least at that time -- UML definition for association class was that the association was fully identified by the two objects on either end of the association, however, the whole point of our associa''tive'' classes is to allow the same two objects to associate multiple times, each time in different ways. In other words, the UML definition of association class required that the two objects made up a complete primary key to the association relation, when the HL7 use of an associa''tive'' class allows for the primary key to include other attributes. [[User:Gschadow|Gschadow]] 17:19, 22 January 2010 (UTC) | ||
== Pros and cons == | == Pros and cons == | ||
Line 109: | Line 241: | ||
# All existing published and balloted static models use the old syntax and would require conversion to move | # All existing published and balloted static models use the old syntax and would require conversion to move | ||
# All of our existing documentation (e.g. V3 Primer), presentations, etc. use the old syntax | # All of our existing documentation (e.g. V3 Primer), presentations, etc. use the old syntax | ||
+ | === Drawbacks of 'HL7 Visio syntax' === | ||
+ | # HL7 has often been accused of idiosyncrasy for maintaining its own diagramming notation | ||
+ | # It requires specialized explanation and training | ||
+ | # It requires specialized software tools with limited supply and support -- although it appears that all alternative presently described in this article also depend heavily on custom software | ||
+ | # The current tools have been perceived as inadequate for early requirements or analysis models, since the tools seem to prematurely force design features (e.g., HL7 "structural attributes") which may not stand out as obvious data elements of the business | ||
=== Benefits of the new Eclipse SMD syntax === | === Benefits of the new Eclipse SMD syntax === | ||
− | # | + | #Integration into modeling tooling framework, like in the Visio RMIM designer, the diagramming can check for the proper use of model archetypes (e.g., it does not allow different archetypes to be added to a choice.) |
− | # | + | #Based on platform independent open source software, makes the tooling more available to a wider audience |
− | # | + | #Connections can be drawn in any angle, forcing less layout constraints with more distant connections. This may reduce the need for shadow classes. |
− | # | + | #The underlying diagramming tools provide some auto-layout functions that can be helpful |
− | # | + | #Associative classes are displayed as regular classes: a class with two associations. |
− | #More | + | #More similar to standarde UML |
=== Benefits of the 'straight' UML syntax === | === Benefits of the 'straight' UML syntax === | ||
Line 127: | Line 264: | ||
# More familiar to the non-HL7-initiated, in particular implementers | # More familiar to the non-HL7-initiated, in particular implementers | ||
# Helps better expose content from a UML modeling perspective | # Helps better expose content from a UML modeling perspective | ||
+ | === Objectives RMIM Diagram Graphics === | ||
+ | From the very beginning, the core objective of the RMIM Diagram graphics was to display the semantic content of a model as '''''fully as possible''''' in the context of the diagram. The principle was that one should not have to "drill into" the shapes to find out what the core names are, what are the specified constraints (such as structural attribute codes), etc. | ||
+ | |||
+ | ==== Discussion of Semantic Display Pros & Cons - [[User:Gwbeeler|GWBeeler]] ==== | ||
+ | In order to assess the correctness of the semantic representation, I took a set of three classes (Act/Participation/Role) and extracted each from the examples provided. In then looked at the key features that are documented for the static models and asked how they were represented. The result is documented in the following composite diagram. The fragmentary images were taken as screen shots from the fully zoomed content of each of the three examples. | ||
+ | |||
+ | Key findings in this limited analysis have to do with: | ||
+ | # '''Structural Attributes''' – e.g. classCode and moodCode of the class (in RED ovals) '''''SpecimenProcessStep''''' that might have been named “SammysGoals”. One cannot know the model without knowing these code values | ||
+ | #*
Code values are missing in SMD, but are displayed in a subsequent release that was not used for this diagram; | ||
+ | #* The presentation of these attributes can be suppressed or displayed (by option) in the UML tools. the entire concept is missing in UML | ||
+ | #* Vocabulary constraints are displayed on the UML diagrams by showing them as a "default" value. This has two drawbacks: it only allows the "=" symbol whereas "<=" and "<" are also used in HL7 representations, and this is a mis-representation of the semantic relationship, as these are '''not''' default values. | ||
+ | # '''Association names''' become element names in the XML instances. Therefore the ability to find these on the diagram is important. In the Participation shown there are 2 of them (in BLUE ovals) | ||
+ | #*The UML tool has an option to display these as "association classes". The association class representation is not used in the fragment below, but where it is used this representation does not conform to HL7's type model. The type model expects '''two''' named roles between the Participation and the Role, where as there is '''only one''' named role if association classes are used. | ||
+ | #'''Mandatory and Required specifications''' of attributes (in this case the contextControlCode in the BLACK oval) | ||
+ | #* Absent in UML | ||
+ | |||
+ | |||
+ | [[Image:RmimGraphicFragmentAnalysis.gif|1024px|Analysis of a Common Fragment from Each Representation]] | ||
== Additional Considerations == | == Additional Considerations == | ||
# MIF supports capturing multiple graphical renderings of a single model. Specifically, it can support both standard UML and traditional HL7 diagrams for a single model | # MIF supports capturing multiple graphical renderings of a single model. Specifically, it can support both standard UML and traditional HL7 diagrams for a single model | ||
+ | ## MIF does not support this, the ''tools'' support this. One could also implement a custom diagram editor for the UML language that displays HL7 preferred diagram notation. [[User:dcarlson| Dave Carlson]] | ||
# If we support multiple renderings and don't have auto-layout, committees would need to edit layouts in both styles that would mean increased work | # If we support multiple renderings and don't have auto-layout, committees would need to edit layouts in both styles that would mean increased work | ||
− | # If we go with an auto-layout route, | + | # If we go with an auto-layout route existing algorithms support standard UML, the block-based models would probably require quite different auto-layout approaches. |
+ | # Auto-layout is only useful for an initial arrangement anyhow, regardless of which diagram style is used, there is significant amount of work going into conscious arrangement of shapes to yield a concise comprehensible diagram. | ||
+ | ::I added this point because it is really, really important. I spend hours arranging shapes and in doing so I discover systematics and inconsistencies in my models. [[User:Gschadow|Gschadow]] 18:43, 22 January 2010 (UTC) | ||
== Other Discussion == | == Other Discussion == | ||
Line 144: | Line 302: | ||
** The OHT Modeling project provides a free Eclipse plugin that contains all the extensions required to author HL7 models in UML | ** The OHT Modeling project provides a free Eclipse plugin that contains all the extensions required to author HL7 models in UML | ||
** IBM and other vendors provide free Eclipse-based UML 2.1 tools. This program would be available to other SDOs or not-for-profit organizations that produce standards HL7 would like to harmonize. | ** IBM and other vendors provide free Eclipse-based UML 2.1 tools. This program would be available to other SDOs or not-for-profit organizations that produce standards HL7 would like to harmonize. | ||
+ | |||
+ | === Why can't HL7 just use commercial off-the-shelf UML tools? === | ||
+ | |||
+ | It seems that existing UML tools provide certain features, including coloring and even custom shapes, custom properties, and possibly constraints. I have not seen clear evidence that this is not possible with appropriate configuration of complete off the shelve tools. An important drawback to the custom HL7 diagramming was the requirement for custom tool support. I think we should not embark on more custom tools before seriously pushing the limit of commercial off-the-shelf software. [[User:Gschadow|Gschadow]] 18:29, 22 January 2010 (UTC) | ||
+ | |||
+ | ==Domain WG Concerns== | ||
+ | |||
+ | Here are issues seen from a domain work group perspective - Gregg | ||
+ | |||
+ | #Multiple Uses: The domain WG's use RMIM diagrams for two purposes: (1) confirm adequacy of a design with BUSINESS stakeholders and (2) input to the PUBLISHING process. | ||
+ | #Model vs. Diagram: The current RMIM Designer's inability to separate MODEL from DIAGRAM has led to extra work and quality problems. | ||
+ | #Structural attributes | ||
+ | ##BUSINESS users do not find structural attributes helpful. PA stopped including structural attributes in the RMIM walk-through; we convey those semantics in the class description. | ||
+ | ##Best option: support optional display of structural attributes AND support displaying parts of a model (to focus on specific concepts within overall model) without having to create a different model. | ||
+ | #Color Coding | ||
+ | ##Relying ONLY on color to convey the RIM source of a class in the diagram is a weakness of the current approach. | ||
+ | ##Section 508 requires that "web pages shall be designed so that all information conveyed with color is also available without color." | ||
+ | ##Best option: also support text display of RIM source (e.g., though use of stereotypes) | ||
+ | #Vocabulary binding | ||
+ | ##The distinction between = (exactly this concept) vs. <= (this concept or any of its specializations) seems like a tough issue both in modeling and in creating schemas. Is this even represented in the schemas? | ||
+ | ##Perhaps this should be replaced with binding to value set only and not try to represent it on the diagram. | ||
+ | #Conformance | ||
+ | ##Showing conformance information on the DIAGRAM forced PA to create an explosion of models in the Encounter domain. We have one model and a spreadsheet on which we defined constraints (M, R, O, NP) for every attribute and association by encounter type and trigger event. Each column in the spreadsheet requires manual creation of a separate model (laborious and error prone process) and every change requires hand editing each of the models. | ||
+ | ##Each implementation requires creation or adoption of a conformance profile in which each attribute and association left optional by the domain wg must be set to R or NP anyway. | ||
+ | ##Best option: separate conformance from the DIAGRAM and allow it to be inherited/modified in derived MODELS. | ||
+ | #Association Classes | ||
+ | ##The diagram needs to distinguish player/scoper and target/source. | ||
+ | ##Don't understand naming issue but it sounds like this is related more to translation to XML than to modeling. | ||
+ | #Tooling | ||
+ | ##The current MnM discussion wraps model representation very tightly with tooling choices. That means we cannot dismiss tool selection issues such as support for end-to-end modeling from requirements, dynamic behavior, information model, to serialized model. | ||
+ | ##The NHS has created a number of useful related tools such as MIF-DIF, annotation editors and instance generators. | ||
+ | ##The UML group accesses the large community of UML tool developers so the costs are shared broadly and HL7 can focus on unique requirements | ||
+ | ##Best option: combine the efforts under OHT | ||
+ | |||
+ | Sorry for the length of this response but I have devoted a good chunk of the past 7 years of my work life to HL7 V3 publishing so a good outcome is important to me. | ||
+ | |||
+ | ===Some feedback from Lloyd=== | ||
+ | #There is certainly a need to present models to business users. The structural attributes are part of the "noise" that makes the models hard to understand. However, it's only one part. A lot of the RIM-based modeling (e.g. having 'patient' expressed as 3 classes - participation, role & entity - rather than 1) adds to noise. We're working on a collapsing process that allows models to be rendered in a more business-like way. Having diagrams of this collapsed view would be useful as well. However, this is a completely different use-case than the base model diagrams. | ||
+ | # Diagrams are representations of a model. The need to support conformance has absolutely nothing to do with the diagramming approach. You'd need to create just as many models, whether it was shown in the diagrams or not. In the end, I'm hoping we'll have diagrams for absolutely ever model. | ||
+ | # Exposing conformance in the diagrams is critical. It's a key piece of design data - just like mandatory and cardinality. Note that the diagrams are used at more than just the UV level where there tends to be more optional stuff and conformance isn't declared as often. | ||
+ | # Tooling will almost certainly be Eclipse based with a target of having a desktop that allows full integration of all modeling steps. Off-the-shelf UML tools may well be used for some aspects, such as requirements. However, a significant layer of customization will be needed on any UML tool used to construct static models due to the large quantity of "tag" data HL7 requires in its methodology, as well as the lack of UML support for derivation. Because of the degree of customization/extension required anyhow, we're not necessarily constrained to a pure UML diagramming syntax even if the underlying tool happens to be off-the-shelf UML. | ||
+ | |||
+ | == Graphical rendering format requirements for publication == | ||
+ | The following is a set of requirements that I (Lloyd) think exist for the "official" graphical format: | ||
+ | |||
+ | # The format used in design must be the same one published for review with absolutely no human intervention required | ||
+ | ## The information that is important to designers is the same as that required when reviewing a model for appropriateness | ||
+ | ## We don't have the bandwidth to make any changes to layout or shape position between the design view and the publication view | ||
+ | # The format must expose all classes, attributes and associations in a single diagram, including structural attributes | ||
+ | ## All information must be shown to clearly understand the model. | ||
+ | ## A single diagram is necessary to allow complete and easy review of the model | ||
+ | ## Separate diagrams of specific sections based on subject area is fine, so long as there's always a single diagram of the whole model available. (Ideally the sub-diagrams should not require any manual graphical layout.) | ||
+ | # The format must clearly expose all key pieces of semantic information: | ||
+ | ## Classes: Name, RIM backbone type, ''whether the class is "complete" or not'', ''templates that can be or must be applied to the class'' | ||
+ | ## Attributes & Associations: name, datatype, cardinality constraints, mandatory, conformance, default value, fixed value, vocabulary constraints, length constraints, ''update modes allowed'', ''update mode default'', ''enumeration constraints'', ''range constraints'', formal constraints, ''usage constraints'' | ||
+ | ### All of these properties convey key semantic and constraint information. It's not possible to evaluate the correctness of a model without knowing all of them. With a background in the RIM, it *is* possible to evaluate the correctness of a model if you have all of this information | ||
+ | #In addition, it would be good to support the following: Business names, ''whether something is an extension (foreign namespace or tagged)'' and ''whether something is deprecated'', usage notes, design comments, ''open issues'' | ||
+ | ## While not critical to understanding the model, they provide context that is likely to affect design decisions and help to make the model more understandable. Note that while these types of annotations should be able to be exposed, not all of them will need to be. It will be up to the model designer to determine which comments are of sufficient importance to justify exposing on the diagram. | ||
+ | # It is not necessary to expose some type information such as immutability, history, derivation information, definition, rationale, requirements, stability remarks, mappings, examples, ballot comments, change requests and deprecation details | ||
+ | ## This information is not necessary to review or interpret the model, though it will need to be available for those wishing to drill into the model. | ||
+ | |||
+ | NOTE: Content in ''italics'' is content not currently exposed in the Visio tool | ||
+ | |||
+ | == Model vs. Diagram == | ||
+ | It is possible to have multiple diagrams for a single model. Diagrams can choose how much or how little information is exposed. However, multiple diagrams exposing different amounts of data come with a cost. There is usually a need to manually drag the various shapes around to ensure they do not overlay each other or their association lines. This adds significant maintenance effort and increases the probability of models having at least one diagram that does not render properly. | ||
+ | |||
+ | It is therefore desirable to have a base diagram from which all other diagram views can be derived in an automated fashion without human intervention. In general, this means that the base diagram needs to have the "most" information captured, with subsequent diagrams removing information and increasing the amount of whitespace in the diagram without changing shape sizes or layout. | ||
+ | |||
== Resolution == | == Resolution == | ||
We will discuss this on the January 30th conference call | We will discuss this on the January 30th conference call |
Latest revision as of 20:42, 17 October 2011
Contents
- 1 Introduction
- 2 Issue and Request for Decision
- 3 Requirements
- 4 Background
- 5 Sample Traditional diagram (Visio)
- 6 New SMD diagram (Eclipse)
- 7 Standard UML diagram (same model)
- 8 Pros and cons
- 9 Additional Considerations
- 10 Other Discussion
- 11 Domain WG Concerns
- 12 Graphical rendering format requirements for publication
- 13 Model vs. Diagram
- 14 Resolution
Introduction
This page is intended to capture discussion and considerations related to whether the next generation of the Static Model Designer needs to retain support for the "traditional" HL7 static model diagramming syntax, and if so, what sort of support is necessary.
Known Discussions in MnM
An October 2011 review of MnM Minutes since January 2009 reveal the following sets of minutes that discuss this Hot Topic. CAVEAT: There may have been more that escaped my attention, AND I did not cross-correlate with Tooling Work Group minutes, where this has also been discussed.
- MnM_Minutes_CC_20090313
- MnM_Minutes_CC_20090320
- MnM_Minutes_CC_20090327
- MnM_Minutes_CC_20090619
- MnM_Minutes_CC_20090731
Issue and Request for Decision
The HL7 Visio RMIM Designer is slated to be retired in the next year or two as HL7 moves to a replacement tool. At present, the expected replacement is the Eclipse-based Static Model Designer, though Dave Carlson has been investing significant effort in adapting an off-the-shelf UML tool to support HL7 Diagram development as well. At the moment neither of these two solutions support a diagrammatic format that is identical to the "traditional" format used by the Visio tool.
HL7, as an organization, faces two questions:
1. Will HL7 allow multiple formats to be published?
In the past, HL7 has had a policy that all RMIMs published in universal ballots must be documented using the "Visio" style format. While some committees had requested permission to document their models using standard UML tooling, this request was denied. Initially, the rationale was to ensure consistency of presentation as well as ensuring all artifacts could be maintained by a common set of tooling. As time went on, the rationale expanded to include the inability to express the UML models in MIF, which was necessary to produce the other artifacts published by HL7.
The MIF argument no longer exists, as both the Static Model Designer and the UML tool adaptation both support the MIF format. However the other two arguments may still apply.
Possible options include:
a) Requiring that only one graphical format be used in all HL7 publications
b) Requiring that one standardized graphical format be used in all HL7 publications, but allow additional formats to be published as well
c) Allowing any one of a set of HL7-approved graphical formats to be used in HL7 publications - Allowing any graphical format to be used in HL7 publications, so long as a MIF representation is provided
2. What graphical format(s) will HL7 consider acceptable?
Options (a), (b) and (c) above presume that HL7 will adopt identify one (or possibly more) formats as acceptable as primary graphical formats for representing RMIMs. We need to decide if either of the two alternative formats proposed for the candidate RMIM Designer replacements are acceptable.
Possible outcomes are:
a) Only one of the proposed formats is acceptable
b) Neither are acceptable - the tools must be updated to support the traditional format
c) Neither are acceptable, but an adjusted syntax drawing from one or the other or the traditional format but not identical to the traditional format would be acceptable
d) Both of the proposed formats are acceptable (assuming that option 'c' was selected as the answer to the first question)
Requirements
An HL7 static model diagram notation must satisfy the following requirements:
- The notatation shall be derived from the adopted standard UML 2.1 class diagram notation for representing: Class, Property, Association, and Generalization.
- All attributes allowed for a class shall be displayed in the class box, including immutable attributes (e.g. classCode, moodCode, and typeCode).
- Each association class (ActRelationship, Participation, RoleLink) shall be displayed as a separate class in the diagram with two associations, one to the source class and one to the target class. Names shall be present for each association direction that is 'navigable'.
- A class attribute shall display additional HL7 metadata, as defined in the HL7 metamodel for class attributes. Examples include: attribute mandatory flag and vocabulary binding specification. A complete BNF grammar shall be provided for metadata display syntax.
- Alternative "profiles" should be provided for choosing which attribute metadata is included in the diagram.
- Choice group members are represented in the HL7 metamodel using class specialization, and shall be displayed in the diagram using UML generalization relationships.
- Choices shall be denoted as abstract and shall have no attributes (at least for now).
- Each class box, including CMETs and stubs shall be displayed with background color corresponding to the HL7 conventions for RIM class type derivation.
- Each standard class box shall indicate its 'backbone type' (Act, Role, Entity, ActRelationship, Participation, RoleLink, Other) via stereotype. CMETs and Stubs shall be stereotyped as Stub and CMET respectively with the backbone type conveyed via the clone name.
- 'Simple' Annotations (those without additional metadata) may be displayed on a diagram using UML standard notation for Comment, with a dashed line connected to the annotated model element. The type of annotation (description, rationale, etc.) shall be conveyed as a stereotype on the Comment
- CMET and Stub component references in a class diagram shall be represented using the CMET name in a class box. The component's classCode (if any) must be displayed including vocabulary binding.
- It shall be possible to include multiple views of the same class in a single class diagram. Only one view of a class may display attribute details; other copies (shadows) shall be displayed using a collapsed class box notation.
Support for Requirements
The requirements are justified as follows: ...
Ad 3)
- What does "as a separate class" mean? Is this rejecting block-arrows off-hand without further justification? Gschadow 16:16, 22 January 2010 (UTC)
Ad 6)
- This requirement is not followed in one of the examples below. Gschadow 16:19, 22 January 2010 (UTC)
Ad 7)
- Aside from the limitation of the "choice box" notation, this requirement might be justified by the fact that in the specializations many of the common attributes would still have different constraints. However, ideally one could still push common attributes up into the generalization and only define the additional constraints in the specializations where necessary. This would lead to a more concise and clearer UML presentation. Gschadow 16:22, 22 January 2010 (UTC)
Background
HL7 (Visio) Diagrammatic Representation
HL7 has had a specialized diagrammatic representation used to render static models such as DMIMs (DIMs) and R-MIMs (CIMs). This representation includes: - arrow-shaped boxes and "recursive corner" boxes for relationship classes. - surrounding dashed-line "boxes" to designate choices - a box with an out-going arrow to designate entry points - specialized shapes to designate CMETs and shadows - special boxes to represent subject areas and subject-area references - distinct shapes for comments and constraints - color-coding to reflect RIM derivations - additional attribute and association characteristics including isMandatory, conformance, default and fixed values, business names, vocabulary bindings, update mode, etc. The "standard" UML syntax uses none of these conventions and does not expose some of this information
OHT - NHS sponsored Static Model Designer Diagrammatic Representation
The next generation of the static model designer developed by the NHS currently uses underlying Eclipse graphical design features that do not support the HL7 specialized diagramming syntax. Some elements are or will be supported. Some are not yet supported. Some are not planned to be supported, at least in the "design" view. There's the possibility of using automated layout to generate a v3 view, but this possibility is likely to be technically challenging and does not have a high probability.
Standard UML Diagram Notation
UML class diagram notation is a widely adopted standard that is nowadays taught in many universities and is understood by many implementers of HL7 standards. A well-defined relationship to UML standard notation would help promote adoption by the HL7 user community. If UML class diagram notation is used as the baseline for HL7, then the unique HL7 extensions may be specified as optional or recommended notational decorators. Some UML tools may then include an alternative class diagram view using these HL7 decorator extensions. The primary difference is in displaying additional attribute metadata and choice groups. HL7 extended metadata is retained in UML stereotypes and is viewable in property view editors. The choice group representation in UML is nearly identical to that in MIF (choice items as class specializations). The standard UML class diagram, as shown below, displays the choice group content as represented in MIF.
Sample Traditional diagram (Visio)
Following is a reduced image (click to enlarge) for R_Specimen Universal. The full definition for this CMET can be found in the current HL7 Ballot.
New SMD diagram (Eclipse)
The semantic concepts are expressed as follows:
- Attributes
Same as before, properties such as mandatory, fixed/default values, conformance, datatype and vocab info displayed as before.
- Entry point
Same as before, except non-orthogonal connection is also supported
- Classes
Color coded based on archetype. Naming is supported according to the HL7 formal naming algorithm. All classes are box shaped. The Visio style arrow shaped boxes are represented as a class with two associations, therefore can be connected in any angle.
- Associations
Player, scoper and regular associations are the same as for the Visio style diagramming. Formal naming is supported. In addition traversability is also indicated on the associations. Recursive connections are simply pointing back to the source class. Directionality is maintained, for example directionality of ActRelationships (what's a subject of what) is immediately visible.
- Choices
Same as before in the Visio style designer. Choice within choice is supported.
- Annotations
Annotations are supported, note and constraints are displayed as "sticky notes" in different colors.
- CMETs
Will be supported in the second phase of the project.
- Templates
Will be supported in the second phase of the project.
Notes
- CMETs are not supported by the current version of the SMD, they were substituted with classes in the above diagram.
- The SMD only supports MIF 2.1.0, 2.1.1 and 2.1.2 import, however, the most recent version of the R_Specimen model is only available in MIF 2.1.3 format. Because of that, some manual modifications of the MIF file were necessary to be able to import it. Zsolt Török
For more screenshots, please click here.
Comments
Grahame
- Looks pretty good actually. 2 comments: what's with the html control elements? And with regard to space, does it have to laid out with so much space? Can't we diagram with the same density as the existing diagrams? --Grahamegrieve 11:23, 16 January 2009 (UTC)
- 1. Currently, the annotations within the diagram are handled as plain strings. However, these annotations are edited using a rich text editor as html (formatting buttons, etc..). As for the spacing, the user can lay-out or rearrange these artefacts in a more compact fashion if needed. Bbanfai
- 2. The default layout comes as out of box functionality and we are trying alternate layout's that can reduce the space efficiently in the second phase.Ravi Natarajan
Rene
- Personally I don't have a problem with this visualization of the model. Anybody with any background in modelling should be able to grasp what this is trying to convey. It would be nice to have a side by side rendering of one and the same model (a densely-packed class-rich model, with its layout optimized -in both tools- by a human designer) to see if the "space" requirements are an issue. I guess it doesn't have to be an issue if the layout is optimized (as it is Visio) by a human being. Rene spronk
- That's the same conclusion we reached on the MnM call last week. We'll create a version of COCT_RM080100UV with the new tool to allow easier comparison. --brandonulrich 13:33, 5 February 2009 (UTC)
Rik
- Agree that this looks good. On the cosmetics, the choice of thick black lines for scopedBy/PlayedBy and choice boxes makes them stand out more than the light grey ones. Your eyes are drawn to the choices and entity relationships, which are often not the key elements.
- Perhaps the light grey needs to be a darker shade, or the black and grey reversed.
- Suggest the choice box dotted lines are changed to a different shorter dot length that the scoped by, to show that these are not related.
- The circular end points of the lines has the effect of blurring where the line actually connects in some cases. For instance on the productOfChoice, you can't immediately see which choice box this connects to. What do these circles represent? The S and T is source and target presumably. Visio supports the arrow being "backwards", changing the sense of the relationship, and the cardinality (traversability, serialization) being on either end, or both ends, in a DMIM. It would be good to see how these options are represented. -Riksmithies 13 Feb 2009
- The circular end points indeed represent source and target, the arrows on the association ends represent the traversability of the given end. The SMD supports all four permutations:
- Traversable + Source = S + arrow
- Traversable + Target = T + arrow
- Non-traversable + Source = S
- Non-traversable + Target = T (Zsolt Török 13 Feb 2009)
- The circular end points indeed represent source and target, the arrows on the association ends represent the traversability of the given end. The SMD supports all four permutations:
Lloyd
(From tooling list email)
- A few questions/suggestions for the SMD representation:
- Can we make CMETs have a small dashed border? It would just call them out a bit more and make it more obvious that they aren't regular classes.
- Can we make the "S" and "T" designating source and target for arrow classes black and bold so they jump out a bit more? (Fine if the circle and arrows are still grey.) Also, the letter isn't always rendering properly in the center of the circle which can make it a little hard to read.
- The constraint specified in your sample isn't the same as the one above and is missing the identification of the attribute it deals with
- The notes (& constraints) should ideally render the XML markup rather than exposing the raw XML
- Any particular reason for making the notes yellow instead of white? --Lloyd on Tooling list
Mike B
(From tooling)
- Can we make sure that each class is NOT only represented by color. Could we have the base class listed in the box somewhere? (like the UML model) Or maybe an abbreviation like 'A' for Act, 'AR' for ActRelationship, 'R' for Role etc.
Speaking from experience, color blind people have trouble with some of these colors. This fix would also help the diagrams to conform to the Section 508 guidlines put out by the US gov't.
Brandon
In response to some of the comments:
- It's easy to change the line styles (color, intensity, dash length) and cosmetic issues, as long as a consensus emerges on how they should be represented.
- We're not entirely convinced of the S and T for source and target either; open to better ideas. We thought about hollow and solid figures (circles, aggregation/composition diamonds) as well. We just want to be careful not to visually confuse source/target with traversable/nontraversable.
- Constraints have both visual and machine-processable data, respectively expressed as XHTML and OCL. Not sure of the utility and/or return on embedding a browser in a sticky note, but could be done...or perhaps the OCL could be exposed instead. The OCL is used by the validation framework.
GWBeeler
I like the SMD, with one key reservation. The code constraints for the structural attributes (classCode, moodCode, typeCode) are not displayed on the graphics, and yet they are essential to understanding a design. Without these values displayed, you have no idea whether you are dealing with an Observation Order or an Invoice Event. Remember that the clone name is supposed to convey no semantics. Therefore, a model should be interpretable with the classes named "A", "B", "C", etc. In the "traditional" view you can see the codes and either remember or look up the semantic. Thus, my question is whether you can add display of the code constraints in the SMD representation?
- The missing info is in the model--just not displayed on the diagram--so adding it to the display is trivial as long as there's consensus on how the information should appear. --brandonulrich 15:51, 13 March 2009 (UTC)
Gunther
I am O.K. with a UML notation in general. However, I think that unfortunately the wrong piece of the old notation was preserved and the better piece was toasted. I never liked "choice boxes" as they are misleading and a main semantic confusion. On the other hand, block-arrows are an advantage as the criss-crossing lines can be very bothersome. So, I would much rather like to see a UML with normal UML specialization arrows instead of choice boxes.
Just as a reminder to the origin of the blocks we had up until now. We used to do plain UML in HL7 back until 1999/2000. I introduced the blocks as a means of communicating to business people for tutorials from where they had been adopted by MnM and Lloyd wrote the Visio automation. The blocks are often seen in conceptual slide shows, they promote very compact layout that fits on a slide. The blocks trade off more in-class space for empty space surrounding the classes and reduce criss-crossing lines drastically. This is a major advantage. The blocks sometimes feel rigid, but by enlarging the size of the class boxes, the diagram author can arrange them compactly and visually enhancing the important classes (i.e., the classes with the most connections is usually the more important one and since it covers more area will be emphasized to the reader.)
If I could just wish up the tools, I would go back to my original single-box specialization notation and routable block arrows.
Standard UML diagram (same model)
Following is a reduced image (click to enlarge) showing standard UML notation for the R_Specimen Universal CMET. Software developed in the Open Health Tools (OHT) Modeling Tools for Healthcare project was used to import the MIF2 representation of this CMET into UML.
Two variations on a UML class diagram are included below. The first model represents the Participation and ActRelationship as a class with two separate associations, whereas the second example uses UML Association Classes. The first example also include all structured attributes in model classes in the diagram, whereas the second saves this information within stereotype properties that are not visible in the diagram.
The proposed SMD diagram notation is very similar to standard UML notation. It may be beneficial to define HL7 diagram notation as optional notational extensions for UML tool vendors. The notational extensions are guided by use of UML profile stereotypes that capture additional HL7 metadata.
Profile stereotype documentation for HL7 extensions will be added to the OHT modeling tools project wiki. A hyperlink will be added to this page when it is available.
The salient characteristics of using standard UML class diagrams for HL7 are as follows:
- Class: The RIM derivation is displayed using both stereotype and color. Most UML tools support choice of class background color. The OHT modeling tools project has automated the assignment of HL7 color based on the RIM derivation of classes.
- Shadow Class: The diagram convention of HL7 "shadow classes" is supported by hiding attribute and operation compartments and making the class background color a darker shade. See the example of SpecimenInContainer in the diagram shown above.
- CMET: CMET class references are displayed using a class box with attribute and operation compartments hidden. The CMET package name is shown within the class box using UML parent name of the class, e.g. (from COCT_MT090000UV).
- Choice Group: Choice group members are displayed using UML generalizations, which is how they are represented in the MIF. UML tools support user assigned changes to line weight and color, but relationships may not be changed to dashed lines because this has special significance in UML notation. In this example, the line weight of generalizations was increased to make choice groups more obvious.
- Association: Scoper associations are represented and displayed in UML diagrams with the <<scope>> stereotype. We are investigating the UML representation and diagram notation for source/target of association ends (see discussion in SMD diagram section).
- Entry Point: A CMET entry point is represented as a UML Interface with a Realization relationship from the class.
- Annotations: All HL7 model annotations are represented and (optionally) displayed on diagrams as UML comments. The various kinds of annotations are distinguished using stereotypes, e.g. <<Definition>>, <<Design>>, <<UsageNotes>>, etc. Any UML model element may have zero or more comments.
- Constraints: Model constraints are represented and displayed using UML Constraint. This is a separate metaclass from Comment. Each UML constraint specifies its language (e.g. "analysis" or "OCL") and the constraint text. Any UML model element may have zero or more constraints.
UML diagram using Association Class
- Structural Attributues: The HL7 structural attributes (classCode, typeCode, moodCode, and determinerCode) are represented using properties of the RIM stereotype on each class. The values are editable via property view fields. The idea behind this design is that many structural attribute values are predictable by users based on the RIM derivation, and the diagram is less cluttered if those attributes are not shown for every class in the diagram. For example, most Observation classes have classCode=OBS and moodCode=EVN.
- Association Class: The HL7 types for Participation, ActRelationship, and RoleLink are represented in UML using an Association Class. We discussed this in detail during the UML BOF at the Sept 2007 WGM, and the consensus was that association classes are a good match to the original intent of these types in HL7 methodology. When transforming MIF to UML models, the two separate associations are collapsed to one association, and all attributes are fully modeled in the association class. The use of two separate associations seems to be more of an implementation design view than a conceptual modeling view.
- Actually, Charlie Mead and I had explored this right back in 1998/99 and found that association classes are not a good match to the original intent of these types in HL7 methodology, because -- at least at that time -- UML definition for association class was that the association was fully identified by the two objects on either end of the association, however, the whole point of our associative classes is to allow the same two objects to associate multiple times, each time in different ways. In other words, the UML definition of association class required that the two objects made up a complete primary key to the association relation, when the HL7 use of an associative class allows for the primary key to include other attributes. Gschadow 17:19, 22 January 2010 (UTC)
Pros and cons
Benefits of the 'traditional' syntax
- Extremely space-efficient. Diagrams can be fit on a page or two with little white-space and lots of information
- "Important shapes" like Act, Entity and Role stand out more than Act-Relationship, Participation and RoleLink
- Directionality of ActRelationships (what's a subject of what) is immediately visible
- Names of relationship classes (e.g. Subject2, Subject3, Subject 24) that don't appear in the instances don't clutter up the diagram and annoy people
- Choices focus on the concrete classes, not the irrelevant abstract ancestors
- Serialization mechanism made clear through presence or absence of cardinality
- Significant HL7 familiarity with syntax
- Significant migration effort
- All existing published and balloted static models use the old syntax and would require conversion to move
- All of our existing documentation (e.g. V3 Primer), presentations, etc. use the old syntax
Drawbacks of 'HL7 Visio syntax'
- HL7 has often been accused of idiosyncrasy for maintaining its own diagramming notation
- It requires specialized explanation and training
- It requires specialized software tools with limited supply and support -- although it appears that all alternative presently described in this article also depend heavily on custom software
- The current tools have been perceived as inadequate for early requirements or analysis models, since the tools seem to prematurely force design features (e.g., HL7 "structural attributes") which may not stand out as obvious data elements of the business
Benefits of the new Eclipse SMD syntax
- Integration into modeling tooling framework, like in the Visio RMIM designer, the diagramming can check for the proper use of model archetypes (e.g., it does not allow different archetypes to be added to a choice.)
- Based on platform independent open source software, makes the tooling more available to a wider audience
- Connections can be drawn in any angle, forcing less layout constraints with more distant connections. This may reduce the need for shadow classes.
- The underlying diagramming tools provide some auto-layout functions that can be helpful
- Associative classes are displayed as regular classes: a class with two associations.
- More similar to standarde UML
Benefits of the 'straight' UML syntax
Note: If UML is used for designing HL7 (RIM) conformant information models, the users will require a UML profile (e.g. HDF UML Profile) to support HL7-specific extensions.
- Eclipse structure supports it out-of-the box
- Supporting the HL7 custom syntax would require substantial customization
- Increased cost, risk of bugs - [Where is the increased cost coming from? Vendors are offering free UML tools to HL7.]
- Ability to take advantage of new features added by Eclipse over time
- More familiar to the non-HL7-initiated, in particular implementers
- Helps better expose content from a UML modeling perspective
Objectives RMIM Diagram Graphics
From the very beginning, the core objective of the RMIM Diagram graphics was to display the semantic content of a model as fully as possible in the context of the diagram. The principle was that one should not have to "drill into" the shapes to find out what the core names are, what are the specified constraints (such as structural attribute codes), etc.
Discussion of Semantic Display Pros & Cons - GWBeeler
In order to assess the correctness of the semantic representation, I took a set of three classes (Act/Participation/Role) and extracted each from the examples provided. In then looked at the key features that are documented for the static models and asked how they were represented. The result is documented in the following composite diagram. The fragmentary images were taken as screen shots from the fully zoomed content of each of the three examples.
Key findings in this limited analysis have to do with:
- Structural Attributes – e.g. classCode and moodCode of the class (in RED ovals) SpecimenProcessStep that might have been named “SammysGoals”. One cannot know the model without knowing these code values
- Code values are missing in SMD, but are displayed in a subsequent release that was not used for this diagram;
- The presentation of these attributes can be suppressed or displayed (by option) in the UML tools. the entire concept is missing in UML
- Vocabulary constraints are displayed on the UML diagrams by showing them as a "default" value. This has two drawbacks: it only allows the "=" symbol whereas "<=" and "<" are also used in HL7 representations, and this is a mis-representation of the semantic relationship, as these are not default values.
- Association names become element names in the XML instances. Therefore the ability to find these on the diagram is important. In the Participation shown there are 2 of them (in BLUE ovals)
- The UML tool has an option to display these as "association classes". The association class representation is not used in the fragment below, but where it is used this representation does not conform to HL7's type model. The type model expects two named roles between the Participation and the Role, where as there is only one named role if association classes are used.
- Mandatory and Required specifications of attributes (in this case the contextControlCode in the BLACK oval)
- Absent in UML
Additional Considerations
- MIF supports capturing multiple graphical renderings of a single model. Specifically, it can support both standard UML and traditional HL7 diagrams for a single model
- MIF does not support this, the tools support this. One could also implement a custom diagram editor for the UML language that displays HL7 preferred diagram notation. Dave Carlson
- If we support multiple renderings and don't have auto-layout, committees would need to edit layouts in both styles that would mean increased work
- If we go with an auto-layout route existing algorithms support standard UML, the block-based models would probably require quite different auto-layout approaches.
- Auto-layout is only useful for an initial arrangement anyhow, regardless of which diagram style is used, there is significant amount of work going into conscious arrangement of shapes to yield a concise comprehensible diagram.
- I added this point because it is really, really important. I spend hours arranging shapes and in doing so I discover systematics and inconsistencies in my models. Gschadow 18:43, 22 January 2010 (UTC)
Other Discussion
We could use Eclipse-based UML 2.1 tools with HL7-specific extensions
- The UML diagram would look very similar if we used appropriate UML extensions (aka UML profiles). The following diagram shows the use of UML 2.1 and HL7-specific profile (based on the HDF Profile draft)
- Please note that a stereotyped "generalization" association is used to specify the classes that are members of a choice
Sample UML-based diagram for POCG MT000040UV: Family History (May 2008 Ballot)
HL7 members have access to free UML tools
- The cost of using UML to create static model diagram is free for HL7 members as follows:
- The OHT Modeling project provides a free Eclipse plugin that contains all the extensions required to author HL7 models in UML
- IBM and other vendors provide free Eclipse-based UML 2.1 tools. This program would be available to other SDOs or not-for-profit organizations that produce standards HL7 would like to harmonize.
Why can't HL7 just use commercial off-the-shelf UML tools?
It seems that existing UML tools provide certain features, including coloring and even custom shapes, custom properties, and possibly constraints. I have not seen clear evidence that this is not possible with appropriate configuration of complete off the shelve tools. An important drawback to the custom HL7 diagramming was the requirement for custom tool support. I think we should not embark on more custom tools before seriously pushing the limit of commercial off-the-shelf software. Gschadow 18:29, 22 January 2010 (UTC)
Domain WG Concerns
Here are issues seen from a domain work group perspective - Gregg
- Multiple Uses: The domain WG's use RMIM diagrams for two purposes: (1) confirm adequacy of a design with BUSINESS stakeholders and (2) input to the PUBLISHING process.
- Model vs. Diagram: The current RMIM Designer's inability to separate MODEL from DIAGRAM has led to extra work and quality problems.
- Structural attributes
- BUSINESS users do not find structural attributes helpful. PA stopped including structural attributes in the RMIM walk-through; we convey those semantics in the class description.
- Best option: support optional display of structural attributes AND support displaying parts of a model (to focus on specific concepts within overall model) without having to create a different model.
- Color Coding
- Relying ONLY on color to convey the RIM source of a class in the diagram is a weakness of the current approach.
- Section 508 requires that "web pages shall be designed so that all information conveyed with color is also available without color."
- Best option: also support text display of RIM source (e.g., though use of stereotypes)
- Vocabulary binding
- The distinction between = (exactly this concept) vs. <= (this concept or any of its specializations) seems like a tough issue both in modeling and in creating schemas. Is this even represented in the schemas?
- Perhaps this should be replaced with binding to value set only and not try to represent it on the diagram.
- Conformance
- Showing conformance information on the DIAGRAM forced PA to create an explosion of models in the Encounter domain. We have one model and a spreadsheet on which we defined constraints (M, R, O, NP) for every attribute and association by encounter type and trigger event. Each column in the spreadsheet requires manual creation of a separate model (laborious and error prone process) and every change requires hand editing each of the models.
- Each implementation requires creation or adoption of a conformance profile in which each attribute and association left optional by the domain wg must be set to R or NP anyway.
- Best option: separate conformance from the DIAGRAM and allow it to be inherited/modified in derived MODELS.
- Association Classes
- The diagram needs to distinguish player/scoper and target/source.
- Don't understand naming issue but it sounds like this is related more to translation to XML than to modeling.
- Tooling
- The current MnM discussion wraps model representation very tightly with tooling choices. That means we cannot dismiss tool selection issues such as support for end-to-end modeling from requirements, dynamic behavior, information model, to serialized model.
- The NHS has created a number of useful related tools such as MIF-DIF, annotation editors and instance generators.
- The UML group accesses the large community of UML tool developers so the costs are shared broadly and HL7 can focus on unique requirements
- Best option: combine the efforts under OHT
Sorry for the length of this response but I have devoted a good chunk of the past 7 years of my work life to HL7 V3 publishing so a good outcome is important to me.
Some feedback from Lloyd
- There is certainly a need to present models to business users. The structural attributes are part of the "noise" that makes the models hard to understand. However, it's only one part. A lot of the RIM-based modeling (e.g. having 'patient' expressed as 3 classes - participation, role & entity - rather than 1) adds to noise. We're working on a collapsing process that allows models to be rendered in a more business-like way. Having diagrams of this collapsed view would be useful as well. However, this is a completely different use-case than the base model diagrams.
- Diagrams are representations of a model. The need to support conformance has absolutely nothing to do with the diagramming approach. You'd need to create just as many models, whether it was shown in the diagrams or not. In the end, I'm hoping we'll have diagrams for absolutely ever model.
- Exposing conformance in the diagrams is critical. It's a key piece of design data - just like mandatory and cardinality. Note that the diagrams are used at more than just the UV level where there tends to be more optional stuff and conformance isn't declared as often.
- Tooling will almost certainly be Eclipse based with a target of having a desktop that allows full integration of all modeling steps. Off-the-shelf UML tools may well be used for some aspects, such as requirements. However, a significant layer of customization will be needed on any UML tool used to construct static models due to the large quantity of "tag" data HL7 requires in its methodology, as well as the lack of UML support for derivation. Because of the degree of customization/extension required anyhow, we're not necessarily constrained to a pure UML diagramming syntax even if the underlying tool happens to be off-the-shelf UML.
Graphical rendering format requirements for publication
The following is a set of requirements that I (Lloyd) think exist for the "official" graphical format:
- The format used in design must be the same one published for review with absolutely no human intervention required
- The information that is important to designers is the same as that required when reviewing a model for appropriateness
- We don't have the bandwidth to make any changes to layout or shape position between the design view and the publication view
- The format must expose all classes, attributes and associations in a single diagram, including structural attributes
- All information must be shown to clearly understand the model.
- A single diagram is necessary to allow complete and easy review of the model
- Separate diagrams of specific sections based on subject area is fine, so long as there's always a single diagram of the whole model available. (Ideally the sub-diagrams should not require any manual graphical layout.)
- The format must clearly expose all key pieces of semantic information:
- Classes: Name, RIM backbone type, whether the class is "complete" or not, templates that can be or must be applied to the class
- Attributes & Associations: name, datatype, cardinality constraints, mandatory, conformance, default value, fixed value, vocabulary constraints, length constraints, update modes allowed, update mode default, enumeration constraints, range constraints, formal constraints, usage constraints
- All of these properties convey key semantic and constraint information. It's not possible to evaluate the correctness of a model without knowing all of them. With a background in the RIM, it *is* possible to evaluate the correctness of a model if you have all of this information
- In addition, it would be good to support the following: Business names, whether something is an extension (foreign namespace or tagged) and whether something is deprecated, usage notes, design comments, open issues
- While not critical to understanding the model, they provide context that is likely to affect design decisions and help to make the model more understandable. Note that while these types of annotations should be able to be exposed, not all of them will need to be. It will be up to the model designer to determine which comments are of sufficient importance to justify exposing on the diagram.
- It is not necessary to expose some type information such as immutability, history, derivation information, definition, rationale, requirements, stability remarks, mappings, examples, ballot comments, change requests and deprecation details
- This information is not necessary to review or interpret the model, though it will need to be available for those wishing to drill into the model.
NOTE: Content in italics is content not currently exposed in the Visio tool
Model vs. Diagram
It is possible to have multiple diagrams for a single model. Diagrams can choose how much or how little information is exposed. However, multiple diagrams exposing different amounts of data come with a cost. There is usually a need to manually drag the various shapes around to ensure they do not overlay each other or their association lines. This adds significant maintenance effort and increases the probability of models having at least one diagram that does not render properly.
It is therefore desirable to have a base diagram from which all other diagram views can be derived in an automated fashion without human intervention. In general, this means that the base diagram needs to have the "most" information captured, with subsequent diagrams removing information and increasing the amount of whitespace in the diagram without changing shape sizes or layout.
Resolution
We will discuss this on the January 30th conference call