심평원 의약품 공급내역 보고(KPIS) EDI 자동 연동 및 데이터 대사 실무 가이드

매월 반복되는 KPIS 공급내역 보고 지옥탈출! Python과 EDI 표준 규격을 활용한 실무 완벽 자동화 파이프라인 구축법

이지웍스랩 정산솔루션팀 · 2026-08-16 · EDI 정산 실무 · 읽는 데 10분

매월 말일이 다가올수록 제약사, 유통업체(도매상), 의료기기 공급사의 실무자들은 건강보험심사평가원(HIRA) 의약품관리종합정보센터(KPIS) 공급내역 보고 압박에 시달립니다. 수만 건에 달하는 일련번호와 바코드 정보를 누락 없이 엑셀로 가공하고 웹 포털에 수동 업로드하는 방식은 휴먼 에러를 유발하며, 이는 곧바로 행정처분과 과태료로 직결됩니다. 본 아티클에서는 파이썬(Python)과 EDI 프로토콜을 활용해 KPIS 보고 업무를 완전 자동화하고, ERP 재고 데이터와의 실시간 대사 시스템을 구축하는 실무 노하우를 전격 공개합니다.

1. KPIS 공급내역 보고 실무의 구조적 문제점과 자동화 필요성

의약품 도매상 및 제약사는 약사법에 따라 의약품을 출고한 날의 익월 말일까지(또는 실시간/주간 단위) 공급내역을 심평원 KPIS에 반드시 신고해야 합니다. 하지만 기존의 웹 포털 수동 업로드 방식은 ERP 데이터 포맷과 심평원 표준 EDI 포맷 간의 괴리로 인해 매번 수작업 맵핑이 필요하다는 치명적인 단점이 있습니다.

특히 일련번호 및 특정기호 추적관리 대상 의약품의 경우, 단 한 개의 바코드 오류만 발생해도 전체 배치가 반려되며, 반려 내역을 일일이 확인하고 수정하는 과정에서 수십 시간의 리소스가 낭비됩니다. 따라서 ERP 출고 데이터베이스와 KPIS API/EDI 전송 모듈을 직결하는 파이프라인 구축은 선택이 아닌 생존을 위한 필수 조건입니다.

2. Python 기반 KPIS EDI 데이터 파싱 및 전송 자동화 스크립트

실무에서 바로 활용할 수 있는 Python 기반의 KPIS 데이터 전송 및 검증 자동화 스크립트 예시입니다. 이 스크립트는 ERP에서 추출한 매출/출고 데이터를 심평원 표준 평문 텍스트 규격으로 변환하고, 유효성 검증을 거쳐 안전하게 전송하는 로직을 담고 있습니다.

requests 라이브러리와 pandas를 활용하여 대용량 엑셀/DB 데이터를 메모리 효율적으로 청크(Chunk) 단위로 나누어 처리하므로 시스템 부하를 최소화합니다.

import pandas as pd
import requests
import json
from datetime import datetime

class KPISAutomationPipeline:
    def __init__(self, api_endpoint, cert_path):
        self.endpoint = api_endpoint
        self.cert_path = cert_path
        
    def fetch_erp_shipping_data(self, target_date):
        # 실무에서는 사내 ERP DB 커넥션(SQLAlchemy 등)을 활용
        print(f"[*] {target_date} 기준 ERP 출고 데이터를 조회합니다.")
        # Mock Data DataFrame Return
        return pd.DataFrame([
            {"item_code": "8806416012345", "serial_no": "SN20260816001", "qty": 10, "buyer_biz_no": "1238112345"}
        ])

    def validate_and_transform(self, df):
        print("[*] 데이터 유효성 검증 및 EDI 평문 포맷 변환 중...")
        # 필수값 누락 여부 확인
        if df.isnull().any().any():
            raise ValueError("필수 입력 항목에 누락된 데이터가 존재합니다.")
        
        # 심평원 표준 EDI 포맷 매핑 로직
        kpis_payload = []
        for _, row in df.iterrows():
            record = {
                "STANDARD_CODE": row["item_code"],
                "SERIAL_NUMBER": row["serial_no"],
                "QUANTITY": row["qty"],
                "BUYER_ID": row["buyer_biz_no"],
                "REPORT_DATE": datetime.now().strftime("%Y%m%d")
            }
            kpis_payload.append(record)
        return kpis_payload

    def transmit_to_kpis(self, payload):
        print(f"[*] 총 {len(payload)}건의 데이터를 KPIS 서버로 전송합니다.")
        headers = {"Content-Type": "application/json", "Authorization": "Bearer MOCK_TOKEN"}
        # 실제 전송 로직 (SSL 인증서 연동)
        # response = requests.post(self.endpoint, json=payload, headers=headers, cert=self.cert_path)
        return {"status": "SUCCESS", "processed_count": len(payload)}

