Skip to content

Commit

Permalink
Merge pull request #749 from cbrianbet/feat/new-reporting-layer
Browse files Browse the repository at this point in the history
ehts apis added
  • Loading branch information
cbrianbet authored Jun 19, 2024
2 parents d6eb7a7 + bf5bc4a commit 3770936
Show file tree
Hide file tree
Showing 4 changed files with 92 additions and 1 deletion.
29 changes: 29 additions & 0 deletions src/common/common.controller.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ import { GetFacilityTxcurrQuery } from './queries/impl/get-facility-txcurr.query
import { GetFacilityStatusByCountyQuery } from './queries/impl/get-facility-status-by-county.query';
import { GetFacilityByInfrastructureCountyQuery } from './queries/impl/get-facility-by-infrastructure-county.query';
import { GetFacilityArtHtsMnchQuery } from './queries/impl/get-facility-art-hts-mnch.query';
import { GetCountyCoverageHtsQuery } from './queries/impl/get-county-coverage-hts.query';

@Controller('common')
export class CommonController {
Expand Down Expand Up @@ -483,6 +484,34 @@ export class CommonController {
return this.queryBus.execute(query);
}


@Get('getCountyCoverageHts')
async getCountyCoverageHts(
@Query('county') county,
@Query('subCounty') subCounty,
@Query('facility') facility,
@Query('partner') partner,
@Query('agency') agency,
): Promise<any> {
const query = new GetCountyCoverageHtsQuery();
if(county) {
query.county = county;
}
if(subCounty) {
query.subCounty = subCounty;
}
if(facility) {
query.facility = facility;
}
if(partner) {
query.partner = partner;
}
if(agency) {
query.agency = agency;
}
return this.queryBus.execute(query);
}

@Get('sites')
async getSites(): Promise<any> {
return this.queryBus.execute(new GetSitesQuery());
Expand Down
4 changes: 3 additions & 1 deletion src/common/common.module.ts
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ import { GetFacilityTxcurrHandler } from './queries/handlers/get-facility-txcurr
import { GetFacilityStatusByCountyHandler } from './queries/handlers/get-facility-status-by-county.handler';
import { GetFacilityByInfrastructureCountyHandler } from './queries/handlers/get-facility-by-infrastructure-county.handler';
import { GetFacilityArtHtsMnchHandler } from './queries/handlers/get-facility-art-hts-mnch.handler';
import { GetCountyCoverageHtsHandler } from './queries/handlers/get-county-coverage-hts.handler';
import { CommonController } from './common.controller';
import { AllEmrSites } from '../care-treatment/common/entities/all-emr-sites.model';
import { LinelistFACTART } from '../care-treatment/common/entities/linelist-fact-art.model';
Expand All @@ -44,7 +45,8 @@ import { LinelistFACTART } from '../care-treatment/common/entities/linelist-fact
GetFacilityTxcurrHandler,
GetFacilityStatusByCountyHandler,
GetFacilityByInfrastructureCountyHandler,
GetFacilityArtHtsMnchHandler
GetFacilityArtHtsMnchHandler,
GetCountyCoverageHtsHandler
],
controllers: [CommonController],
})
Expand Down
53 changes: 53 additions & 0 deletions src/common/queries/handlers/get-county-coverage-hts.handler.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
import { IQueryHandler, QueryHandler } from '@nestjs/cqrs';
import { InjectRepository } from '@nestjs/typeorm';
import { Repository } from 'typeorm';
import { AllEmrSites } from '../../../care-treatment/common/entities/all-emr-sites.model';
import { GetCountyCoverageHtsQuery } from '../impl/get-county-coverage-hts.query';

@QueryHandler(GetCountyCoverageHtsQuery)
export class GetCountyCoverageHtsHandler implements IQueryHandler<GetCountyCoverageHtsQuery> {
constructor(
@InjectRepository(AllEmrSites, 'mssql')
private readonly repository: Repository<AllEmrSites>,
) {}

async execute(query: GetCountyCoverageHtsQuery): Promise<any> {
const htsCountyCoverage = this.repository
.createQueryBuilder('q')
.select([
'q.County',
'COALESCE(SUM(Tested_Total), 0) AS Tested_DHIS',
'coalesce (Sum(Tested),0) as Tested_NDW',
'coalesce (Sum(Positive_Total),0) as Positive_DHIS',
'coalesce (Sum(Positive),0) as Positive_NDW'
])
.leftJoin(
`(Select MFLCode, sum (Tested) as Tested, sum (Positive) as Positive, AsOfDate FROM REPORTING.dbo.AggregateHTSUptake WHERE AsOfDate =EOMONTH(DATEADD(mm,-1,GETDATE())) group by MFLcode,AsOfDate)`,
'ndw',
'q.MFLCode = ndw.MFLCode'
)
.leftJoin(
`(Select MFLCode, ReportMonth_Year as reporting_month_HTS, Tested_Total, Positive_Total FROM REPORTING.dbo.AggregateFACT_HTS_DHIS2 dhis where Tested_Total is not null and datediff( mm, cast(concat(ReportMonth_Year, '01') as date), (select max(cast(concat(ReportMonth_Year, '01') as date)) from ODS.dbo.HTS_DHIS2)) = 0 group by MFLCode, ReportMonth_Year, Tested_Total, Positive_Total)`,
'hts',
'q.MFLCode = hts.MFLCode'
)
.where(`EMR_Status='Active'`);

if (query.county) {
htsCountyCoverage.andWhere('q.County IN (:...county)', {
county: [query.county],
});
}

if (query.subCounty) {
htsCountyCoverage.andWhere('q.SubCounty IN (:...subCounty)', {
subCounty: [query.subCounty],
});
}

return await htsCountyCoverage
.groupBy('q.County')
.orderBy('q.County')
.getRawMany();
}
}
7 changes: 7 additions & 0 deletions src/common/queries/impl/get-county-coverage-hts.query.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
export class GetCountyCoverageHtsQuery {
county?: string[];
subCounty?: string[];
facility?: string[];
partner?: string[];
agency?: string[];
}

0 comments on commit 3770936

Please sign in to comment.