참여 인원 : 본인 1명
나는 최근 늦은 시각에 응급 상황에 처해 119 차량에 실려갔으나, 주변에 적절한 응급 시설이 부족하여 멀리 이동해야 했다.
이 경험으로 응급환자가 실제로 신속하고 효과적인 응급 서비스를 받기 어렵다는 현실을 몸소 느끼게 되었다.
현재의 상황에서는 지역 응급 서비스의 불균형과 부족으로 인해 골든타임을 확보하는 것이 어렵다.
따라서, 지역 응급 서비스의 부족을 해소하여 모든 지역에서 골든타임을 확보할 수 있는 환경을 조성하는 것이 필요하다.
응급환자 발생 지역의 병원 커버리지를 시각적으로 확인하여 부족한 지역을 식별하고, 응급 의료 서비스의 효율성을 높이는 것을 목표로 한다.
응급 환자 발생
병원 커버리지 확인
응급 의료 서비스 효율 증가
기본 제공 데이터 : 공간융합빅데이터플랫폼 - 서울시병원정보.csv, 서울시의원정보.csv
외부 데이터 : 소방빅데이터플랫폼 - 교통사고구급출동현황.csv, 사고부상구급출동현황.csv, 온열질환구급출동현황.csv, 중증응급질환구급출동현황.csv
✏️ 기본 제공 데이터에서 주어진 좌표정보(x), 좌표정보(y)는
TM(EPSG:2097)좌표계 기준 위치 정보로, 위도, 경도 WGS84(EPSG:4326)좌표계로 변환
medical['좌표정보(x)'] = pd.to_numeric(medical['좌표정보(x)'], errors="coerce")
medical['좌표정보(y)'] = pd.to_numeric(medical['좌표정보(y)'], errors="coerce")
meditmp = medical[['좌표정보(x)', '좌표정보(y)']]
def coordinateTrans(coord, p1_type, p2_type):
"""
좌표계 변환 함수
coord : x, y 좌표 정보가 담긴 numpy array
p1_type : 입력 좌표계 정보
p2_type : 출력 좌표계 정보
"""
p1 = pyproj.Proj(init=p1_type)
p2 = pyproj.Proj(init=p2_type)
fx, fy = pyproj.transform(p1, p2, coord[:, 0], coord[:, 1])
return np.dstack([fy, fx])[0] # 위도, 경도 순
coord = np.array(meditmp)
p1_type = "epsg:2097"
p2_type = "epsg:4326"
# 좌표계 변환
meditmpres = coordinateTrans(coord, p1_type, p2_type)
def convertListToStr(data):
return float(data[0]), float(data[1])
✏️ 외부 데이터에서 주어진 좌표정보(x), 좌표정보(y)는
TM(EPSG:5186)좌표계 기준 위치 정보로, 위도, 경도 WGS84(EPSG:4326)좌표계로 변환
✏️ 신고시각, 출동시각, 현장도착시각, 환자접촉시각, 현장출발시각, 병원도착시각 칼럼
시간 데이터에 대하여 시간값을 모두 6글자로 통일 후, 날짜 데이터와 결합하여, datetime(ds)형식으로 변환
class Timetranslator:
def __init__(self, df, datecolumn, timecolumn, newcolumn):
self.df = df
self.datecolumn = datecolumn
self.timecolumn = timecolumn
self.newcolumn = newcolumn
def fillLenStr(self):
'''
시간값 6글자로 변환하는 함수
'''
self.df = self.df.astype(str)
for idx in range(len(self.df)):
try:
if self.timecolumn in self.df.columns:
if len(self.df.loc[idx, self.timecolumn]) == 6:
continue
else:
if len(self.df.loc[idx, self.timecolumn]) == 5:
self.df.loc[idx, self.timecolumn] = '0' + self.df.loc[idx, self.timecolumn]
elif len(self.df.loc[idx, self.timecolumn]) == 4:
self.df.loc[idx, self.timecolumn] = '00' + self.df.loc[idx, self.timecolumn]
elif len(self.df.loc[idx, self.timecolumn]) == 3:
self.df.loc[idx, self.timecolumn] = '000' + self.df.loc[idx, self.timecolumn]
except KeyError:
continue
return self.df
def pretypeformat(self):
'''
datetime(ns)형식 변환 전 준비
'''
for idx in range(len(self.df)):
try:
self.df.loc[idx, self.datecolumn] = self.df.loc[idx, self.datecolumn][0:4] + '-' + self.df.loc[idx, self.datecolumn][4:6] + '-' + self.df.loc[idx, self.datecolumn][6:8]
self.df.loc[idx, self.timecolumn] = self.df.loc[idx, self.timecolumn][0:2] + ':' + self.df.loc[idx, self.timecolumn][2:4] + ':' + self.df.loc[idx, self.timecolumn][4:6]
except:
self.df.loc[idx, self.timecolumn] = np.nan
return self.df
def convertDatetimeformat(self):
'''
datetime 형식으로 변환하는 함수
'''
self.df[self.newcolumn] = self.df[self.datecolumn] + ' ' + self.df[self.timecolumn]
for idx in range(len(self.df)):
try:
self.df.loc[idx, self.newcolumn] = datetime.strptime(self.df.loc[idx, self.newcolumn] ,'%Y-%m-%d %H:%M:%S')
except: #* 잘못된 시각 기록 pass
self.df.loc[idx, self.newcolumn] = np.nan
return self.df
def process(self):
self.df = self.fillLenStr()
#self.df = self.convert24Hour()
self.df = self.pretypeformat()
self.df = self.convertDatetimeformat()
return self.df
기본 제공 데이터에 존재하는 병원 기준으로 필터링 후, 상위 상급 병원 50개 대상으로 진행
응급 서비스 이용 빈도가 낮은 병원의 경우, 환자들이 많이 가지 않아 응급실이 충분히 갖춰져 있지 않을 가능성이 높은 곳으로 간주되어 제거
사고 지역 위치와 병원 위치 사이 거리를 계산하여 사고발생_병원간거리 칼럼으로 추가
해당 그림은 각 사고 발생 장소들의 Point들이며, Point들은 이송된 병원 마다 색상 분류하여 표기
해당 그림은 각 병원 별 사고 발생 지역 표기
이화여자대학교의과대학부속목동병원은 서울 전체 1위 병원으로,
주로 양천구, 강서구, 마포구, 영등포구 지역이 커버 대상으로, 이외에도 서울 전 구역에서 응급 서비스를 커버한다.
해당 병원에 대한 서울 전 구역에서의 수요가 높음을 알 수 있다.
서울현대병원은 주로 강북구, 도봉구가 커버 대상으로,
서울현대병원이 커버한 사건 발생 건수는 이대목동병원 사건 발생 건수의 약 3분의1 비율이다.
강북구와 도봉구 지역의 응급 상황에 빠르게 대응하는 것으로 파악된다.
각 병원마다 사고 발생 지역 간의 평균 거리의 반지름으로 병원 위치 기준 원을 그려 병원의 평균 효력도 시각화
현재 응급 시설이 당장 필요한 구역은 다음과 같음(그림 상으로 원이 존재하지 않는 영역)
신사동, 논현동, 삼성동, 청파동, 용산동, 번동, 월계동, 장위동, 사당동, 방배동, 노량진동, 상도동, 종암동, 동선동, 안암동,신설동, 면목동, 중화동, 구의동...등
적어도 한 곳에서라도 응급 서비스를 제공할 수 있도록 병원 신설 또는 인근 병원과 협력 통해 커버리지 확대 필요
1. 응급 서비스의 빠른 대응
부족한 지역에 적절한 의료 인프라를 구축하여 응급환자에게 빠르게 대응
2. 지역 간 의료 서비스 균형 조정
부족한 지역을 식별하고 강화함으로써 지역 간 의료 서비스의 균형이 조정되어, 모든 지역에서 응급 서비스에 더 고르게 접근 가능
인구 통계 데이터 활용
교통 데이터 활용
노인 인구 비율이 높은 강북구에서는 노인 거주 시설과 의료서비스 간의 평균 거리 데이터를 기반으로 의료 서비스의 위치를 최적화하고, 노인들의 이동성을 고려하여 노인 전용 교통 수단을 개선할 수 있음
또한 노인들을 위한 편의 시설인 휠체어 편의시설, 경사로 등의 시설을 확충하여 응급 서비스의 접근성을 향상시킬 수 있음
10대 청소년이 많은 송파구, 강남구, 노원구, 양천구 에서는 학교 및 청소년 센터 등에서 응급 처치 교육 및 응급 상황 대처에 대한 교육을 강화할 필요가 있음