This wiki has undergone a migration to Confluence found Here
<meta name="googlebot" content="noindex">

Common Product Model

From HL7Wiki
Jump to navigation Jump to search

This page will be used to discuss the content and publication of the Common Product Model.

Ambitions & Scope

The Common Product Model (CPM) will be an overarching domain information model relating to the HL7 v3 modeling of any kind (or instance) of a 'product'. The definition of the term product is intentionally kept loose at this point, but will definitely include:

  • Medication, incl. vaccines
  • Devices used in medical services
  • Anything else a person can be exposed to

The CPM is set up as a joint initiative within HL7 project, 'sponsored' by the O&O work group.

The following stakeholders have been identified:

  • Pharmacy (for Medication and possibly for devices)
  • Patient Safety (for Individual Case Safety Reports)
  • RCRIM (for Structured Product Labeling and Regulated Product Submissions)
  • PHER (for vaccines used in Immunization)


This space will list a number of storyboards that relate to the different perspectives on what a product is and how it is used.

These storyboards are divided into groups:

Current CPM Technical Corrections

Here is a list of issues that require technical corrections to the CPM. Each point is followed by the proposed correction.

R_ProductListed (POCP_RM010100UV)

New Items

Outstanding Items

Completed Items

  1. There are a number of Marketing Authorization Dates: First Authorization Date, Renewal Date, Variation Date, Withdrawal Date, Expiry Date. This can be solved by providing a recursive COMP relationship from an authorization to itself.
    DONE Gunther 16:33, 17 November 2010 (UTC)
  2. Each Marketing Authorization produces a GTIN. Provide a SubjectOf shadow from IdentifiedEntity.
    DONE Gunther 16:33, 17 November 2010 (UTC)
  3. IdentifiedEntity needs an effectiveTime
    DONE Gunther 16:33, 17 November 2010 (UTC)
  4. SubjectOf needs a time to indicate when the relevant product information took effect
    QUESTION: such time range would be provided by the connected Act, wouldn't it?
    DONE: My thought was that the effectiveTime of the document could be different from the time when it was attached to the product. But now that I look at it, I don't think that distinction makes sense. --Jduteau 23:06, 18 November 2010 (UTC)
  5. We need to indicate the dose form and the product classification that the marketing authorization pertains to.
    QUESTION: that is already supported because the Approval is connected to a Role whose player Entity has a dose form and can have classifications. Gunther 00:51, 18 November 2010 (UTC)
    CLARIFICATION: the authorization pertains to a specific form and classification. I'm unsure which Role you are referring to as the one with ProductEstablishment doesn't let me detail this.
    DONE: Relates to a specific product with form, etc. all part of the product description. Now, if you say the authorization relates to a "classification" then I think you really mean "indication", or "purpose" for which the product is approved. Currently this is held together by the product document, the label, that is approved. I have added the subjectOf participation to the specializedKind role. Gunther 14:09, 29 November 2010 (UTC)
  6. We need to have the address of the governing agency address.
    DONE Gunther 00:51, 18 November 2010 (UTC)
  7. How to tie the Marketing Authorization Procedure to the marketing authorization.
    ANSWER: the procedure may be reflected in the Approval.code, as it is in the U.S. or you might use the new Approval components to represent these procedures and other smaller actions.
  8. How do we indicate the point and country where a measurement was made.
    ANSWER: ingredient strength is connected to a product and if the strength is different, then it is a different product. The country-specificity can be done with the Approval act.
    CLARIFICATION: In the US there is an inhaler that is measured by dose that reaches the mouth whereas in Europe exactly the same product is measured at the point the dose leaves the spray. The values are simiilar but different so there effectivly 2 different strengths which are equivalent if you use common measurement measures. Hence a need to express measurement point and countrry. After rethinking this, I believe that I can map this as a characteristic of the ingredient.
    DONE: I agree with you, these fine details can be done with those characteristics. Gunther 14:09, 29 November 2010 (UTC)

R_Substance (POCP_RM080300UV)

New Items

