c0a673d20a556ab3fad871b55f3e813ce38ef0f1
- DrugImg.DIK_CODE 44자 Base64 image key 가능성 문서화 - 평문 DIK_CODE 직접 join 단정 제거 - health.kr zoom 후보 URL과 실제 이미지 GET 검증 스크립트 추가
PIT3000 의약품정보/API·이미지 흐름 Reverse Engineering Notes
PIT3000/PM2000V6에서 확인한 의약품 상세정보, 식별 이미지, 약품 이미지, pictogram 관련 SQL/API 흐름을 정리한 저장소입니다.
핵심 결론
- 화면/인쇄에 쓰이는 약품 상세정보는 로컬 DB(
PM_DRUG,PM_IMAGE)와 외부 health.kr URL을 병행합니다. DRUGCODE에서DIK_CODE,SUNG_CODE를 조회합니다.SUNG_CODE는 성분코드입니다. 보험코드가 아닙니다.- 식별/약품 이미지는
PM_IMAGE..DrugImg,C:\\Dik20\\Data\\Drugimg2005.MDB,C:\\Dik2004\\Data\\Drugimg.MDB계열에서 확인됩니다. PM_IMAGE..DrugImg.DIK_CODE는 일부 인스턴스에서 평문 13자리 DIK_CODE가 아니라 44자 Base64/32-byte digest 형태의 image key일 수 있습니다. 직접 join을 단정하면 안 됩니다.- health.kr URL은 상세 페이지/확대 이미지 페이지를 여는 보조 경로입니다.
zoom.asp내부에 보이는 이미지 URL도 실제 HTTP 200/JPEG인지 별도 검증해야 합니다.
확인된 외부 URL
https://health.kr/searchDrug/result_drug_simple.asp?drug_cd={DIK_CODE}
https://www.health.kr/drug_info/sb/zoom.asp?drug_code={DIK_CODE}&print_front={PRINT_FRONT}&print_back={PRINT_BACK}
https://www.pharm.or.kr/search/zoom.asp?drug_code={DIK_CODE}
확인된 주요 SQL
-- DRUGCODE → DIK_CODE / SUNG_CODE
SELECT ISNULL(DIK_CODE, '') AS DIK_CODE, SUNG_CODE
FROM PM_DRUG..CD_GOODS
WHERE DRUGCODE = :drugcode;
-- 약품 상세정보
SELECT
A.ETCNAME,
A.SPLNAME,
C.SUNG_ENM,
B.PRINT_TYPE,
A.EFFCTNAME,
B.CHARACT,
B.SAVE_MEDI,
B.INDIC_MEDI,
B.EFFECT,
B.ADR,
B.INTERACTION,
B.GEN_MEDI
FROM PM_DRUG..CD_ETCGOODS AS A
INNER JOIN PM_DRUG..CD_MC AS B
ON A.DRUGCODE = B.DRUGCODE
LEFT JOIN PM_DRUG..CD_SUNG AS C
ON A.SUNG_CODE = C.SUNG_CODE
WHERE A.DRUGCODE = :drugcode;
-- SQL Server 이미지 테이블
-- 주의: DrugImg.DIK_CODE는 인스턴스에 따라 평문 DIK_CODE가 아니라 44자 Base64 image key일 수 있음.
-- 평문 join을 먼저 가정하지 말고 key 분포/DRUGIMG_USER.DRUG_CODE/legacy MDB/PIT 생성 함수를 확인한다.
SELECT DIK_CODE, DRUG_IMG, EXPR1
FROM PM_IMAGE..DrugImg
WHERE DIK_CODE = :image_key
ORDER BY EXPR1 DESC;
-- Access MDB 계열 이미지
SELECT DRUGCODE, FILENAME, FILELENGTH, DRUGIMG, SEQ
FROM DRUGIMG
WHERE DRUGCODE = :drugcode
ORDER BY SEQ;
-- pictogram
SELECT TOP 3 PIC_CODE
FROM PM_DRUG..CD_PICTOGRAM_SUB
WHERE DIK_CODE = :dik_code
ORDER BY SEQ;
SELECT TOP 1 PIC_IMG
FROM PM_DRUG..CD_PICTOGRAM
WHERE PIC_CODE = :pic_code
AND PIC_LAG = '0'
AND IMG_CODE = '1';
예시 JSON
examples/drug-info-response.example.json 참고.
원본 분석 산출물
data/teoul_drug_image_api_PM_PharmCharge.txt
PM_PharmCharge에서 추출한 문자열/SQL/API URL 히트 요약.
주의
- 이 저장소는 API 계약/흐름 문서화용입니다. 외부 사이트를 과도하게 호출하지 마세요.
- 실제 환자/처방 데이터는 포함하지 않습니다.
- 이미지 BLOB은 예시에서는 URL/base64 placeholder로만 둡니다.
Description
Languages
Python
100%