if __name__ == "__main__":
    pipeline = KPISAutomationPipeline("https://kpis.or.kr/api/v1/supply", "./cert/sign_cert.pem")
    data = pipeline.fetch_erp_shipping_data("2026-08-15")
    formatted_data = pipeline.validate_and_transform(data)
    result = pipeline.transmit_to_kpis(formatted_data)
    print(f"[+] 보고 완료: {result}")

3. 전통적 수작업 방식과 자동화 파이프라인 비교 분석

기존 수작업 위주의 업무 방식과 이지웍스랩 솔루션을 통한 자동화 구축 후의 효율성을 명확하게 비교합니다. 데이터 대사 시간의 단축은 물론 휴먼 에러로 인한 과태료 리스크를 원천 차단할 수 있습니다.

비교 항목전통적 수작업 (Excel)자동화 파이프라인 (Python/EDI)
월간 소요 시간약 20 ~ 30시간10분 이내 (배치 자동 실행)
반려 데이터 수정건별 수동 확인 및 재입력실시간 자동 에러 로그 수집 및 재전송
재고 데이터 불일치율평균 1.5% ~ 3.0%0.01% 미만 (실시간 대사)
규정 준수(Compliance)담당자 숙련도에 의존시스템 룰 기반 완벽 준수

자주 막히는 지점

심평원 전송 시 '존재하지 않는 일련번호' 에러(반려 코드 E302) 다수 발생

원인: 제조사로부터 입고될 당시의 바코드 데이터와 ERP에 등록된 바코드/일련번호 정보가 미세하게 불일치하거나, 스캔 과정에서 중복 인식된 경우 발생합니다.

해결: 입고 단계에서부터 바코드를 스캔하여 ERP 재고 마스터와 실시간으로 교차 검증하는 프리체크(Pre-check) 로직을 파이프라인 전단계에 추가하여 전송 전 오타 및 매칭 오류를 사전 차단합니다.

공인인증서 세션 만료 및 SSL 인증 오류로 인한 API 통신 실패

원인: KPIS 연동 서버의 보안 정책상 주기적으로 갱신되어야 하는 공인인증서(SignKorea 등) 경로가 유실되었거나 권한 설정에 문제가 생겼을 때 발생합니다.

해결: 인증서 만료 30일 전 사내 슬랙(Slack) 또는 이메일 알림 자동화 트리거를 설정하고, 볼륨 마운트된 보안 저장소의 권한(Chmod 600)을 재설정하여 안정적인 세션 유지를 도모합니다.

핵심 요약

자주 묻는 질문

KPIS 공급내역 보고는 어떤 주기로 자동화하는 것이 가장 좋나요?

일반적으로 야간에 전일 출고 건을 대상으로 배치(Batch) 형태로 자동 전송하는 것이 가장 안정적이며, 마감일 직전에 몰리는 과부하를 예방할 수 있습니다.

일련번호 추적관리 대상 의약품 외에 일반 의약품도 자동화 대상에 포함되나요?

네, 일반 의약품의 수량 및 표준코드 보고 역시 동일한 EDI 규격을 따르므로 전체 품목에 대해 일괄 자동화 파이프라인을 적용하는 것이 효율적입니다.

자체 개발 여력이 없을 경우 어떤 방식으로 도입할 수 있나요?

이지웍스랩과 같은 전문 B2B 정산 및 EDI 자동화 솔루션을 도입하시면, 기존 ERP 시스템과의 간단한 연동만으로 즉시 안전한 KPIS 자동 보고 체계를 완성하실 수 있습니다.

전체 아티클 목록