📌 What I did today
- 팀원들과 코드 리뷰
- 환자 이송 신청 API 수정 → 병원 id 설정 추가
- 증상 보고서 환자 정보 수정 PATCH API => update DTO 정의
import { OmitType } from '@nestjs/mapped-types';
import { CreateReportDto } from './create-report.dto';
export class UpdateReportDto extends OmitType(CreateReportDto, [
'symptoms',
'symptom_level',
]) {}
- 병원 조회 API 반경 몇 km & max_count 쿼리 파람으로 넘기기 (spatial index &
ST_Distance_Sphere
)
async getHospitalsWithinRadius(
startLat: number,
startLng: number,
radius: number,
) {
return await this.query(
`
SELECT geo_id, name, phone, available_beds, latitude, longitude, emogList, ST_Distance_Sphere(Point(${startLng}, ${startLat}),
point) as 'distance'
FROM geohospital
WHERE ST_Distance_Sphere(POINT(${startLng}, ${startLat}), point) < (${radius})
order by distance;
`,
);
}
- 종합상황판 웹사이트 크롤링 병원 데이터와 공공데이터 병원 데이터의 차이로 인해 실시간 병상 데이터를 가지고 오지 못하는 병원들 삭제 함수 구현
async getHospitals(): Promise<Hospitals[]> {
const hospitals = await this.hospitalsRepository.query(
`
SELECT * FROM geohospital
`,
);
console.log('hospitals : ', hospitals);
let emogList = [];
let count = 0;
for (const hospital of hospitals) {
console.log('====================================');
emogList.push(hospital.emogList);
const datas = await this.crawling.getNearbyHospitals(emogList);
console.log('data 수', datas.length);
if (datas.length === 1) {
await this.hospitalsRepository.query(`
DELETE FROM geohospital WHERE emogList = '${hospital.emogList}'
`);
count++;
console.log('삭제된 병원 : ', hospital.name);
}
emogList = [];
}
console.log('삭제된 병원 수 : ', count);
return hospitals;
}