Procedure.methodCode and Observation.methodCode
The Procedure.methodCode is defined by HL7 as “identifies the means or technique used to perform the procedure”. The Observation.methodCode is defined as “a code that provides additional detail about the means or technique used to ascertain the observation.”
SNOMED CT concepts have a defining attribute that specifies the [ 260686004 | method ] used. SNOMED CT "evaluation procedure" concepts, which may be used to specify the nature of an observation, have a defining attribute that specifies the [ 370129005 | measurement method ]. SNOMED CT [ 404684003 | clinical finding ] concepts, which may be used as values of a nominalized observation or assertion, have a defining attribute that specifies the [ 418775008 | finding method ]. The post-coordination rules that apply to SNOMED CT permit refinement of this defining attribute. The resulting post-coordinated expressions can be represented in a single coded attribute using the HL7 Concept Description (CD) data type.
The result of this is that there are two overlapping approaches to the representation of methods associated with observations and procedures.
The following rules avoid redundancy and the risk of misinterpretation by restricting the use of the methodCode in Procedure and Observation class instances. There are two sections dealing with information models which 1) contain only SNOMED content and 2) allow multiple terminologies to be used.
If an Act.code or Observation.value contains only SNOMED-CT content then the following shall apply:
- The methodCode attribute SHOULD be omitted from any Act instance.
- If necessary the method applicable SHOULD be represented as part of the SNOMED-CT expression (in Act.code or Observation.value) by refining the relevant method attribute as part of a post-coordinated expression.
If an Act.code or Observation.value contains SNOMED-CT content as one permitted code system then the following shall apply:
- The methodCode attribute SHALL be optional in any Act instance.
- If the methodCode attribute is present in an Observation or Procedure class instance in which the Act.code or Observation.value is expressed using SNOMED-CT then:
- The methodCode SHALL also be represented using SNOMED-CT
- The methodCode SHALL be the same as, or a subtype of, the value of the relevant method attribute as specified in the SNOMED-CT expression
- The methodCode SHALL be treated as equivalent to a restatement or refinement of the relevant method attribute in the SNOMED-CT expression
- If the value of the methodCode attribute is incompatible with the above rules then this SHALL be interpreted as an error
Note: The relevant method attribute depends on the SNOMED Concept Model in respect of the type of procedure or finding. It may be one of the following: [ 260686004 | method ], [ 418775008 | finding method ] or [ 370129005 | measurement method ].
The notes following the definition of Observation.methodCode make it clear that the intent is not to repeat a method implied by the Act.code.
In all observations the method is already partially specified by simply knowing the kind of observation (observation definition, Act.code) and this implicit information about the method does not need to be specified in Observation.methodCode.
The notes following the Procedure.methodCode are less explicit about avoidance of duplication. However, they do suggest that code systems might be designed with relationships between procedures and possible method – which is exactly how SNOMED CT is designed. What the note does not take into account is that the terminology may also specify a way to represent a specific method with the procedure in a single code or expression.
'… a code system might be designed such that it specifies a set of available methods for each defined Procedure concept'
Therefore, if the Act.code or Observation.value specifies the method to a sufficient level of detail, there is no requirement to include a separate methodCode attribute. When using SNOMED CT post-coordination to refine the method, the Act.code or Observation.value specifies the method to the same level of detail as can be achieved using the methodCode.
The notes on methodCode use "open" and "laparoscopic" procedures as examples of differences in method. SNOMED CT makes this same differentiation using another defining attribute [ 260507000 | access ]. This highlights the potential for confusion from using both SNOMED and HL7 representations of method.