r Ryan
on

 

It appears that in the new version of Pinnacle Community, when define.xml is generated from an Excel spec document, the ItemDef OIDs for value-level metadata are based upon the WhereClause. For instance, our metadata for ADPP.AVAL depends upon the value of ADPP.PARAMCD, resulting in ItemDefs like

<ItemDef OID="IT.ADPP.ADPP.PARAMCD.EQ.d7204caf709bad606878007acdaf21469fe8bb41"
                  Name="ADPP.PARAMCD.EQ.d7204caf709bad606878007acdaf21469fe8bb41"
                  DataType="float"
                  Length="14"
                  SignificantDigits="7"
                  SASFieldName="AVAL"
                  def:DisplayFormat="14.7">

However, it's possible that a second variable other than AVAL may depend on the same WhereClause. This creates a new ItemDef with an identical OID but different SASFieldName. This is problematic because OIDs must be unique. 

Is there anything we can do to ensure unique OIDs, short of editing the .xml file directly?

Forums: Troubleshooting and Problems

j Jozef
on May 24, 2019

Dear Ryan,
ItemDefs are meant to be reusable. For example, for "STUDYID" and "USUBJID" you won't want to generate different ones for each domain.
The same applies to ValueList ItemDefs, these must be independent of the "WhereClause". Also the latter are meant to be reusable.
There are some ways to take care that take care that both ItemDefs and WhereClauses are reusable. It is a bit long and complicated to explain here, but if you contact me (my mail address is easy to find out), I can help you further.

With best regards,
Jozef Aerts
CDISC Define-XML Development Team and CDISC Define-XML trainer.

c Cedric
on June 5, 2019

Hello, I am facing the same problem as described by Ryan and it looks to me like a bug in the P21 Community v3.0.0 define.xml generator - creating the define.xml from Excel specs.

I have tried to produce the define2-0-0-example-adam.xml example provided in the CDISC Define-xml v2.0 package, using Excel specs as input, with both P21 Community v2.2.0 and with v3.0.0 define generators. In that example, both variables ADQSADAS.DTYPE and ADQSADAS.QSSEQ have VLM attached. And it happens that the WhereClause is the same for the VLM of both variables. So I would expect that the WhereClauseDef is reused across the VLM of both variables BUT I would expect the ItemDef holding the VLM information to be different because the VLM information for ADQSADAS.DTYPE and ADQSADAS.QSSEQ is different.

As you can see below, P21 v2.2.0 behaves as expected: one WhereClauseDef and two distinct ItemDef are created and referenced;
while v3.0.0 creates one WhereClauseDef and two ItemDef BUT both have the same OID (in bold below), which is wrong.

The problem is that P21 ignores the ID column present in the Excel specs and computes the OIDs on its own. While v2.2.0 computes workable OIDs, v3.0.0 does not seem to compute proper OIDs.

Extracts of define-xml created by Pinnacle 21

Created by P21 Community v2.2.0 :
 <def:ValueListDef OID="VL.ADQSADAS.DTYPE">
    <ItemRef ItemOID="IT.ADQSADAS.DTYPE.ADQSADAS.PARAMCD.NOTIN.ACTOT-4612d30e" OrderNumber="1" Mandatory="No">
       <def:WhereClauseRef WhereClauseOID="WC.ADQSADAS.PARAMCD.NOTIN.ACTOT-4612d30e"/>
    </ItemRef>
    ...
 </def:ValueListDef>
 <def:ValueListDef OID="VL.ADQSADAS.QSSEQ">
    <ItemRef ItemOID="IT.ADQSADAS.QSSEQ.ADQSADAS.PARAMCD.NOTIN.ACTOT-4612d30e" OrderNumber="1" Mandatory="No">
       <def:WhereClauseRef WhereClauseOID="WC.ADQSADAS.PARAMCD.NOTIN.ACTOT-4612d30e"/>
    </ItemRef>
    ...
 </def:ValueListDef>
 <ItemDef OID="IT.ADQSADAS.DTYPE.ADQSADAS.PARAMCD.NOTIN.ACTOT-4612d30e" ... DataType="text" ... SASFieldName="DTYPE" ...> ... </ItemDef>
 <ItemDef OID="IT.ADQSADAS.QSSEQ.ADQSADAS.PARAMCD.NOTIN.ACTOT-4612d30e" ... DataType="integer" ... SASFieldName="QSSEQ">  ...</ItemDef>

Created by P21 Community v3.0.0:
 <def:ValueListDef OID="VL.ADQSADAS.DTYPE">
    <ItemRef ItemOID="IT.ADQSADAS.ADQSADAS.PARAMCD.NOTIN.62a73687859914e9b3a17847caf89449baa4b475" OrderNumber="1" Mandatory="No">
       <def:WhereClauseRef WhereClauseOID="WC.ADQSADAS.PARAMCD.NOTIN.62a73687859914e9b3a17847caf89449baa4b475"/>
    </ItemRef>
    ...
 </def:ValueListDef>
 <def:ValueListDef OID="VL.ADQSADAS.QSSEQ">
    <ItemRef ItemOID="IT.ADQSADAS.ADQSADAS.PARAMCD.NOTIN.62a73687859914e9b3a17847caf89449baa4b475" OrderNumber="1" Mandatory="No">
       <def:WhereClauseRef WhereClauseOID="WC.ADQSADAS.PARAMCD.NOTIN.62a73687859914e9b3a17847caf89449baa4b475"/>
    </ItemRef>
    ...
 </def:ValueListDef>
<ItemDef OID="IT.ADQSADAS.ADQSADAS.PARAMCD.NOTIN.62a73687859914e9b3a17847caf89449baa4b475" ... DataType="text" ... SASFieldName="DTYPE"> ... </ItemDef>
 <ItemDef OID="IT.ADQSADAS.ADQSADAS.PARAMCD.NOTIN.62a73687859914e9b3a17847caf89449baa4b475" ... DataType="integer" ... SASFieldName="QSSEQ"> ... </ItemDef>
 

c Christelle
on August 30, 2019

Hi,

 

I am facing the same issue. The ValueLevel contains duplicate Where Clause for different variables (AVAL, BASETYPE). The define.xml is not correct. It displays the derivation of the 2nd Where Clause in the Derivations column for both variables. I am also getting the Duplicate ItemDef OID error from Pinnacle 21 validator.

Did someone found a workaround for such case?

 

Thanks

Philipp
on September 3, 2019

Thank you for the feedback!

We have identified and fixed a define generator bug where Value Level Metadata would not display properly when multiple variables use the same Where Clause.

The fix will be available with the next Community update.

Thanks,

Philipp

Want a demo?

Let’s Talk.

We're eager to share and ready to listen.

Cookie Policy

Pinnacle 21 uses cookies to make our site easier for you to use. By continuing to use this website, you agree to our use of cookies. For more info visit our Privacy Policy.