Skip to content

Commit 061b75b

Browse files
openfn[bot]github-actions[bot]
authored andcommitted
[email protected] initiated a sync from Lightning
1 parent d39dd13 commit 061b75b

2 files changed

+37
-32
lines changed

openfn-3f789c20-4af7-47aa-81cd-511b22105623-spec.yaml

+21-16
Original file line numberDiff line numberDiff line change
@@ -13,12 +13,13 @@ workflows:
1313
jobs:
1414
DHIS2-mapping:
1515
name: DHIS2 mapping
16-
adaptor: '@openfn/language-common@latest'
16+
adaptor: '@openfn/language-common@2.3.0'
1717
credential: null
1818
body: |
19-
const facilities = {
20-
"712526f6-f826-45a7-a80b-6546ad9fde9d": "DiszpKrYNg8", //corresponding_on_DHIS2,
21-
};
19+
//TODO: Remove this once we have orgUnit from report
20+
// const facilities = {
21+
// "712526f6-f826-45a7-a80b-6546ad9fde9d": "DiszpKrYNg8", //corresponding_on_DHIS2,
22+
// };
2223
2324
const convertToBool = (val) => {
2425
if (typeof val === 'boolean') return val;
@@ -39,30 +40,35 @@ workflows:
3940
};
4041
4142
const convertToNumeric = (value) => {
42-
return value
43-
}
43+
if (typeof value === 'number') return value;
44+
if (typeof value === 'string') {
45+
const parsed = parseFloat(value);
46+
return isNaN(parsed) ? undefined : parsed;
47+
}
48+
return undefined;
49+
};
4450
4551
const mapReport = (report) => {
4652
const dataElements = [
4753
// { dataElement: "EuiLnVQP7fz", path: 'fever_detected' },
4854
// { dataElement: "c7DB86yPCPw", path: 'danger_signs' },
4955
// { dataElement: "pUQ3PxCLBGW", path: 'symptoms_severity_level' },
5056
// { dataElement: "UkSorKPBQKp", path: 'd_diarrhoea' },
51-
{ dataElement: "mQfnNz6HAxg", path: "properties.d_disease_severe_malaria_possible" },
52-
{ dataElement: "rUiCXLuXe0D", path: "data.closed.doc.fields.g_registration.p_id" },
57+
{ dataElement: "mQfnNz6HAxg", path: "properties.d_disease_severe_malaria_possible", transform: convertToBool },
58+
{ dataElement: "rUiCXLuXe0D", path: "properties.p_id" },
5359
{ dataElement: "L9FyeXeKysL", path: "properties.p_gender", transform: genderMap },
5460
{ dataElement: "sRViHZrNOOi", path: "properties.p_age" },
5561
{ dataElement: "zWAPsDC96SK", path: "properties.p_weight" },
5662
{ dataElement: "nrsvTZKdAxD", path: "properties.p_temp" },
5763
{ dataElement: "f8AiyAoBmQZ", path: "properties.d_pneumonia", transform: convertToBool },
58-
{ dataElement: "nOqH46e5VmP", path: "data.closed.doc.d_malaria" },
64+
{ dataElement: "nOqH46e5VmP", path: "properties.d_malaria", transform: convertToBool },
5965
{ dataElement: "S6XCvAD6uv6", path: "properties.d_scabies_infected", transform: convertToBool },
6066
{ dataElement: "Vg8aEzNouYb", path: "properties.d_measles", transform: convertToBool },
61-
{ dataElement: "Ofyvm4Ynqh7", path: "data.closed.doc.fields.ds_amoxicillin" },
62-
{ dataElement: "EijcDbR4oWL", path: "data.closed.doc.fields.ds_paracetamol", transform: convertToNumeric },
63-
{ dataElement: "DsiPa2sGoEe", path: "data.closed.doc.fields.ds_erythromycin" },
64-
{ dataElement: "xpWPRlZlN7b", path: "data.closed.doc.fields.d_deworming_needed", transform: convertToBool },
65-
{ dataElement: "tgUaWBaAIag", path: "data.closed.doc.fields.dur_amoxicillin" },
67+
{ dataElement: "Ofyvm4Ynqh7", path: "properties.ds_amoxicillin", transform: convertToBool },
68+
{ dataElement: "EijcDbR4oWL", path: "properties.ds_paracetamol", transform: convertToNumeric },
69+
{ dataElement: "DsiPa2sGoEe", path: "properties.ds_erythromycin", transform: convertToNumeric },
70+
{ dataElement: "xpWPRlZlN7b", path: "properties.d_deworming_needed", transform: convertToBool },
71+
{ dataElement: "tgUaWBaAIag", path: "properties.dur_amoxicillin" },
6672
];
6773
6874
return {
@@ -84,7 +90,6 @@ workflows:
8490
state.dhis2Mapping = {
8591
orgUnit: "DiszpKrYNg8",
8692
occurredAt: report.reported_date,
87-
programStage: "",
8893
program: "wNRmGnc1t11",
8994
status: "COMPLETED",
9095
...mapReport(report)
@@ -96,7 +101,7 @@ workflows:
96101
97102
Create-Event-Program:
98103
name: Create Event Program
99-
adaptor: '@openfn/language-dhis2@latest'
104+
adaptor: '@openfn/language-dhis2@6.1.0'
100105
credential: [email protected]
101106
body: |
102107
// Create events

openfn-3f789c20-4af7-47aa-81cd-511b22105623-state.json

+16-16
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
"name": "cht-sandbox",
44
"description": null,
55
"inserted_at": "2024-11-07T11:32:07Z",
6-
"updated_at": "2024-11-28T12:41:57Z",
6+
"updated_at": "2025-01-14T14:08:42Z",
77
"scheduled_deletion": null,
88
"project_credentials": {
99
@@ -61,31 +61,31 @@
6161
"cron->Get-Patients": {
6262
"enabled": true,
6363
"id": "3c0a1c52-1f6b-4210-8ead-7d50cea97428",
64+
"target_job_id": "6c132952-404d-434b-8ee5-c161704c9f86",
6465
"source_trigger_id": "5257dc8b-f1c8-4073-8772-2a23958d1b01",
65-
"condition_type": "always",
66-
"target_job_id": "6c132952-404d-434b-8ee5-c161704c9f86"
66+
"condition_type": "always"
6767
},
6868
"Get-Patients->Transform-and-map-patients": {
6969
"enabled": true,
7070
"id": "038b5924-a4b4-4434-8f85-d4101aa3da61",
71+
"target_job_id": "02495f58-cb2c-4b0e-8cf7-d41293455ee0",
7172
"source_job_id": "6c132952-404d-434b-8ee5-c161704c9f86",
72-
"condition_type": "on_job_success",
73-
"target_job_id": "02495f58-cb2c-4b0e-8cf7-d41293455ee0"
73+
"condition_type": "on_job_success"
7474
},
7575
"Transform-and-map-patients->Load-to-DHIS2": {
7676
"enabled": true,
7777
"id": "818f484f-b685-4352-8553-93514b4df739",
78+
"target_job_id": "9af97a93-22c5-4bf4-8f69-86ac2d6e6af7",
7879
"source_job_id": "02495f58-cb2c-4b0e-8cf7-d41293455ee0",
79-
"condition_type": "on_job_success",
80-
"target_job_id": "9af97a93-22c5-4bf4-8f69-86ac2d6e6af7"
80+
"condition_type": "on_job_success"
8181
}
8282
}
8383
},
8484
"CHT-webhook": {
8585
"id": "6cdd641d-6087-414b-8193-d01d71d3240e",
8686
"name": "CHT webhook",
87-
"inserted_at": "2024-12-18T18:19:49.271343Z",
88-
"lock_version": 46,
87+
"inserted_at": "2025-01-22T13:25:28.105788Z",
88+
"lock_version": 52,
8989
"triggers": {
9090
"webhook": {
9191
"enabled": true,
@@ -97,32 +97,32 @@
9797
"DHIS2-mapping": {
9898
"id": "0f2bd9fa-1f44-4152-8c0c-9fbca0e75f04",
9999
"name": "DHIS2 mapping",
100-
"body": "const facilities = {\n \"712526f6-f826-45a7-a80b-6546ad9fde9d\": \"DiszpKrYNg8\", //corresponding_on_DHIS2,\n};\n\nconst convertToBool = (val) => {\n if (typeof val === 'boolean') return val;\n if (typeof val === 'string') {\n val = val.toLowerCase().trim();\n return val === '1' || val === 'true' || val === 'yes';\n }\n return !!val;\n};\n\nconst safeGet = (obj, path, defaultValue = undefined) => {\n return path.split('.').reduce((acc, part) => acc && acc[part], obj) ?? defaultValue;\n};\n\nconst genderMap = (value) => {\n if (!value) return undefined;\n return value.toLowerCase().trim().startsWith('f') ? 'Female' : 'Male';\n};\n\nconst convertToNumeric = (value) => {\n return value\n}\n\nconst mapReport = (report) => {\n const dataElements = [\n // { dataElement: \"EuiLnVQP7fz\", path: 'fever_detected' },\n // { dataElement: \"c7DB86yPCPw\", path: 'danger_signs' },\n // { dataElement: \"pUQ3PxCLBGW\", path: 'symptoms_severity_level' },\n // { dataElement: \"UkSorKPBQKp\", path: 'd_diarrhoea' },\n { dataElement: \"mQfnNz6HAxg\", path: \"properties.d_disease_severe_malaria_possible\" },\n { dataElement: \"rUiCXLuXe0D\", path: \"data.closed.doc.fields.g_registration.p_id\" },\n { dataElement: \"L9FyeXeKysL\", path: \"properties.p_gender\", transform: genderMap },\n { dataElement: \"sRViHZrNOOi\", path: \"properties.p_age\" },\n { dataElement: \"zWAPsDC96SK\", path: \"properties.p_weight\" },\n { dataElement: \"nrsvTZKdAxD\", path: \"properties.p_temp\" },\n { dataElement: \"f8AiyAoBmQZ\", path: \"properties.d_pneumonia\", transform: convertToBool },\n { dataElement: \"nOqH46e5VmP\", path: \"data.closed.doc.d_malaria\" },\n { dataElement: \"S6XCvAD6uv6\", path: \"properties.d_scabies_infected\", transform: convertToBool },\n { dataElement: \"Vg8aEzNouYb\", path: \"properties.d_measles\", transform: convertToBool },\n { dataElement: \"Ofyvm4Ynqh7\", path: \"data.closed.doc.fields.ds_amoxicillin\" },\n { dataElement: \"EijcDbR4oWL\", path: \"data.closed.doc.fields.ds_paracetamol\", transform: convertToNumeric },\n { dataElement: \"DsiPa2sGoEe\", path: \"data.closed.doc.fields.ds_erythromycin\" },\n { dataElement: \"xpWPRlZlN7b\", path: \"data.closed.doc.fields.d_deworming_needed\", transform: convertToBool },\n { dataElement: \"tgUaWBaAIag\", path: \"data.closed.doc.fields.dur_amoxicillin\" },\n ];\n\n return {\n dataValues: dataElements.map(({ dataElement, path, transform }) => ({\n dataElement,\n value: transform ? transform(safeGet(report, path)) : safeGet(report, path),\n })),\n notes: [{\n value: safeGet(report, 'data.closed.doc.contact.notes'),\n storedBy: safeGet(report, 'data.closed.doc.contact.name'),\n storedDate: report.reported_date,\n }],\n };\n};\n\nfn((state) => {\n const { report } = state.data;\n\n state.dhis2Mapping = {\n orgUnit: \"DiszpKrYNg8\",\n occurredAt: report.reported_date,\n programStage: \"\",\n program: \"wNRmGnc1t11\",\n status: \"COMPLETED\",\n ...mapReport(report)\n };\n\n console.log(state.dhis2Mapping);\n return state;\n});\n",
101-
"adaptor": "@openfn/language-common@latest",
100+
"body": "//TODO: Remove this once we have orgUnit from report\n// const facilities = {\n// \"712526f6-f826-45a7-a80b-6546ad9fde9d\": \"DiszpKrYNg8\", //corresponding_on_DHIS2,\n// };\n\nconst convertToBool = (val) => {\n if (typeof val === 'boolean') return val;\n if (typeof val === 'string') {\n val = val.toLowerCase().trim();\n return val === '1' || val === 'true' || val === 'yes';\n }\n return !!val;\n};\n\nconst safeGet = (obj, path, defaultValue = undefined) => {\n return path.split('.').reduce((acc, part) => acc && acc[part], obj) ?? defaultValue;\n};\n\nconst genderMap = (value) => {\n if (!value) return undefined;\n return value.toLowerCase().trim().startsWith('f') ? 'Female' : 'Male';\n};\n\nconst convertToNumeric = (value) => {\n if (typeof value === 'number') return value;\n if (typeof value === 'string') {\n const parsed = parseFloat(value);\n return isNaN(parsed) ? undefined : parsed;\n }\n return undefined;\n};\n\nconst mapReport = (report) => {\n const dataElements = [\n // { dataElement: \"EuiLnVQP7fz\", path: 'fever_detected' },\n // { dataElement: \"c7DB86yPCPw\", path: 'danger_signs' },\n // { dataElement: \"pUQ3PxCLBGW\", path: 'symptoms_severity_level' },\n // { dataElement: \"UkSorKPBQKp\", path: 'd_diarrhoea' },\n { dataElement: \"mQfnNz6HAxg\", path: \"properties.d_disease_severe_malaria_possible\", transform: convertToBool },\n { dataElement: \"rUiCXLuXe0D\", path: \"properties.p_id\" },\n { dataElement: \"L9FyeXeKysL\", path: \"properties.p_gender\", transform: genderMap },\n { dataElement: \"sRViHZrNOOi\", path: \"properties.p_age\" },\n { dataElement: \"zWAPsDC96SK\", path: \"properties.p_weight\" },\n { dataElement: \"nrsvTZKdAxD\", path: \"properties.p_temp\" },\n { dataElement: \"f8AiyAoBmQZ\", path: \"properties.d_pneumonia\", transform: convertToBool },\n { dataElement: \"nOqH46e5VmP\", path: \"properties.d_malaria\", transform: convertToBool },\n { dataElement: \"S6XCvAD6uv6\", path: \"properties.d_scabies_infected\", transform: convertToBool },\n { dataElement: \"Vg8aEzNouYb\", path: \"properties.d_measles\", transform: convertToBool },\n { dataElement: \"Ofyvm4Ynqh7\", path: \"properties.ds_amoxicillin\", transform: convertToBool },\n { dataElement: \"EijcDbR4oWL\", path: \"properties.ds_paracetamol\", transform: convertToNumeric },\n { dataElement: \"DsiPa2sGoEe\", path: \"properties.ds_erythromycin\", transform: convertToNumeric },\n { dataElement: \"xpWPRlZlN7b\", path: \"properties.d_deworming_needed\", transform: convertToBool },\n { dataElement: \"tgUaWBaAIag\", path: \"properties.dur_amoxicillin\" },\n ];\n\n return {\n dataValues: dataElements.map(({ dataElement, path, transform }) => ({\n dataElement,\n value: transform ? transform(safeGet(report, path)) : safeGet(report, path),\n })),\n notes: [{\n value: safeGet(report, 'data.closed.doc.contact.notes'),\n storedBy: safeGet(report, 'data.closed.doc.contact.name'),\n storedDate: report.reported_date,\n }],\n };\n};\n\nfn((state) => {\n const { report } = state.data;\n\n state.dhis2Mapping = {\n orgUnit: \"DiszpKrYNg8\",\n occurredAt: report.reported_date,\n program: \"wNRmGnc1t11\",\n status: \"COMPLETED\",\n ...mapReport(report)\n };\n\n console.log(state.dhis2Mapping);\n return state;\n});\n",
101+
"adaptor": "@openfn/language-common@2.3.0",
102102
"project_credential_id": null
103103
},
104104
"Create-Event-Program": {
105105
"id": "5c26c910-7f0d-4cd7-8a71-22eba3d5db3c",
106106
"name": "Create Event Program",
107107
"body": "// Create events\ncreate(\"events\", $.dhis2Mapping);",
108-
"adaptor": "@openfn/language-dhis2@latest",
108+
"adaptor": "@openfn/language-dhis2@6.1.0",
109109
"project_credential_id": "752324bf-1765-4b45-8bdc-478317f8b362"
110110
}
111111
},
112112
"edges": {
113113
"webhook->DHIS2-mapping": {
114114
"enabled": true,
115115
"id": "a80a7125-32af-4159-8684-d014c07e6cfd",
116+
"target_job_id": "0f2bd9fa-1f44-4152-8c0c-9fbca0e75f04",
116117
"source_trigger_id": "7bf6c1bc-f16f-40c0-89a5-184ae6ae742f",
117-
"condition_type": "always",
118-
"target_job_id": "0f2bd9fa-1f44-4152-8c0c-9fbca0e75f04"
118+
"condition_type": "always"
119119
},
120120
"DHIS2-mapping->Create-Event-Program": {
121121
"enabled": true,
122122
"id": "bc96b14e-af1e-48d8-884a-51d2fc018684",
123+
"target_job_id": "5c26c910-7f0d-4cd7-8a71-22eba3d5db3c",
123124
"source_job_id": "0f2bd9fa-1f44-4152-8c0c-9fbca0e75f04",
124-
"condition_type": "on_job_success",
125-
"target_job_id": "5c26c910-7f0d-4cd7-8a71-22eba3d5db3c"
125+
"condition_type": "on_job_success"
126126
}
127127
}
128128
}

0 commit comments

Comments
 (0)