This wiki has undergone a migration to Confluence found Here

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, Regulated Product Submissions, and Drug Product Stability)
  • 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:


CPM Governance as adopted during the San Diego WGM Sept 2011

The SVN repository is at

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

From the ISO FDIS for 11615

For "Marketing Authorisation" and "Manufacturing Information"

In A_ProductInformation

1) Facility to indicate the country(ies) that a given marketing authorisation is valid in. This is not the same as the territory that scopes the agency that oversees the marketing authorisation.

QUESTION: Can you please give a use case? We have some of this already, just to make sure now we can use the same structure perhaps or what really is the issue? Gunther 22:12, 11 September 2011 (UTC)

2) Facility to use an additional relationship between a CONTRACT act (the Approval) and a Marketing act to be able to describe the local marketing information that accompanies an approval - possibly a "PERT", please?

OK: We would agree to add an ActRelationship from MarketingAct to Approval meaning that this MarketingAct is happening with the specified Approval. It might be PERT or a better relationship type. Gunther 14:35, 13 September 2011 (EDT)

3) A confidentiality code on the role coming from the Holder participation, to be able to describe the confidentiality of the information about the marketing authorisation holder.

OK: This is easy to do, let's do it. Gunther 22:12, 11 September 2011 (UTC)

4) A Contact Party role and an SDLOC role on the Agency entity, to support the description of any contact parties within the MRA and any alternative locations (for offices of) the MRA. This would be re-used for the Approval information that is associated with the various manufacturing operations that need describing as well (see below).

4.1 - OK: Agency contact party could make sense. Gunther
4.2 - QUESTION: can you give use case scenario for this SDLOC thing? Gunther
more discussion has happened ... one obvious thing to do is to make the dummy-role on the holder participation a real role with scoper and player. It could point to the AssignedEntity role (e.g. POCP_RM303000)

In E_ProductEstablishment

1) We need SDLOC on the Organisation entity, to describe any alternative locations (for offices of) the organisation - primarily to be used when describing various manufacturing scenarios

COMMENT: we already have any level of sub-organization which is used today for multiple establishments, representing offices, importers, why is that not enough and how would you differentiate when to use which role? Gunther 13:23, 12 September 2011 (UTC)

2) We need a role.code on the Contact Party role, to describe the role of the person in the organisation (be that for the marketing authorisation holder organisation or the manufacturing organisation). This will also allow description of QPPV etc.

OK: Very true, I already use these attributes internally in implementation for exactly the same purpose, so yes. Gunther 22:12, 11 September 2011 (UTC)

3) The various manufacturing processes can be described using the ActDefinition in E_ProductEstablishment, but there appears to be no way to describe the formal authorisation and authorisation agency for these processes. Having a relationship to an Approval (contract) act, with its associated author/TA/Agency (plus Contact Party and SDLOC requested above) would meet that requirement.

COMMENT: Interesting, so in the scope of use-cases is facility approval, facility inspection and those issues? Here we have this only implemented for facility registration, i.e., a unilateral declaration of manufacturers of their activity. I don't think that each activity requires approval, for instance, an importer would not require agency approval. Also many facility are fulfilling more than one activity. I think some real use case scenarios would be needed to ensure whatever we add here will be what is really needed (and will really be used). Gunther 13:23, 12 September 2011 (UTC)

For the Clinical Particulars Section

The clinical information described in the ISO FDIS for 11615 is, I think, a little more structured (and codified) than that in SPL, but nevertheless we have found that the structures in A_ProductGuidelines(SPL) are able to accommodate pretty much all of the requirements, which has been very pleasing. Inevitably though, there are just a couple of things......

COMMENT: (Thanks, may be you want to consider that next time in the Pharmacy Committee as well? Gunther)

1) Having the .text attribute added to the SubstanceAdministration1 act would be very helpful, though. Each clinical particualr (be it an indication, CI, DI etc.) has its full text statement as well as its coded decomposition, and it seems that the core SubstanceAdministration1 act .text attribute would be the right place to hold this.

OK: No problem. Gunther 13:23, 12 September 2011 (UTC)

2) Much as I (Julie) am loathe to use the .code attribute on an SBADM act, I think we do have a valid use case for it - on the SubstanceAdministrationCriterion act, to describe whether the "other therapy" is second-line or adjunctive etc.

COMMENT: possibly, but if we were to do this, what would be the starter terminology and how exactly would each term be defined? Doesn't second-line mean do this if the first line fails? If so, isn't this more a concept of a relationship between therapies than an absolute? Or, if you witnessed a "second-line" therapy being administered, would you notice it's "secon-line" nature? If not, this probably does not belong in the SBADM Act itself. Same comment for adjunctive. Are you looking in main SubstanceAdministration1-precondition or Issue-subject? Where I think it might best fit is Protocol if we extend Protocol component target with the choice of Acts besides Monitoring. Gunther 13:23, 12 September 2011 (UTC)

3) In the FDIS, indications and contra-indications share a very similar pattern - and we could model this very nicely - and therefore make the implementation easier to follow for users - if we could use the act relationship CIND - contra-indication - as a choice with RSON (reason) for indication. We realise that this differs from the "Issue" pattern, which we use for Adverse Effects and Interactions. This may need some further discussion.

COMMENT: This is making me smile, because I too thought so way back in 1999, that's why CIND exists. I initially didn't like the Issue stuff as much (but I think you made me do it), but today I think the Issue is simple and powerful to not only say: "don't give this in that situation ..." but also "because if you do then #@*$ may occur". Contraindication and adverse reaction are really just gradual differences and with Issue they meet on an extremely useful middle ground. Gunther 13:24, 12 September 2011 (UTC)

4) There is a lot of use of the EVN.CRT mood, though this is deprecated. Could we review this, please?

QUESTION: What would the non-deprecated way of doing this be? There's some new attribute? Does that really matter if this is all fixed anyway? Gunther 13:24, 12 September 2011 (UTC)

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

  1. A substance name is a string that needs to have a language designation; it can also have 0...* "types". The Substance entity in the CPM Substance model has name as COLL<TN>; we think that as trivial name, it has lost its ability to have a language designation; suggest that using either EN or ST.NT to carry the text name and the language may be more appropriate?

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

Comments for Drug Stability Reporting:

Stability reporting has been identified as a POCP_DM010000UV stakeholder whose reporting needs were to be explored. While attending the Fall 2010 Working Group Meeting, the stake holders of Drug Stability Reporting were not heard due to time limitations. We are noting our exception to the model in it current form because it does not address the notion of substance as it is understood in stability testing. The model is focus on how the product presents itself to the patient as an administered product. This in turn makes the substance an administered substance. This does not correlate to stability testing, where the substance (Active Pharmaceutical Ingredient) is a manufactured material, which is similar to a product. There are, however differences between a substance and product that precludes using the Product ProductKind when dealing with substances.

Please refer to the Stability Study RMIM. Notice that the message has a choice to report on a substance or a product. Nowhere in POCP_DM010000UV is this choice available. The choice determines the use of other elements and attributes. Most importantly a substance will be an instance of an ingredientManufacturedMaterial with a lot number, existence time and a retest time. We do not think you adequately model the Substance as a ManufactureMateial.