diff --git a/package-lock.json b/package-lock.json index 7e1b2c5c..6945b428 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8899,7 +8899,7 @@ }, "node_modules/data-model-navigator": { "version": "1.1.33", - "resolved": "git+ssh://git@github.com/CBIIT/Data-Model-Navigator.git#ce4d6f0a308194834cc568cdd932fab8f935270a", + "resolved": "git+ssh://git@github.com/CBIIT/Data-Model-Navigator.git#d3e10a458e166230ee0eb6bc88154c733dd8fe3a", "license": "ISC", "dependencies": { "@material-ui/core": "^4.12.4", diff --git a/src/utils/dataModelUtils.ts b/src/utils/dataModelUtils.ts index 0ba51f39..1a79df18 100644 --- a/src/utils/dataModelUtils.ts +++ b/src/utils/dataModelUtils.ts @@ -159,6 +159,9 @@ export const traverseAndReplace = ( apiError: boolean, parentKey = "" ) => { + const getCDEPublicID = (cdeCode, cdeVersion) => + `https://cadsr.cancer.gov/onedata/dmdirect/NIH/NCI/CO/CDEDD?filter=CDEDD.ITEM_ID=${cdeCode}%20and%20ver_nr=${cdeVersion}`; + if (typeof node !== "object" || node === null) return; if (node.properties) { @@ -167,22 +170,29 @@ export const traverseAndReplace = ( const fullKey = `${parentKey}.${key}`.replace(/^\./, ""); const prefixMatch = mapKeyPrefixes.get(fullKey); const noValuesMatch = mapKeyPrefixesNoValues.get(fullKey); + const property = node.properties[key]; const fallbackMessage = [ "Permissible values are currently not available. Please contact the Data Hub HelpDesk at NCICRDCHelpDesk@mail.nih.gov", ]; if (prefixMatch) { - const resultMapEntry = resultMap.get(prefixMatch); - - if (resultMapEntry?.PermissibleValues?.length && node.properties[key].enum) { - node.properties[key].enum = resultMapEntry.PermissibleValues; - } else if (resultMapEntry?.PermissibleValues?.length === 0 && node.properties[key].enum) { - node.properties[key].enum = fallbackMessage; + const { CDECode, CDEFullName, CDEVersion, PermissibleValues } = + resultMap.get(prefixMatch); + + if (PermissibleValues?.length && property.enum) { + property.enum = PermissibleValues; + property.CDEFullName = CDEFullName; + property.CDECode = CDECode; + property.CDEPublicID = getCDEPublicID(CDECode, CDEVersion); + property.CDEVersion = CDEVersion; + property.CDEOrigin = "caDSR"; + } else if (PermissibleValues?.length === 0 && property.enum) { + property.enum = fallbackMessage; } } - if (noValuesMatch && apiError && node.properties[key].enum) { - node.properties[key].enum = fallbackMessage; + if (noValuesMatch && apiError && property.enum) { + property.enum = fallbackMessage; } } }