Skip to content

Commit 94159ef

Browse files
committed
trucante shortName and code for dataElements
1 parent f240dbe commit 94159ef

3 files changed

Lines changed: 28 additions & 30 deletions

File tree

README.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,8 @@ Run the script:
6464
```shell
6565
yarn run generate-dataset-approval --dataSet MY_DS_CODE \
6666
--dataElement-submission "MY_DS_CODE-Submission date module1-APVD" \
67-
--dataElement-approval "MY_DS_CODE-Approval date module1-APVD"
67+
--dataElement-approval "MY_DS_CODE-Approval date module1-APVD" \
68+
--persist
6869
```
6970

7071
Parameters:

src/scripts/generate-dataset-approval.ts

Lines changed: 25 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import { DATA_ELEMENT_SUFFIX } from "../domain/common/entities/AppSettings";
99

1010
const SUFFIX = DATA_ELEMENT_SUFFIX;
1111
const MAX_SHORT_NAME_LENGTH = 50;
12+
const MAX_NAME_LENGTH = 230;
1213

1314
async function main() {
1415
const parser = new ArgumentParser({
@@ -17,25 +18,23 @@ async function main() {
1718

1819
parser.add_argument("-ds", "--dataSet", {
1920
help: "DataSet code",
20-
metavar: "dataSet",
2121
required: true,
2222
});
2323

2424
parser.add_argument("--post", {
2525
help: "Commit changes to DHIS2 (default: validate only)",
2626
default: false,
27+
action: "storeTrue",
2728
});
2829

2930
parser.add_argument("--dataElement-submission", {
3031
help: "Name/code for submission datetime dataElement",
31-
metavar: "name",
32-
required: false,
32+
required: true,
3333
});
3434

3535
parser.add_argument("--dataElement-approval", {
3636
help: "Name/code for approval datetime dataElement",
37-
metavar: "name",
38-
required: false,
37+
required: true,
3938
});
4039

4140
try {
@@ -125,17 +124,9 @@ async function generateDataSetApproval(options: {
125124

126125
const newDataElements = validDataElements.map(transformDataElement);
127126

128-
const customDataElements: NewDataElement[] = [];
129-
130-
if (dataElementSubmission) {
131-
const submissionDE = createCustomDataElement(dataElementSubmission);
132-
customDataElements.push(submissionDE);
133-
}
134-
135-
if (dataElementApproval) {
136-
const approvalDE = createCustomDataElement(dataElementApproval);
137-
customDataElements.push(approvalDE);
138-
}
127+
const submissionDE = dataElementSubmission ? [createCustomDataElement(dataElementSubmission)] : [];
128+
const approvalDE = dataElementApproval ? [createCustomDataElement(dataElementApproval)] : [];
129+
const customDataElements = [...submissionDE, ...approvalDE];
139130

140131
const allNewDataElements = [...newDataElements, ...customDataElements];
141132

@@ -227,7 +218,6 @@ type D2DataElement = {
227218
shortName: string;
228219
code: string;
229220
dataElementGroups?: unknown[];
230-
dimensionItem?: string;
231221
dataSetElements?: unknown[];
232222
[key: string]: unknown;
233223
};
@@ -244,7 +234,7 @@ type NewDataSet = Omit<D2DataSet, "workflow" | "dataEntryForm" | "sections"> & {
244234
sections: Array<{ id: string }>;
245235
};
246236

247-
type NewDataElement = Omit<D2DataElement, "dataElementGroups" | "dimensionItem" | "dataSetElements"> & {
237+
type NewDataElement = Omit<D2DataElement, "dataElementGroups" | "dataSetElements"> & {
248238
id: string;
249239
name: string;
250240
shortName: string;
@@ -365,27 +355,34 @@ function createCustomDataElement(name: string): NewDataElement {
365355
}
366356

367357
function transformDataElement(original: D2DataElement): NewDataElement {
368-
const {
369-
dataElementGroups: _deGroups,
370-
dimensionItem: _dimItem,
371-
dataSetElements: _dsElements,
372-
id: _id,
373-
...rest
374-
} = original;
358+
const { dataElementGroups: _deGroups, dataSetElements: _dsElements, id: _id, ...rest } = original;
375359

376360
const hasCode = original.code && original.code.trim() !== "";
377-
const newCode = hasCode ? addSuffix(original.code) : "";
361+
const newCode = hasCode ? addSuffixAndTruncate(original.code, MAX_SHORT_NAME_LENGTH) : "";
378362
const newId = hasCode ? getUidFromSeed(newCode) : getUidFromSeed(addSuffix(original.id));
379363

380364
return {
381365
...rest,
382366
id: newId,
383-
name: addSuffix(original.name),
384-
shortName: addSuffix(original.shortName),
367+
name: addSuffixAndTruncate(original.name, MAX_NAME_LENGTH),
368+
shortName: addSuffixAndTruncate(original.shortName, MAX_SHORT_NAME_LENGTH),
385369
code: newCode,
386370
};
387371
}
388372

373+
function addSuffixAndTruncate(code: string | undefined, maxLength: number): string {
374+
if (!code) return "";
375+
376+
const codeLen = code.length;
377+
378+
if (codeLen + SUFFIX.length <= maxLength) {
379+
return addSuffix(code);
380+
} else {
381+
const truncatedCode = code.substring(0, maxLength - SUFFIX.length);
382+
return addSuffix(truncatedCode);
383+
}
384+
}
385+
389386
function createDataElementIdMap(originals: D2DataElement[], transformed: NewDataElement[]): Record<string, string> {
390387
const map: Record<string, string> = {};
391388
originals.forEach((original, index) => {

src/scripts/generate-sqlviews.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -217,7 +217,7 @@ async function saveSqlViews(api: D2Api, sqlViewData: SqlTemplateViewInfo): Promi
217217
};
218218
});
219219

220-
const response = await api.metadata.post({ sqlViews: sqlViewsToSave }, { importMode: "VALIDATE" }).getData();
220+
const response = await api.metadata.post({ sqlViews: sqlViewsToSave }, { importMode: "COMMIT" }).getData();
221221

222222
fs.writeFileSync("sqlviews-import-report.json", JSON.stringify(sqlViewsToSave, null, 2));
223223

0 commit comments

Comments
 (0)