Open BSnoeijerCD opened 1 month ago
@ASL-rmarshall and @dih-cdisc Can you review my suggestions below?
Updates of the V3 rules that are needed based on the changed attribute names:
Additional checks based on change to optional filling Administration frequency, route and dose
Additional checks based on new additions to the model:
I think the rest is all handled by the referential integrity and schema. Maybe we need to reconsider the required link to ingredient. Do we want to require an ingredient in case of placebo?
@BSnoeijerCD I agree with your suggestions above, with the following additional thoughts:
StudyVersion
to have an API-only collection of AdministrableProduct
s. However, given that rules are only applied within the context of a study version, checking that an administrable product is defined within the study version is the same as the generic "referenced id values must be valid" rule that we were discussing on 2024-0816 (#454).@BSnoeijerCD These are my thoughts for additional checks based on this modelling (without my suggested tweaks):
strengthsLowerLimit
strength for every strengthsUpperLimit
of an Ingredient
.
Strength
strengthsUpperLimit
strength is expected to be the same as the unit for the denominator of the corresponding strengthsLowerLimit
strength.
Strength
.strengthsUpperLimit
strength is the same as the unit for the numerator of the corresponding strengthsLowerLimit
strength, then the value for the numerator of the strengthsUpperLimit
strength must be greater than the value for the numerator of the corresponding strengthsLowerLimit
strength.
Strength
and the Range
class were used, this would be covered by the new rule I've proposed for the Range
class (see CHK0198).Strength
and the Range
class were used and the unit
relationship were updated to point to AliasCode
instead of Code
, then this rule would apply for both Quantity
and Range
.Strength
and the Range
class were used and the unit
relationship were updated to point to AliasCode
instead of Code
, then this rule would apply for both Quantity
and Range
.substanceCode
is required for an Ingredient
? If so, we should define a rule.AliasCode.standardCode
for Ingredient.substanceCode
? If there is one, we should add a rule. If there isn't one, we shouldn't use AliasCode
- there should just be multiple substanceCodes
instead.Ingredient.name
? (If so, I think this would be covered by CHK0009).AdministrableProductProperty
with the same type. But should we have a rule for unique property values (no more than one property per type/text/quantity)?AdministrableProductProperty
text
and quantity
expected to be used? It looks like text
is required, so what happens when the property value is specified as a quantity
?denominator
required in Strength
? If we don't have a denominator, it'll be difficult to figure out what the strength represents and how it relates to the dose.@dih-cdisc @ASL-rmarshall
I added the following rules based on the above:
Not added
To discuss with PO:
To discuss with PO:
- not sure whether aliasCode is specifically intended to have CDISC code as the standard
No, they can be any code lists, generally CDISC, bit not always. An example is geographic/country codes from ISO. There was a note in the IG but updated to make it clearer
@dih-cdisc @BSnoeijerCD OK - rephrasing the question about the standard codelist for substanceCode (as it was) based on above responses and updated model:
codes
relationship to the Code
class (in the same way that we allow multiple StudyIntervention.codes
, which has the same "Point out to multiple..." comment in the CT file).It would probably also be a good idea to change "CDISC code" to something like "term from a standard codelist" in section 4.5 of the IG, which currently says:
Where a CDISC code is demanded by the model but flexibility is needed, users may include other terms (aliases) using the AliasCode class.
It would probably also be a good idea to change "CDISC code" to something like "term from a standard codelist" in section 4.5 of the IG, which currently says:
Where a CDISC code is demanded by the model but flexibility is needed, users may include other terms (aliases) using the AliasCode class.
See comment above "No, they can be any code lists, generally CDISC, bit not always. An example is geographic/country codes from ISO. There was a note in the IG but updated to make it clearer"
@dih-cdisc Apologies - missed that. But the question still remains. The updated IG says:
Where a standard code (typically a CDISC code but not always) is demanded by the model but flexibility is desirable / needed, users may include other terms (aliases) using the AliasCode class.
When coded, would each substance have a "standard code ... demanded by the model"? I haven't heard or found any mention of a standard codelist for substance that's demanded by the model, so I don't think we should be using AliasCode
.
We already have an apparently equivalent relationship for StudyIntervention
- in the CT spreadsheet, StudyIntervention.codes
has an equivalent description and exactly the same text in the "Has Value List" column:
Y (Point out to multiple Biomedical coding dictionaries such as WHODrug, ATC, UNII, etc.)
The StudyIntervention.codes
relationship is defined as a 0.. relationship with Code
and, if the relationships are equivalent, I think we should define a Substance.codes
1 -> 0.. Code
relationship in the same way, instead of Substance.code
1 -> 0..1 AliasCode
.
@dih-cdisc Apologies - missed that. But the question still remains. The updated IG says:
Where a standard code (typically a CDISC code but not always) is demanded by the model but flexibility is desirable / needed, users may include other terms (aliases) using the AliasCode class.
When coded, would each substance have a "standard code ... demanded by the model"? I haven't heard or found any mention of a standard codelist for substance that's demanded by the model, so I don't think we should be using
AliasCode
.We already have an apparently equivalent relationship for
StudyIntervention
- in the CT spreadsheet,StudyIntervention.codes
has an equivalent description and exactly the same text in the "Has Value List" column:Y (Point out to multiple Biomedical coding dictionaries such as WHODrug, ATC, UNII, etc.)
The
StudyIntervention.codes
relationship is defined as a 0.. relationship withCode
and, if the relationships are equivalent, I think we should define aSubstance.codes
1 -> 0..Code
relationship in the same way, instead ofSubstance.code
1 -> 0..1AliasCode
.
Agree, looks like a list of codes rather than an Alias with a single std code plus aliases
@dih-cdisc Apologies - missed that. But the question still remains. The updated IG says:
Where a standard code (typically a CDISC code but not always) is demanded by the model but flexibility is desirable / needed, users may include other terms (aliases) using the AliasCode class.
When coded, would each substance have a "standard code ... demanded by the model"? I haven't heard or found any mention of a standard codelist for substance that's demanded by the model, so I don't think we should be using
AliasCode
. We already have an apparently equivalent relationship forStudyIntervention
- in the CT spreadsheet,StudyIntervention.codes
has an equivalent description and exactly the same text in the "Has Value List" column:Y (Point out to multiple Biomedical coding dictionaries such as WHODrug, ATC, UNII, etc.)
The
StudyIntervention.codes
relationship is defined as a 0.. relationship withCode
and, if the relationships are equivalent, I think we should define aSubstance.codes
1 -> 0..Code
relationship in the same way, instead ofSubstance.code
1 -> 0..1AliasCode
.Agree, looks like a list of codes rather than an Alias with a single std code plus aliases
Ok. I will update it in the next push today.
Formulation missing from intervention and alignment with IDMP. See feature ticket #316
See JIRA 520