Outstanding Items

  1. Need to indicate a substance that is related to a characteristic (antigen ID for cells)
    ANSWER: this is what Interaction is for: antibody - interactsIn - Interaction[Ab-Ag-binding] - interactor - antigen
    CLARIFICATION: antigen ID was one example - the generic use case is "Substance related to a property that is not the substance being described". And the problem with your solution is that I have a property of the substance and this property is related to an antigen and I need to provide the antigen ID.
    QUESTION: this clarification does not show any additional need. Your antigen ID is supported. "Substance related to a property" -- there are many ways by which substances can relate to properties of other substances. You need to be specific on the use cases. Give all the examples that you have, likely they are modeled in a few different patterns.
    1. If the substance being described is a T-cell, for example, which would be classified as a “structurally diverse substance”, then the auxiliary substance would be CD4 glycoprotein which would itself have a substance ID. So we’re not describing CD4 here as an interactant, we’re describing it as an auxiliary in the description of a property.
      You can think of the CD4 as a part of the T-cell, a moiety. But I guess (subject to further refinement of this example) you mean here the measurement of strength or quality of Sipuloeucel in terms of CD4. That is a metrological problem, where you measure one thing in terms of another. The question is what do you really need for this? If you specify the measured property as "CD4 linked flow-cytometry" or "anti-CD4 ELISA" or something like that, you do that in the Observation.code (Characteristic.code). What do you gain by referencing another code that means "CD4" somewhere in addition?
    2. In describing a polymer, the defining property might be the degree of binding to a dye that occurs (a bit like titration) and the particular dye would be the auxiliary substance.
      Again that is just a property code "Degree of binding to X-Dye". Only if you have more than 10 or 100 variants of this does it begin to make sense to post-coordinate the property code by moving the substance out.
    3. To describe a nanoparticle, which would be another “structurally diverse substance”, there may be a particular protein that would bind to the nanoparticle, the protein would be the auxiliary substance.
      Same issue, precoordinate this in the property code.
    4. To describe a low molecular weight heparin (bemeparin, dalteparin, enoxaparin), which would be considered a polymer substance, the amount of binding (again a bit like titration) of Factor IIA and/or Factor X could be used as a defining property. The Factor IIA or Factor X would be the auxiliary substances.
    Same issue, there are so many metrologic details that need to be provided to define the property that this post-coordination does not add much.
  2. The Moiety has a mandatory link to the played entity. For Subunits, I have no entity to reference, so this link should not be mandatory. I could just hang an entity since none of the attributes are mandatory, but that seems wrong.
    ANSWER: of course you must have an Entity, the subunit itself. The subunit must be something. Typically a protein subunit is coded on a different gene, so you would even have a different protein id (say if you use UniProt). Even if by "subunit" you mean "domain", such an entity can have and should have an identification, for instance, the UniProt sub-sequences (chains) have feature identifiers.
    REBUTTAL: Well yes I have the subunit, but I have no attributes about the subunit, i.e no ID.
    ANSWER: of course you have attributes about the sub-unit. You definitely will have something saying what the subunit is, e.g., kappa and lambda chains of an antibody. And as the document with example shows, you should assign a local id also, so you can refer to the subunits and describe how they are connected (e.g., by disulfide bonds).
  3. (Related to Completed #7) I have Glycosylation which has a number of characteristics (Type, N, O, C) and they can all repeat. So I still feel that the ability to have a parent characteristic (Glycosylation) with children (Type, N, O, C) is needed.
    ANSWER: still no, glycosylation type should not be a characteristic. It should be a code specified in the Moiety.code or Bond.code, see the document on page 31f (Posttranslational Modification).
    REBUTTAL: From what I understand about Glycosylation, it is a defining type of the Protein - Human, Other mammal, Yeast, Plant, Insect - they all produce completely different substances even if everything else about the protein is the same. So it does not belong in the Moiety.code or Bond.code as it is specific to the overall substance.
    ANSWER: Glycosylation is not a "defining type of a protein". It is a complex glycane (sugar-structure) that is linked at an N, O, or C atom on various amino acids. The glycane structure is a complex tree structure and usually not completely described (although some people in Glycoproteomics study the nature of these). The Glycane structure is different in different cells, so when you have recombination insulin in E. coli or Yeast, the glycane structures will be different. Of course when you change even one atom on a protein you will have a "different substance", but I don't understand the significance of "they all produce completely different substances", because without recombinant human DNA, the protein will be different. So, I don't understand what your rebuttal is saying and how it is relevant. What I said is that the glycosilation is the substitution of a glycane and that means a bond between a glycane and the protein. The Bond type will let you say things about the nature of the bond, i.e., N, O, C glycosylation is said there. Please refer to the document, it is described there with pictures.

Completed Items

  1. How to indicate the Gene and the specific Gene element that a Substance is derived from?
    ANSWER: IdentifiedSubstance - productOf - DerivationProcess - interactor - IdentifiedSubstance Gunther 00:51, 18 November 2010 (UTC)
    DONE --Jduteau 23:07, 18 November 2010 (UTC)
  2. We have a status and domain of names.
    ANSWER: for domain: NamedEntity - subjectOf - Policy Gunther 00:51, 18 November 2010 (UTC)
    QUESTION: for "status", what are those statuses?
    CLARIFICATION: current, alternate, superceded
    DONE: The specification of what name you need to use under what circumstances is carried by the Policy that you can associate with the Identified(Named)Entity role. If these policies are outdated, or say that you can use a name as an alternative or not any more, would all be handled by Policy. Also added statusCode and effectiveTime into NamedEntity and IdentifiedEntity roles, with a note to use Policy for fine control. Gunther 14:09, 29 November 2010 (UTC)
  3. How to indicate what the amount of a moiety is (mole ratio, weight percent) - this may be similar to the "Amount Type" that is present on all amounts.
    ANSWER: the Role.quantity gives you a ratio, if you put there 1 mol : 1 mol it's a mole-ratio, if you put 1 g : 1 g it's a mass ratio.
    DONE--Jduteau 23:07, 18 November 2010 (UTC)
  4. We need a "SubjectOf" relationship on the NamedEntity to indicate reference information for the names.
    DONE Gunther 00:51, 18 November 2010 (UTC)
  5. Need to provide documentation of a characteristic.
    QUESTION: use case please? Do you mean the subjectOf relationship to Document should be added?
    CLARIFICATION: Yes, there is a need to provide the reference documentation for a characteristic value, so subjectOf relationship to Document.
    DONE Gunther 14:09, 29 November 2010 (UTC)
  6. We have processSteps that have sub-processSteps. SubstanceSpecification does not allow this.
    DONE Gunther 00:51, 18 November 2010 (UTC)
  7. There needs to be a way to link characteristics to each other - either as a grouping of related characteristics or as a parent/child relationship.
    QUESTION: It's easy to add this, but there should be at least one use case. What is it?
    CLARIFICATION: I have a Protein Substance that has information about the sequence. There are characteristics that are all about the sequence. As well, each sequence has a number of sub-units and each sub-unit has a number of characteristics. So it would be nice to tie all of the sub-unit characteristics together and I believe that it is necessary to indicate that each subunit set pertains to the sequence.
    ANSWER: Subunits are different Moieties. You put characteristics onto the molecular part that they pertain to, not on the higher order molecular complex. So, it is actually good that you do not have these characteristics structures, because they make you focus on modeling the molecule, not the information about it. Gunther 14:09, 29 November 2010 (UTC)
  8. Many codes have a status and change date of the code.
    QUESTION: which codes? the "last change date" is a database-ism that does not really do much, in most cases you can refer to the Document that contains the change if you wanted to.
  9. R_SubstancePresence - the scoper is not actually attached to the choice box.
    DONE Gunther 12:49, 3 December 2010 (UTC)
  10. Need to provide documentation of the derivation process - need a link to Document.
    DONE Gunther 12:49, 3 December 2010 (UTC)