Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -10,3 +10,4 @@ etl-daemon.js
coverage
conf/config-bk.json
.DS_Store
conf/config-live.json
20 changes: 20 additions & 0 deletions app/reporting-framework/base-mysql.report.js
Original file line number Diff line number Diff line change
Expand Up @@ -552,6 +552,13 @@ import * as tb_screen__less_15_base from './json-reports/moh-731-report/aggregat
import * as nutrition_mam_aggregate from './json-reports/moh-731-report/aggregations/nutrition-mam-aggregate.json';
import * as nutrition_mam_base from './json-reports/moh-731-report/aggregations/nutrition-mam-base.json';
import * as patient_list_template_731 from './json-reports/731-patient-list-template.json';

//service queue report

import * as service_queue_daily_aggregate from './json-reports/service-queue-daily-aggregate.json';
import * as service_queue_daily_base from './json-reports/service-queue-daily-base.json';
import * as service_queue_patient_list_template from './json-reports/service-queue-patient-list-template.json';

export class BaseMysqlReport {
constructor(reportName, params) {
this.reportName = reportName;
Expand Down Expand Up @@ -2460,6 +2467,19 @@ export class BaseMysqlReport {
nutritionMamBase: this.cloneJsonSchema(nutrition_mam_base)
});
break;
case 'serviceQueueDailyAggregate':
resolve({
main: this.cloneJsonSchema(service_queue_daily_aggregate),
serviceQueueDailyBase: this.cloneJsonSchema(
service_queue_daily_base
)
});
break;
case 'service-queue-patient-list-template':
resolve({
main: this.cloneJsonSchema(service_queue_patient_list_template)
});
break;
default:
reject('Unknown report ', reportName);
break;
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
{
"name": "serviceQueueDailyAggregate",
"version": "1.0",
"tag": "service_queue_daily_aggregate",
"description": "",
"uses": [
{
"name": "serviceQueueDailyBase",
"version": "1.0",
"type": "dataset_def"
}
],
"sources": [
{
"dataSet": "serviceQueueDailyBase",
"alias": "b"
}
],
"columns": [
{
"type": "simple_column",
"alias": "queue_room_name",
"column": "b.queue_room_name"
},
{
"type": "derived_column",
"alias": "patients",
"expressionType": "simple_expression",
"expressionOptions": {
"expression": "COUNT(b.patient_id)"
}
}
],
"groupBy": {
"groupParam": "groupByParam",
"columns": ["queue_room_id"],
"excludeParam": "excludeParam"
},
"dynamicJsonQueryGenerationDirectives": {
"patientListGenerator": {
"useTemplate": "service-queue-patient-list-template",
"useTemplateVersion": "1.0",
"generatingDirectives": {
"joinDirectives": {
"joinType": "INNER",
"joinCondition": "<<base_column>> = <<template_column>>",
"baseColumn": "patient_id",
"templateColumn": "person_id"
}
}
}
}
}
145 changes: 145 additions & 0 deletions app/reporting-framework/json-reports/service-queue-daily-base.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,145 @@
{
"name": "serviceQueueDailyBase",
"version": "1.0",
"tag": "service_queue_base",
"description": "",
"uses": [],
"sources": [
{
"table": "amrs.queue_entry",
"alias": "qe"
},
{
"table": "amrs.queue_entry",
"alias": "served_qe",
"join": {
"type": "LEFT",
"joinCondition": "served_qe.patient_id = qe.patient_id AND DATE(qe.started_at) = DATE(served_qe.started_at) AND served_qe.queue_id = qe.queue_id AND served_qe.voided = 0 AND served_qe.status = 12363"
}
},
{
"table": "amrs.queue_room",
"alias": "qr",
"join": {
"type": "INNER",
"joinCondition": "qe.queue_id = qr.queue_id"
}
},
{
"table": "amrs.queue",
"alias": "q",
"join": {
"type": "INNER",
"joinCondition": "qe.queue_id = q.queue_id"
}
},
{
"table": "amrs.concept",
"alias": "c",
"join": {
"type": "INNER",
"joinCondition": "c.concept_id = q.service"
}
},
{
"table": "amrs.concept_name",
"alias": "cn",
"join": {
"type": "INNER",
"joinCondition": "cn.concept_id = c.concept_id"
}
},
{
"table": "amrs.location",
"alias": "l",
"join": {
"type": "INNER",
"joinCondition": "q.location_id = l.location_id"
}
}
],
"columns": [
{
"type": "simple_column",
"alias": "queue_entry_id",
"column": " qe.queue_entry_id"
},
{
"type": "simple_column",
"alias": "patient_id",
"column": "qe.patient_id"
},
{
"type": "simple_column",
"alias": "queue_id",
"column": "qe.queue_id"
},
{
"type": "simple_column",
"alias": "queue_room_name",
"column": "qr.name"
},
{
"type": "derived_column",
"alias": "served_status",
"expressionType": "case_statement",
"expressionOptions": {
"caseOptions": [
{
"condition": "served_qe.status is not null",
"value": "SERVED"
},
{
"condition": "else",
"value": "NOT SERVED"
}
]
}
},
{
"type": "simple_column",
"alias": "queue_room_id",
"column": "qr.queue_room_id"
},
{
"type": "simple_column",
"alias": "service_name",
"column": "cn.name"
}
],
"filters": {
"conditionJoinOperator": "and",
"conditions": [
{
"filterType": "tableColumns",
"conditionExpression": "DATE(qe.started_at) = DATE(NOW())"
},
{
"filterType": "tableColumns",
"conditionExpression": "qe.voided = 0"
},
{
"filterType": "tableColumns",
"conditionExpression": "qr.retired = 0"
},
{
"filterType": "tableColumns",
"conditionExpression": "cn.voided = 0"
},
{
"filterType": "tableColumns",
"conditionExpression": "c.uuid = ? ",
"parameterName": "serviceUuid"
},
{
"filterType": "tableColumns",
"conditionExpression": "l.uuid = ? ",
"parameterName": "locationUuid"
}
]
},
"groupBy": {
"groupParam": "groupByParam",
"columns": ["qe.patient_id", "qr.queue_room_id"]
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,109 @@
{
"name": "service_queue_patient_list_template",
"version": "1.0",
"tag": "service_queue_patient_list_template",
"description": "Service Queue Patient list template",
"sources": [
{
"table": "amrs.person",
"alias": "t1"
},
{
"table": "amrs.person_name",
"alias": "person_name",
"join": {
"type": "LEFT",
"joinCondition": "t1.person_id = person_name.person_id AND (person_name.voided IS NULL || person_name.voided = 0) AND person_name.preferred = 1"
}
},
{
"table": "amrs.patient_identifier",
"alias": "id",
"join": {
"type": "LEFT",
"joinCondition": "t1.person_id = id.patient_id AND (id.voided IS NULL || id.voided = 0)"
}
},
{
"table": "amrs.person_attribute",
"alias": "contacts",
"join": {
"type": "LEFT",
"joinCondition": "t1.person_id = contacts.person_id AND (contacts.voided IS NULL || contacts.voided = 0) AND contacts.person_attribute_type_id in (10, 48)"
}
},
{
"table": "amrs.person_address",
"alias": "pa",
"join": {
"type": "LEFT",
"joinCondition": "t1.person_id = pa.person_id"
}
}
],
"columns": [
{
"type": "simple_column",
"alias": "patient_uuid",
"column": "t1.uuid"
},
{
"type": "derived_column",
"alias": "uuid",
"expressionType": "simple_expression",
"expressionOptions": {
"expression": "t1.uuid"
}
},
{
"type": "simple_column",
"alias": "person_id",
"column": "t1.person_id"
},
{
"type": "simple_column",
"alias": "gender",
"column": "t1.gender"
},
{
"type": "simple_column",
"alias": "birthdate",
"column": "t1.birthdate"
},
{
"type": "derived_column",
"alias": "age",
"expressionType": "simple_expression",
"expressionOptions": {
"expression": "extract(year from (from_days(datediff(now(),t1.birthdate))))"
}
},
{
"type": "derived_column",
"alias": "person_name",
"expressionType": "simple_expression",
"expressionOptions": {
"expression": " CONCAT(COALESCE(person_name.given_name, ''), ' ', COALESCE(person_name.middle_name, ''), ' ', COALESCE(person_name.family_name, ''))"
}
},
{
"type": "derived_column",
"alias": "identifiers",
"expressionType": "simple_expression",
"expressionOptions": {
"expression": " GROUP_CONCAT(DISTINCT id.identifier SEPARATOR ', ')"
}
},
{
"type": "derived_column",
"alias": "phone_number",
"expressionType": "simple_expression",
"expressionOptions": {
"expression": " GROUP_CONCAT(DISTINCT contacts.value SEPARATOR ', ')"
}
}
],
"groupBy": {
"columns": ["t1.person_id"]
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"reports": ["serviceQueueDailyAggregate"]
}
Loading
Loading