Laura Cavanaugh · Aug 29

How to store and translate CodeTableDetail value with all punctuation?

Hello; I am using a custom class extending CodeTableDetail (actually it extends CodeTableTranslated) for a MedicalClaimLine.Extension property for a Procedure Modifier value, in addition to the existing MedicalClaimLine.ProcedureModifierItems property (this is a list of %String).  This works very well, stored AND translated correctly, until a valid ProcedureModifier value is used that is all punctuation: ##,  **, or ++.

I know that the CodeTableDetail objects can not match 1.P (all punctuation), as seen in the ToQuickXML method that writes out the SDA in XML format. If a Code is all punctuation, the method quits, and the value is not stored in SDA; nor is it translated. The ToQuickXML method does make an exception for UoM, which allows a value of %.  However, I had hoped to override this custom class in my custom class, and following the UoM code, allow the values of ##, **, and ++.

This almost works, until an unseen force calls the ToQuickXML method one last time with an empty Code, and the value is not stored or translated (this is seen in some test globals). 

It has occurred to me that the standard property, ProcedureModifiers as list of %String, is so designed because of this limitation; and yet, I have all of the Descriptions for this value in a CodeSystem, and I'd really like to use it as a translated property.  All other non-punctuation Procedure Modifier values are stored and translated, except for these 3 values.

Do you have any other ideas?




Class HS.Local.SDA3.CodeTableDetail.zProcedureModifier Extends HS.SDA3.CodeTableTranslated
    Set qq=$C(34)_$c(34) // double quote
    // original code
#if 0
    if tClass'="UoM" {
        $$$GENERATE(" If ..Code?1.P Set ..Code="_qq)
        $$$GENERATE(" If ..Description?1.P Set ..Description="_qq)
    Else {
        $$$GENERATE(" If ..Code?1.P&&(..Code'=""%"") Set ..Code="_qq)
        $$$GENERATE(" If ..Description?1.P&&(..Description'=""%"") Set ..Description="_qq)
    // @override with this code -- just for this class's SDA
    If tClass'="zProcedureModifier" {
        $$$GENERATE(" If ..Code?1.P Set ..Code="_qq)
        $$$GENERATE(" If ..Description?1.P Set ..Description="_qq)
    Else {
        $$$GENERATE(" If ..Code?1.P&&((..Code'=""##"")&&(..Code'=""**"")&&(..Code'=""++"")) Set ..Code="_qq)
        $$$GENERATE(" If ..Description?1.P&&((..Description'=""##"")&&(..Description'=""**"")&&(..Description'=""++""))  Set ..Description="_qq)
    // end of @override
    $$$GENERATE(" iF ..Code_..Description="_qq_" Quit")
Product version: HealthShare 2019.1
1 44
Discussion (2)1
Log in or sign up to continue

I found the other method that needs to be overidden.  It's the XMLImportSDAString method.  This method was already making allowances for the "%" character for the HS.SDA3.CodeTableDetail.UoM class, so I follows the example and added my valid characters when it's importing SDA for the HS.Local.SDA3.CodeTableDetail.xProcedureModifier class.

This is a ​​​​​​screen snip of the code: