Hello to everybody.
We have detected an issue in the ADL grammar related to the node_id (atXXXX value) of Internal References. An Internal Reference node, as any other C_OBJECT, inherits the node_id attribute. But its ADL grammar does not allow to define this value in a textual representation.
archetype_internal_ref:
SYM_USE_NODE type_identifier c_occurrences object_path
SYM_USE_NODE type_identifier error
We think it is necessary to allow the introduction of this information in some cases. When we re-use an internal data structure, we are maybe also changing its meaning. For example, looking at the example provided in the ADL 1.4 document, page 59.
CONTACT [at0004] ∈ { – home contact
purpose ∈ {-- etc --}
addresses cardinality ∈ {0..*} ∈ {
ADDRESS [at0005] ∈ { – phone
type ∈ {-- etc --}
details ∈ {-- etc --}
}
ADDRESS [at0006] ∈ { – fax
type ∈ {-- etc --}
details ∈ {-- etc --}
}
ADDRESS [at0007] ∈ { – email
type ∈ {-- etc --}
details ∈ {-- etc --}
}
}
}
CONTACT [at0008] ∈ { – work contact
purpose ∈ {-- etc --}
addresses cardinality ∈ {0..*} ∈ {
use_node ADDRESS /contacts[at0004]/addresses[at0005] – phone
use_node ADDRESS /contacts[at0004]/addresses[at0006] – fax
use_node ADDRESS /contacts[at0004]/addresses[at0007] – email
}
}
}
We re-use nodes at0005, at0006 and at0007 but we do not assign a new atXXXX code to them. Structurally, this is correct, but not semantically (i.e. we reuse structure but not meaning). It is not the same a “home” phone number than a “work” phone number. In fact, SNOMED uses diferent codes for each case: a “Patient home telephone number” (code 429697006) and a “Patient work telephone number” (code 428843000).
To sum up, it would be necessary to change the ADL grammar to support the use of new definitions of term_codes in the archetype internal references, something like:
use_node ADDRESS**[at1234]** /contacts[at0004]/addresses[at0005] – phone
Finally, it is necessary to remember that the archetype slot (which is a very similar use case) allows this kind of definition.
c_archetype_slot_id:
SYM_ALLOW_ARCHETYPE type_identifier
