오늘 문 연 병원, 자동으로 찾는 시스템 만들기 (공공데이터 기반)
갑자기 아프거나 아이가 열이 날 때, 가장 먼저 하는 행동은 근처에 열려 있는 병원을 검색하는 일입니다. 하지만 검색 결과에는 영업 여부가 불확실한 정보도 많고, 전화해도 안 받는 경우가 많습니다. 특히 주말이나 공휴일, 늦은 밤에는 이 문제가 더 심각해집니다.
이런 불편함을 줄이기 위해 필자는 공공데이터를 활용한 '오늘 문 연 병원' 자동 확인 시스템을 직접 만들었습니다. 이 시스템은 지역 기반으로 영업 중인 병원 리스트를 실시간으로 수집하고, 필터링된 결과만 사용자에게 보여줍니다. 사용자는 검색 없이도 자신의 위치 근처에서 문을 연 병원을 쉽게 확인할 수 있으며, 긴급 상황에서 골든타임을 놓치지 않게 됩니다. 이 글은 공공 API 데이터를 활용하여 생활 속 문제를 해결하는 자동화 시스템 사례입니다.
시스템 개요
이 시스템은 다음 기능을 목표로 합니다:
- 내 위치 기반으로 병원 리스트 조회
- 해당 병원이 당일 영업 중인지 여부 자동 확인
- 운영 중인 병원만 정리해서 출력
- 스마트폰 알림 또는 웹 화면으로 결과 확인
사용한 공공데이터 API
다음 두 가지 데이터를 조합하여 시스템을 구성합니다.
- 보건복지부 의료기관 운영 정보 API
- 전국 병원, 의원, 약국의 정보(명칭, 진료과목, 주소, 전화번호 등) 제공
- 의료기관 영업시간/휴일 여부 포함
- 공공 위치기반 주소 변환 서비스 (좌표 → 주소 변환 API)
- 현재 위치(GPS 좌표)를 주소로 변환해 병원 검색 범위에 반영
시스템 구현 예시 (Python + Kakao Map 사용)
1단계 – 현재 위치 주소 변환
def get_address_from_coords(lat, lon):
url = "https://dapi.kakao.com/v2/local/geo/coord2regioncode.json"
headers = {"Authorization": "KakaoAK API_KEY"}
params = {"x": lon, "y": lat}
response = requests.get(url, headers=headers, params=params)
result = response.json()
return result['documents'][0]['region_2depth_name'] # 예: '강남구'
2단계 – 해당 지역의 병원 리스트 수집
def get_hospitals(region_name):
service_key = "보건복지부_API_KEY"
url = f"http://apis.data.go.kr/B551182/pubReliefHospService/getpubReliefHospList"
params = {
'serviceKey': service_key,
'Q0': '서울특별시',
'Q1': region_name,
'numOfRows': '100',
'pageNo': '1',
'spclAdmTyCd': '', # 공백 시 전체 병원
'returnType': 'json'
}
response = requests.get(url, params=params)
hospitals = response.json()['response']['body']['items']
return hospitals
3단계 – 오늘 운영 중인 병원만 필터링
from datetime import datetime
def is_today_open(hospital):
now = datetime.now()
weekday = now.strftime('%A')
# 예시: hospital['dutyTime1s'] ~ hospital['dutyTime1c'] 존재 시 오늘 진료함
if weekday == 'Sunday' and hospital['dutyTime7s']:
return True
elif weekday == 'Saturday' and hospital['dutyTime6s']:
return True
elif weekday not in ['Saturday', 'Sunday'] and hospital['dutyTime1s']:
return True
return False
4단계 – 사용자에게 출력 (콘솔, 웹, 알림 등)
lat, lon = 37.4981, 127.0276 # 강남역 예시
region = get_address_from_coords(lat, lon)
hospital_list = get_hospitals(region)
for hospital in hospital_list:
if is_today_open(hospital):
print(f"{hospital['yadmNm']} - {hospital['addr']} - {hospital['telno']}")
실제 적용 효과
- 주말이나 공휴일, 갑작스러운 질병에도 ‘현재 진료 중인 병원’만 확인 가능
- 위치 기반으로 자동으로 필터링되어 사용자 검색 피로도 감소
- 부모, 고령자, 반려동물 보호자 등에게 긴급상황 대처용으로 활용도 매우 높음
- 알림 설정을 통해 아침 8시에 자동으로 리스트 수신 가능
이 시스템은 실제로 가정 내에서 유용하게 쓰이고 있으며, 가족 중 누군가 갑자기 아플 때도 검색 없이 병원에 바로 전화하거나 방문할 수 있어 체감 만족도가 매우 높습니다.
확장 아이디어
- 사용자의 GPS 좌표와 연동해 가장 가까운 병원부터 우선 정렬
- 약국 정보도 함께 표시하여 진료 후 처방까지 원스톱 가능
- 카카오톡 알림으로 병원 리스트 자동 전송 기능
- 예약 가능 여부 표시 기능 연동 (병원 자체 API 또는 콜센터 연동)
‘오늘 문 연 병원’ 정보를 자동으로 수집하고 정리하는 시스템은 단순한 생활 편의 기능을 넘어 생명을 구할 수도 있는 정보 제공 도구입니다.