From 711feaf7137416e23901ad682999fdcd0b1fab56 Mon Sep 17 00:00:00 2001 From: cbrianbet Date: Wed, 12 Jun 2024 14:56:56 +0300 Subject: [PATCH] Get Facility Keph level Txcurr api --- src/common/common.controller.ts | 29 ++++++++++++++ src/common/common.module.ts | 5 ++- .../handlers/get-facility-txcurr.handler.ts | 38 +++++++++++++++++++ .../queries/impl/get-facility-txcurr.query.ts | 7 ++++ 4 files changed, 78 insertions(+), 1 deletion(-) create mode 100644 src/common/queries/handlers/get-facility-txcurr.handler.ts create mode 100644 src/common/queries/impl/get-facility-txcurr.query.ts diff --git a/src/common/common.controller.ts b/src/common/common.controller.ts index c2122afc..562fadcd 100644 --- a/src/common/common.controller.ts +++ b/src/common/common.controller.ts @@ -13,6 +13,7 @@ import { GetFacilityLevelByOwnershipPartnerQuery } from './queries/impl/get-faci import { GetFacilityLevelByOwnershipCountyQuery } from './queries/impl/get-facility-level-by-ownership-county.query'; import { GetFacilityByInfrastructureQuery } from './queries/impl/get-facility-by-infrastructure.query'; import { GetFacilityLinelistQuery } from './queries/impl/get-facility-linelist.query'; +import { GetFacilityTxcurrQuery } from './queries/impl/get-facility-txcurr.query'; @Controller('common') export class CommonController { @@ -367,6 +368,34 @@ export class CommonController { return this.queryBus.execute(query); } + + @Get('facilityTxcurr') + async getFacilityTxCurr( + @Query('county') county, + @Query('subCounty') subCounty, + @Query('facility') facility, + @Query('partner') partner, + @Query('agency') agency, + ): Promise { + const query = new GetFacilityTxcurrQuery(); + 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 { return this.queryBus.execute(new GetSitesQuery()); diff --git a/src/common/common.module.ts b/src/common/common.module.ts index e129887f..0b157c37 100644 --- a/src/common/common.module.ts +++ b/src/common/common.module.ts @@ -14,14 +14,16 @@ import { GetFacilityLevelByOwnershipPartnerHandler } from './queries/handlers/ge import { GetFacilityLevelByOwnershipCountyHandler } from './queries/handlers/get-facility-level-by-ownership-county.handler'; import { GetFacilityByInfrastructureHandler } from './queries/handlers/get-facility-by-infrastructure.handler'; import { GetFacilityLinelistHandler } from './queries/handlers/get-facility-linelist.handler'; +import { GetFacilityTxcurrHandler } from './queries/handlers/get-facility-txcurr.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'; @Module({ imports: [ CqrsModule, ConfigurationModule, - TypeOrmModule.forFeature([AllEmrSites], 'mssql') + TypeOrmModule.forFeature([AllEmrSites, LinelistFACTART], 'mssql') ], providers: [ GetCountiesHandler, @@ -36,6 +38,7 @@ import { AllEmrSites } from '../care-treatment/common/entities/all-emr-sites.mod GetFacilityLevelByOwnershipCountyHandler, GetFacilityByInfrastructureHandler, GetFacilityLinelistHandler, + GetFacilityTxcurrHandler, ], controllers: [CommonController], }) diff --git a/src/common/queries/handlers/get-facility-txcurr.handler.ts b/src/common/queries/handlers/get-facility-txcurr.handler.ts new file mode 100644 index 00000000..b1a22c18 --- /dev/null +++ b/src/common/queries/handlers/get-facility-txcurr.handler.ts @@ -0,0 +1,38 @@ +import { IQueryHandler, QueryHandler } from '@nestjs/cqrs'; +import { InjectRepository } from '@nestjs/typeorm'; +import { Repository } from 'typeorm'; +import { GetFacilityTxcurrQuery } from '../impl/get-facility-txcurr.query'; +import { LinelistFACTART } from '../../../care-treatment/common/entities/linelist-fact-art.model'; + +@QueryHandler(GetFacilityTxcurrQuery) +export class GetFacilityTxcurrHandler implements IQueryHandler { + constructor( + @InjectRepository(LinelistFACTART, 'mssql') + private readonly repository: Repository, + ) {} + + async execute(query: GetFacilityTxcurrQuery): Promise { + const facilities = this.repository + .createQueryBuilder('q') + .select('count (*) TxCurr, KEPH_Level') + .leftJoin('all_EMRSites', 'e', 'e.MFLCode = q.SiteCode') + .where(`ARTOutcomeDescription='Active'`); + + if (query.county) { + facilities.andWhere('q.County IN (:...county)', { + county: [query.county], + }); + } + + if (query.subCounty) { + facilities.andWhere('q.SubCounty IN (:...subCounty)', { + subCounty: [query.subCounty], + }); + } + + + return await facilities + .groupBy('KEPH_Level') + .getRawMany(); + } +} diff --git a/src/common/queries/impl/get-facility-txcurr.query.ts b/src/common/queries/impl/get-facility-txcurr.query.ts new file mode 100644 index 00000000..8d60b2c6 --- /dev/null +++ b/src/common/queries/impl/get-facility-txcurr.query.ts @@ -0,0 +1,7 @@ +export class GetFacilityTxcurrQuery { + county?: string[]; + subCounty?: string[]; + facility?: string[]; + partner?: string[]; + agency?: string[]; +} \ No newline at end of file