SchemaMap.Tool.UI.View
class SchemaMap.Tool.UI.View extends %ZEN.Component.page
This tool is a data viewing, validation, analysis, and editing tool that helps developers understand and create mappings between complete patient data schemas such as FHIR, SDA3, Trak, and HL7.A code generation framework behind this tool generates the data transformations that execute these mappings. This framework includes a library of supporting utilities and sub-transformations that handle known issues and differences between schemas. Features of the front end tool are:
View:
Choose an item of interest (resource, object, or data type) from the source schema to be mapped. You see a table with one row per field in the source item. In columns at left is data defined by the schema itself: Data type, list vs. single, object vs. value, required vs. optional.
View-Only:
The UI has a view-only mode, which is shipped with the product. In this mode, the UI serves as documentation of field-to-field mappings from one schema to another. The remainder of this description text concerns the read-write mode used in development to create and modify those mappings. Ignore for view-only mode.
Edit:
In columns at right, you can add/edit/save a mapping from each field in the source item to some field in the target schema. As you work, the tool validates potential issues and flags them for you automatically.
Generate:
Generated code executes the transformations you defined in the tool. The generated code is InterSystems DTL, well known to customers. About 80% of the code for a project is generated from mappings defined in Schema Mapper. The other 20% must be hand-written to complete the project.
Import:
For each new schema added to this framework, the team writes code that reads the specification published by the schema authority, transforms its contents into this code generation framework's own schema-agnostic notation, then writes the result out to rows in a CSV file.
To start work on a project, one command imports the full code generation framework, plus the schema and mapping CSV files to be shared by the project. Upon import, these CSV files become usable as both SQL tables and ObjectScript classes.
Data:
Starting from the imported schema and mapping tables, import generates a structured set of lookup tables and other reference data that drive code generation and other tool features.
Import also generates full class model of each FHIR schema, for use by DTL, which requires a class model to exist, in order to perform transformations between properties in the objects.
Export:
Export is one button click. Exported schema and mapping CSV files are archived in the project branch, for reference, but not shipped. Only the generated transformations and supporting code are shipped.
Delivery:
Delivery of project code is more complex than export, and less frequent. Delivery involves an automated refactoring of all delivered code to match the package structure of the project branch receiving the code. This package structure and its naming conventions may vary between projects.
Report:
Validation of each mapping entry flags issues, outputs notices in the editing UI, sends annotations to the output DTL code, and fuels "percent done" calculations for online progress reports.
More detailed reports on the technical issues detected can be exported for study. Documents for review with expert advisers also exist; the development team can export these for review cycles as needed.
Link:
The tool automatically creates links in the view, and in its generated reports, whenever the data contains any item of interest, such as the name of another resource, class, data type, or field.
When you click one of these automatic links, the tool navigates to the source of information. This may be an alternate view in the tool, or it may be a reference site, such as a FHIR specification on HL7.org, an InterSystems class documentation page, or an IETF RFC.
Property Inventory
Method Inventory
- %OnAfterCreatePage()
- CalculateDisplayForPath()
- ClearResource()
- CreateEmptyMappingEntry()
- DeleteMappingEntry()
- DrawActionKey()
- DrawClassResource()
- DrawCodeTableDetail()
- DrawContent()
- DrawFHIRLevel()
- DrawFHIRResource()
- DrawGuide()
- DrawHelp()
- DrawIssueKey()
- DrawModeButton()
- DrawPairSelector()
- DrawReport()
- DrawSelector()
- DrawTable()
- DrawTableRow()
- EditIcon()
- ExportProjectFiles()
- ExportReportFilesAsync()
- ExportReportFilesSync()
- GenerateTransformsAsync()
- GenerateTransformsSync()
- GetCurrentValues()
- GetResourceCount()
- GetSDAExtensionMappingsURL()
- HasTarget()
- ResourceMap()
- SaveRowColumnValue()
- SetMappingEntryActive()
- SumValuesForPath()
- addRow()
- adjustActive()
- adjustHeight()
- applyClearAll()
- applyEditPopup()
- applyValues()
- autoMap()
- changePair()
- clear()
- configure()
- configureLookup()
- correctHeader()
- deleteMapping()
- doResize()
- editRowColumnValue()
- export()
- exportReports()
- getProxyForState()
- getWeightsAndGotoPage()
- hideDiv()
- initializeCurrentState()
- initializeLayout()
- onPopupAction()
- onloadHandler()
- onresizeHandler()
- openTable()
- pathScrollIntoView()
- pushCurrentState()
- redrawPage()
- refreshAndScrollIntoView()
- refreshCurrentTable()
- reinitDisplay()
- reviseDisplay()
- reviseSelector()
- setSelector()
- showDiv()
- transform()
- updateActive()
- userWillWait()
- viewReport()
Parameters
Defining this causes Zen to include a <link rel="shortcut icon" href="FAVORITEICON"> in the head section of the page.
For maximum browser compatibility this should be an .ico file.
The format of each item in the list should be as follows:
Resource[:Permission]
Permission is optional, and defaults to USE if not supplied. If it is supplied, it should be one of USE, READ or WRITE.
Properties
Methods
Subclasses can override this to add, remove, or modify items within the page object model, or to provide values for controls.
Running this method creates a new row that is empty. The user edits this row to add the mapping.
There can be a lot of ways to handle this UX case, but this way turned out to be the simplest to implement when both back end and front end code are considered.
TO DO: The back end method checks to see if there is already at least 1 mapping for this path. If not, it does nothing and returns a message. In practice, this case should not happen because the Add Row icon does not display in the row when there are 0 existing mappings for the path. Instead the Add Row icon is hidden and the user must click the Edit icon to add the first mapping for that row.
Inherited Members
Inherited Properties
- %condition
- %import
- %includeFiles
- %page
- %resource
- align
- aux
- backgroundTimerInterval
- cellAlign
- cellSize
- cellStyle
- cellVAlign
- children
- composite
- containerStyle
- cssLevel
- disabled
- dragAndDrop
- dragEnabled
- dropEnabled
- enclosingClass
- enclosingStyle
- error
- groupClass
- groupStyle
- height
- hidden
- hint
- hintClass
- hintStyle
- id
- index
- label
- labelClass
- labelDisabledClass
- labelPosition
- labelStyle
- layout
- name
- onafterdrag
- onbeforedrag
- onclick
- ondrag
- ondrop
- onhide
- onrefresh
- onshow
- onupdate
- parent
- showLabel
- slice
- title
- tuple
- useSVG
- useSoftModals
- valign
- visible
- width
- window
- zenPersistentPopup
Inherited Methods
- %AddChild()
- %AddChildAfter()
- %AddChildBefore()
- %AddComponent()
- %AddImportedComponents()
- %AddToSaveSet()
- %ApplyURLParms()
- %Attr()
- %BindExport()
- %ClassIsLatestVersion()
- %ClassName()
- %ConstructClone()
- %DispatchClassMethod()
- %DispatchGetModified()
- %DispatchGetProperty()
- %DispatchMethod()
- %DispatchSetModified()
- %DispatchSetMultidimProperty()
- %DispatchSetProperty()
- %DrawAutoLogout()
- %DrawClassDefinitions()
- %DrawComponentHTML()
- %DrawHTML()
- %DrawHTMLPage()
- %DrawJSStrings()
- %DrawObjectDefinitions()
- %EnclosingDivId()
- %EndBackgroundMethod()
- %EndScript()
- %Eval()
- %EvalC()
- %Extends()
- %ForceClientRender()
- %GetChildIndex()
- %GetComponent()
- %GetComponentById()
- %GetComponentByName()
- %GetEventHandlers()
- %GetLinks()
- %GetPageName()
- %GetParameter()
- %GetValueById()
- %GetValueByName()
- %GetXMLName()
- %IsA()
- %IsModified()
- %Link()
- %LinkCSS()
- %LinkScript()
- %MakeId()
- %New()
- %NormalizeObject()
- %ObjectModified()
- %OnAddToPageAfter()
- %OnAddToPageBefore()
- %OnBeforeCreatePage()
- %OnCreateApplication()
- %OnCreatePage()
- %OnDetermineCSSLevel()
- %OnDrawEnclosingDiv()
- %OnDrawHTMLBody()
- %OnDrawHTMLHead()
- %OnDrawHTMLMeta()
- %OnDrawObjectProperties()
- %OnFinishBackgroundTask()
- %OnMonitorBackgroundTask()
- %OnMutateChildren()
- %OnObjectSynch()
- %OnPreHTTP()
- %OnSubmit()
- %OnUseSoftModals()
- %OnZENDeserialize()
- %OriginalNamespace()
- %PackageName()
- %QuoteValue()
- %QuoteValueL10N()
- %RemoveChild()
- %RemoveChildren()
- %RemoveComponent()
- %RemoveFromSaveSet()
- %RunBackgroundMethod()
- %Self()
- %SerializeObject()
- %SetBackgroundMethodStatus()
- %SetErrorById()
- %SetErrorByName()
- %SetModified()
- %SetValueById()
- %SetValueByName()
- %SetValuesByName()
- %StartScript()
- %ValidateObject()
- %ZENVersion()
- ConvertParameter()
- Decrypt()
- Encrypt()
- EscapeHTML()
- EscapeURL()
- HyperEventCall()
- HyperEventHead()
- Include()
- InsertHiddenField()
- InsertHiddenFields()
- IsPrivate()
- JavaInstalled()
- Link()
- OnHTTPHeader()
- OnPage()
- OnPageError()
- OnPostHTTP()
- OnPostHyperEvent()
- OnPreHTTP()
- OnPreHyperEvent()
- Page()
- QuoteJS()
- RewriteURL()
- ShowError()
- StartTimer()
- StopTimer()
- ThrowError()
- UnescapeHTML()
- UnescapeURL()
- XMLDTD()
- XMLExport()
- XMLExportToStream()
- XMLExportToString()
- XMLNew()
- XMLSchema()
- XMLSchemaNamespace()
- XMLSchemaType()
- addChild()
- addChildAfter()
- addChildBefore()
- cancelPopup()
- childrenMutated()
- correctIELayering()
- createComponent()
- createComponentNS()
- deleteComponent()
- dragFinishHandler()
- dragHandler()
- dragNotifyHandler()
- dragStartHandler()
- dropHandler()
- dropStartHandler()
- endModal()
- exposeComponent()
- findElement()
- fireOnResizeEvent()
- fireOnUnloadEvent()
- fireOnUpdateEvent()
- firePopupAction()
- getChildIndex()
- getComponent()
- getComponentById()
- getEnclosingDiv()
- getHidden()
- getHintElement()
- getLabelElement()
- getOpener()
- getProperty()
- getSettings()
- getType()
- gotoPage()
- invokeSuper()
- isOfType()
- launchPopupWindow()
- makeId()
- onCreate()
- onDelete()
- onDisplayHandler()
- onEndModalHandler()
- onRefreshContents()
- onSerialize()
- onServerMethodCall()
- onServerMethodError()
- onServerMethodReturn()
- onStartModalHandler()
- ondisabledHandler()
- onhandleAutoLogoutWarn()
- onkeydownHandler()
- onkeyupHandler()
- onlayoutHandler()
- onlogoutHandler()
- onoverlayHandler()
- onunloadHandler()
- onupdateHandler()
- popupActionHandler()
- refreshContents()
- removeChild()
- render()
- renderContents()
- renderSVG()
- setComponentId()
- setHidden()
- setOverlayMode()
- setProperty()
- setPropertyAll()
- setTraceOption()
- startModal()
- startProgressBar()
- stopProgressBar()