Sign In

FastCampus 3기 수강생의 Best Prompt #3:의약품 안전사용 서비스

Sujin_Kang

FastCampus 3기 수강생의 Best Prompt #3:의약품 안전사용 서비스

Smart DUR(Drug Utilization Review)

세 번째 소개드릴 프롬프트는 형기님의 Smart Dur 프롬프트입니다.
형기님은 개발자예요. @김형기 님께서도 청주에서 매주 토요일에 수업을 참여하시면서, 적극적으로 프롬프트 엔지니어링을 하셨어요.
제가 뽑은 3기의 1등 프롬프트 개발 사례 입니다.
형기님의 프롬프트
✏️
환자 정보와 처방약 정보를 받아서 환자의 특성(나이·임신 여부·질환 등)에 따른 금기사항(Contraindications)과 주의사항(Precautions)을 구조화해주는 “약물 안전성 점검(DUR) 스크리닝” 기능을 수행하도록 설계했습니다. DUR(Drug Utilization Review) 작업을 자동화하여, 각 환자 특성이 해당 약물의 금기 대상인지·주의 대상인지 JSON 형태로 결과를 생성하는 역할을 해요.
목적
환자 정보(나이, 성별, 동반질환)를 기반으로 금기,주의 약제 복용 방지
사용 Model
Solar-pro(Temp : 0.4 , Top_P : 0.56)
사용 Prompt 구조
Type D: Instruction + Input Data -> Output
사용 기법
Zero Shot
COT
프롬프트 전문
System Message
 #Instruction
      Your task is to create a 'DUR_screening_dataset' that highlights contraindications and precautions for potential adverse drug reactions in patients' new prescriptions.
   
          Step 1. Declare an array variable called **Patient_Characteristics**.
          Step 2. Analyze the patient_info, then classify them based on the following list (multiple selections allowed) and store the results in the **Patient_Characteristics** 
              Important!! ---> Do not include any terms that are not in the provided list eg. 여성, 남성 <---
              <list>
                  a. 신생아 : Within 0–28 days after birth
                  b. 유아 : From 29 days to 5 years old
                  c. 소아 : From 29 days to 12 years old
                  d. 청소년 : 13–18 years old
                  e. 성인 : 19–65 years old
                  f. 고령자 : 65 years and older
                  g. 수유부 : Pregnant women over 30 weeks who are breastfeeding
                  h. 가임여성 : Women 18–49 years
                  i. 임부 : Pregnant woman
              </list>
          Step 3. Add each element of **comorbidities** to **Patient_Characteristics**.
          Step 4. --> Using the **logic** below, analyze whether the patient’s characteristics fall under contraindications or precautions.
              <logic>
                  for (characteristic in **Patient_Characteristics**){
                      for(drug in **new_prescriptions**){
                          for(drug_info in drug){ 
                              if (Contraindication related to characteristics exist in drug_info){
                                  mark category as "Contraindication" 
                                  **skip to next drug_info**
                              }
                              else if (Precaution related to characteristics exist in drug_info){
                                  mark category as "Precaution"
                                  **skip to next drug_info**
                              }else{
                                  --> **Do Nothing**
                              }          
                          }
                      }
                  }
              </logic>
  ----------------------
  #Format
      {
          "Patient_Characteristics" : [{Patient_Characteristics}],
          "DUR_screening_dataset": [
              {
                  "identifier": "A unique identifier for the item (e.g., DUR_0001, DUR_0002)",
                  "characteristic": "{characteristic}",
                  "drug_name": "{drug_name}",
                  "category": "only one of the following: Contraindication or Precaution",
                  "watchful_symptoms": "symptoms name that patients should be aware of due to taking the drug"
              }
          ]
      }
  ----------------------
  **Let's Think Step by Step**
/callout

첫 번째 케이스 : 고령자, 파킨슨병 환자

```json
{
        "patient_info": {
            "age": 80,
            "gender": "Female",
            "comorbidities": [
                "Hypertension",
                "Parkinson’s disease"
            ]
        },
        "new_prescriptions": [
            {
                "drug_name": "낙센에스정500/20밀리그램",
                "drug_info": [
                    {
                        "drug_article": "** **투여금지** : 다음 환자에는 투여하지 말 것 **",
                        "drug_label": "(a) 나프록센, 에스오메프라졸, 치환기인 벤즈이미다졸 및 이 약의 구성성분에 과민증이 있는 환자\n(b) 아스피린이나 기타 비스테로이드성 소염진통제(COX-2 저해제 포함)의 투여에 의하여 천식, 비염, 코의 용종, 두드러기, 알레르기 반응 또는 그 병력이 있는 환자 (이러한 환자에서 비스테로이드성 소염진통제 투여후 치명적인 중증의 아나필락시양 반응이 드물게 보고되었다.)\n(c) 활동성 소화성 궤양 환자\n(d) 위장관출혈, 뇌혈관출혈, 기타 출혈질환 환자, 심한 혈액이상 환자\n(e) 중증 간장애 환자(예. Childs-Pugh 등급 C)\n(f) 중증의 심부전 환자\n(g) 중증의 신장애 환자 (크레아티닌 클리어런스 30mL\/min 미만)\n(h) 심한 **고혈압환**자\n(i) 관상동맥 우회로술(CABG) 전후에 발생하는 통증의 치료\n(j) 임신 말기 3개월 기간에 해당하는 임부\n(k) 아타자나비어, 넬피나비어 투여환자\n(l) 릴피비린 함유제제를 투여중인 환자 (「6. 상호작용」 참조)"
                    },
                    {
                        "drug_article": "** 투여신중 : 다음 환자에는 신중히 투여할 것 **",
                        "drug_label": "(a) 소화성궤양의 병력이 있는 환자\n(b) 혈액이상 또는 그의 병력이 있는 환자\n(c) 출혈경향이 있는 환자 (혈소판 기능저하가 나타날 수 있다.)\n(d) 간장애 또는 그의 병력이 있는 환자\n(e) 신장애 또는 그의 병력이 있는 환자 및 신혈류량이 저하된 환자\n(f) 심기능 장애 환자\n(g) 고혈압 환자\n(h) 과민증의 병력이 있는 환자\n(i) 기관지천식 환자\n(j) 유도성 포르피린증환자, 전신성홍반성루푸스(SLE) 환자 및 혼합결합조질질환(MCTD) 환자\n(k) 고령자"
                    },
                    {
                        "drug_article": "** **투여주의** : **고령자에** 대한 투여 **",
                        "drug_label": "일반적으로 고령자는 소염진통제에 의한 소화관의 궤양, 출혈 등의 발현이 높으므로 필요한 최소량으로 투여하고 이상반응의 발현에 특히 유의하는 등 환자의 상태를 관찰하면서 신중히 투여하거나, 다른 대체약 투여를 고려해야 한다."
                    },
                    {
                        "drug_article": "** 투여주의 : 소아에 대한 투여 **",
                        "drug_label": "18세 이하의 소아 에 대한 안전성 및 유효성이 확립되어 있지 않으므로 투여를 권장하지 않는다."
                    },
                    {
                        "drug_article": "** 투여주의 : 임부 및 수유부에 대한 투여 **",
                        "drug_label": "(a) 생식능 : 나프록센과 같은 비스테로이드성 소염진통제는 여성 생식능력을 저해할 수 있다. 동물실험에서 나프록센과 같은 비스테로이드성 소염진통제는 배란을 억제할 수 있는 것으로 나타났다. 임신이 어려운 여성 및 불임에 대해 조사 중인 여성은 이 약을 포함한 비스테로이드성 소염진통제의 투여 중단을 고려해야 한다.\n(b) 임부 : 이 약을 임부에게 투여한 잘 조절된 임상자료는 없다. 나프록센과 관련하여 이 약은 임신말기에 투여해서는 안된다.\n① 나프록센: 나프록센의 동물실험에서 배태자 발생과 관련한 직접적 또는 간접적인 유해성은 나타나지 않았다. 사람에 대한 역학시험 자료에서 임신 초기에 비스테로이드성 소염진통제의 사용으로 유산 위험이 증가할 가능성이 있는 것으로 나타났다. 사람에게 비스테로이드성 소염진통제 투여와 관련한 선척적 기형이 보고되었지만 빈도가 낮았고 확실한 경향을 나타내지는 않았다. 같은 종류의 다른 약과 마찬가지로, 나프록센은 동물실험(출산전·후시기)에서 분만지연, 난산의 발생빈도증가 및 새끼의 생존율 감소가 보고되었고, 임신말기에 투여 시 태자의 동맥관 수축이 나타났으며, 또한 사람 태아의 동맥관조기폐쇄 등 심혈관계에도 영향을 주었다. 따라서 나프록센을 임신 3기에 투여하면 안 된다. 비스테로이드성 소염진통제는 임신을 계획중인 여성 또는 임신 1기, 2기 여성에게는 환자의 잠재적 이익이 태자의 잠재적 위험보다 더 클 경우에만 투여해야 한다. 나프록센이 프로스타글란딘 합성 억제 작용을 통해 태아 순환에 악영향을 주고 산모와 태아 모두에게 출혈 경향을 증가시켜 수축을 억제할 수 있기 때문에 나프록센 함유 제제를 출산 또는 분만에 사용하는 것은 권장되지 않는다.\n② 에스오메프라졸 : 임부에게 에스오메프라졸을 투여한 임상 자료는 제한적이다. 에스오메프라졸의 동물실험에서 배태자 발생과 관련한 직접적 또는 간접적인 유해성은 나타나지 않았다. 라세미 혼합물에 대한 동물실험에서 임신, 분만 또는 생후 발육과 관련한 직접적 또는 간접적인 유해성은 나타나지 않았다. 그럼에도 불구하고, 임부에게 이 약을 투여 시 주의해야 한다.\n(c) 수유부 : 이 약 중의 나프록센은 모유로의 이행이 일어나 신생아에서 프로스타글란딘 합성을 억제하는 이상반응을 일으키므로 수유부에는 투여하지 않는다."
                    }
                ]
            },
            {
                "dru_name": "맥페란정(메토클로프라미드)",
                "drug_info": [
                    {
                        "drug_article": "** **투여금지** : 다음 환자에는 투여하지 말 것 **",
                        "drug_label": "(a) 크롬친화세포종(갈색세포종) 환자(급격한 승압발작을 일으킬 수 있다.)\n(b) 이 약에 대해 과민증 또는 불내성 환자\n(c) 위장관 출혈, 기계적 장폐색, 천공 등 위장관 운동 자극이 위험한 환자\n(d) 신경이완제 또는 메토클로프라미드 유발 지연성 이상운동증 병력 환자\n(e) 간질 (발작 빈도 및 강도 증가) 환자\n(f) **파킨슨병 환자**\n(g) 레보도파 또는 도파민효능제 병용투여 환자\n(h) 잘 알려진 메토클로프라미드에 의한 메트해모글로빈혈증 또는 NADH 시토크롬 b5 결핍 병력 환자\n(i) 1세 미만 소아 (추체외로장애 위험성 증가)\n(j) 이 약은 유당을 함유하고 있으므로, 갈락토오스 불내성(galactose intolerance), Lapp 유당분해효소 결핍증(Lapp lactase deficiency) 또는 포도당-갈락토오스 흡수장애(glucose-galactose malabsorption) 등의 유전적인 문제가 있는 환자에게는 투여하면 안 된다."
                    },
                    {
                        "drug_article": "** 투여신중 : 다음 환자에는 신중히 투여할 것 **",
                        "drug_label": "(a) 1~18세 소아(추체외로증상이 발현하기 쉽기 때문에 과량투여하지 않도록 주의한다. 특히 탈수상태, 발열시 등에는 주의한다.)\n(b) 고령자\n(c) 신장애 환자\n(d) 탈수·영양불량 등을 수반한 신체적 피폐 환자(말린증후군이 나타날 수 있다.)"
                    },
                    {
                        "drug_article": "** **투여주의** : **고령자**에 대한 투여 **",
                        "drug_label": "대부분 신장으로 배설되기 때문에, 신기능이 저하되기 쉬운 고령자의 경우 높은 혈중농도가 지속될 수 있으므로 부작용(추체외로증상)의 발현에 주의하고 용량 및 투여간격에 유의하는 등 신중히 투여한다."
                    },
                    {
                        "drug_article": "** 투여주의 : 임부 및 수유부에 대한 투여 **",
                        "drug_label": "(a) 임부\n임부에 대한 대규모자료(1,000명 이상 노출결과)에서 최기형성 또는 발생독성이 나타나지 않았다. 임상적으로 필요하다면 임신 중에 메토클로프라미드를 사용할 수 있다. 다른 신경이완제와 같이 약리학적 특성 때문에 임신 말기에 메토클로프라미드를 투여하는 경우 신생아 추체외로증후군을 배제할 수 없다. 메토클로프라미드는 임신 말기에 피해야 하며, 만약 투여해야 한다면 신생아에 대한 모니터링을 수행해야 한다.\n(b) 수유부\n메토클로프라미드는 낮은 농도로 모유로 분비된다. 모유로 수유하는 아기들에게 이상반응을 배제할 수 없으므로, 메토클로프라미드는 수유 중에 권장되지 않는다. 수유부에게 메토클로프라미드 중단을 고려해야 한다."
                    }
                ]
            }
        ]
    }
```

```json
response: {
    "Patient_Characteristics": [
        "고령자",
        "고혈압",
        "파킨슨병"
    ],
    "DUR_screening_dataset": [
        {
            "identifier": "DUR_0001",
            "characteristic": "고령자",
            "drug_name": "낙센에스정500/20밀리그램",
            "category": "투여주의",
            "watchful_symptoms": "소화관의 궤양, 출혈"
        },
        {
            "identifier": "DUR_0002",
            "characteristic": "고령자",
            "drug_name": "맥페란정(메토클로프라미드)",
            "category": "투여주의",
            "watchful_symptoms": "추체외로증상"
        },
        {
            "identifier": "DUR_0003",
            "characteristic": "고혈압",
            "drug_name": "낙센에스정500/20밀리그램",
            "category": "투여금지",
            "watchful_symptoms": "심부전"
        },
        {
            "identifier": "DUR_0004",
            "characteristic": "파킨슨병",
            "drug_name": "맥페란정(메토클로프라미드)",
            "category": "투여금지",
            "watchful_symptoms": "파킨슨병 악화"
        }
    ]
}
```

- **Case 2 천식, 비염, 고혈압 환자**
    
    ```json
     {
            "patient_info": {
                "age": 59,
                "gender": "Male",
                "comorbidities": [
                    "Other allergic asthma",
                    "Allergic rhinitis",
                    "Essential Hypertension"
                ]
            },
            "new_prescriptions": [
                {
                    "drug_name": "하이네콜정",
                    "drug_info": [
                        {
                            "durg_article": "** **투여금지** : 다음 환자에는 투여하지 말 것 **",
                            "durg_label": "(a) 위장관 또는 요로의 기계적 폐쇄가 있는 환자\n(b) 경련성 위장질환, 위궤양, 급성위장관 염증성 질환\n(c) 복막염 환자\n(d) 미주신경긴장항진환자\n(e) **천식**환자\n(f) 갑상선기능항진증환자\n(g) 관상동맥폐쇄환자\n(h) 서맥, 방실전도장애, 혈관운동불안정성환자\n(i) 저혈압, **고혈압환자**\n(j) 심근경색증환자, 중증심질환환자\n(k) 간질 및 파킨슨증환자\n(l) 항콜린에스테라제로 치료받는 환자\n(m) 위장관문합술을 받은 후 치유되지 않은 환자\n(n) 임부\n(o) 이 약은 유당을 함유하고 있으므로, 갈락토오스 불내성(galactose intolerance), Lapp 유당분해효소 결핍증(Lapp lactase deficiency) 또는 포도당-갈락토오스 흡수장애(glucose-galactose malabsorption) 등의 유전적인 문제가 있는 환자에게는 투여하면 안 된다."
                        },
                        {
                            "durg_article": "** 투여신중 : 다음 환자에는 신중히 투여할 것 **",
                            "durg_label": "이 약은 황색5호(선셋옐로우 FCF, Sunset Yellow FCF)를 함유하고 있으므로 이 성분에 과민하거나 알레르기 병력이 있는 환자에는 신중히 투여한다."
                        }
                    ]
                }
            ]
        }
    ```
Response
response: {
    "Patient_Characteristics": [
        "고령자",
        "고혈압",
        "파킨슨병"
    ],
    "DUR_screening_dataset": [
        {
            "identifier": "DUR_0001",
            "characteristic": "고령자",
            "drug_name": "낙센에스정500/20밀리그램",
            "category": "투여주의",
            "watchful_symptoms": "소화관의 궤양, 출혈"
        },
        {
            "identifier": "DUR_0002",
            "characteristic": "고령자",
            "drug_name": "맥페란정(메토클로프라미드)",
            "category": "투여주의",
            "watchful_symptoms": "추체외로증상"
        },
        {
            "identifier": "DUR_0003",
            "characteristic": "고혈압",
            "drug_name": "낙센에스정500/20밀리그램",
            "category": "투여금지",
            "watchful_symptoms": "심부전"
        },
        {
            "identifier": "DUR_0004",
            "characteristic": "파킨슨병",
            "drug_name": "맥페란정(메토클로프라미드)",
            "category": "투여금지",
            "watchful_symptoms": "파킨슨병 악화"
        }
    ]
}

두 번째 Case: 천식, 비염, 고혈압 환자

 {
        "patient_info": {
            "age": 59,
            "gender": "Male",
            "comorbidities": [
                "Other allergic asthma",
                "Allergic rhinitis",
                "Essential Hypertension"
            ]
        },
        "new_prescriptions": [
            {
                "drug_name": "하이네콜정",
                "drug_info": [
                    {
                        "durg_article": "** 투여금지 : 다음 환자에는 투여하지 말 것 **",
                        "durg_label": "(a) 위장관 또는 요로의 기계적 폐쇄가 있는 환자\n(b) 경련성 위장질환, 위궤양, 급성위장관 염증성 질환\n(c) 복막염 환자\n(d) 미주신경긴장항진환자\n(e) 천식환자\n(f) 갑상선기능항진증환자\n(g) 관상동맥폐쇄환자\n(h) 서맥, 방실전도장애, 혈관운동불안정성환자\n(i) 저혈압, 고혈압환자\n(j) 심근경색증환자, 중증심질환환자\n(k) 간질 및 파킨슨증환자\n(l) 항콜린에스테라제로 치료받는 환자\n(m) 위장관문합술을 받은 후 치유되지 않은 환자\n(n) 임부\n(o) 이 약은 유당을 함유하고 있으므로, 갈락토오스 불내성(galactose intolerance), Lapp 유당분해효소 결핍증(Lapp lactase deficiency) 또는 포도당-갈락토오스 흡수장애(glucose-galactose malabsorption) 등의 유전적인 문제가 있는 환자에게는 투여하면 안 된다."
                    },
                    {
                        "durg_article": "** 투여신중 : 다음 환자에는 신중히 투여할 것 **",
                        "durg_label": "이 약은 황색5호(선셋옐로우 FCF, Sunset Yellow FCF)를 함유하고 있으므로 이 성분에 과민하거나 알레르기 병력이 있는 환자에는 신중히 투여한다."
                    }
                ]
            }
        ]
    }
/code
Response:
response: {
    "Patient_Characteristics": [
        "성인",
        "기타 알레르기성 천식",
        "알레르기성 비염",
        "본태성 고혈압"
    ],
    "DUR_screening_dataset": [
        {
            "identifier": "DUR_0001",
            "characteristic": "천식",
            "drug_name": "하이네콜정",
            "category": "Contraindication",
            "watchful_symptoms": "천식 악화"
        },
        {
            "identifier": "DUR_0002",
            "characteristic": "고혈압",
            "drug_name": "하이네콜정",
            "category": "Precaution",
            "watchful_symptoms": "혈압 상승"
        }
    ]
}

System Message 역할

✏️
System 메시지의 content는 모델에게 다음과 같은 작업을 수행하라는 지시를 합니다.
1.
Patient_Characteristics라는 배열을 선언하고,
환자 정보를 분석하여 주어진 나이/상태 분류 목록에 해당하는 항목을 Patient_Characteristics 배열에 넣기. (소아, 성인, 고령자, 임부 등)
2.
comorbidities 목록에 있는 질환(예: 고혈압, 당뇨 등)을 모두 Patient_Characteristics에 추가하기.
각 특성(나이/상태/질환)별로 환자 처방약(new_prescriptions)을 순회하며, 해당 약의 contraindications(금기사항)에 포함되면 “Contraindication”, precautions(주의사항)에 포함되면 “Precaution”으로 분류하여 DUR_screening_dataset라는 배열에 추가함.

→ User Message 의 역할

✏️
User 메시지(role="user")에는 실제로 환자 정보를 담은 JSON이 들어 있습니다!
→ Solar Pro + 프롬프트 엔지니어링 결과를 영상으로 남겼습니다. 결과가 어떻게 나오는지, 봐주세요 ^^
환자 정보를 바꾸면 답변이 어떻게 나오는지가 포인트입니다.
의료서비스인 만큼, 정확해야해서 다음 두 가지를 수정 제안드렸어요.
개선 제안:

(1)
환자 분류 기준의 명확화: 예를 들어, “수유부: Pregnant women over 30 weeks who are breastfeeding” 부분은 실제 임상 정보와 어긋나는 표현일 수 있으므로, 의학적 정확성과 일관성을 위해 용어 정의를 보다 명확히 하기(예: ‘수유부: 모유 수유 중인 여성’, ‘임부: 임신 중인 여성’ 등).

(2)
예외 처리 로직 강화: 현재 ‘Contraindication’과 ‘Precaution’ 외의 케이스(예: 약물 상호작용, 특이 반응 등)에 대한 언급이 없어, 추가적인 위험 요소나 별도 경고가 필요한 상황을 어떻게 처리할지 불분명하니, 해당 로직을 상세히 보강해, 예외 상황에서도 처리가 가능하도록 지침을 추가할 필요가 있겠어요.
단계별 상황 분류와 출력 형식 가이드: 여러 특성을 동시에 가진 환자(예: ‘임부+가임여성’ 같은 중첩 특성)나 다수 약물이 처방된 경우 각 특성에 대한 금기·주의가 모두 적용될 수 있습니다. 이러한 중첩 로직 시 ‘DUR_screening_dataset’에 중복 혹은 우선순위가 어떻게 표현되어야 하는지(예: 여러 특성 중 가장 위험도가 높은 것을 먼저 기록) 등을 구체적으로 안내해주면 활용도가 크게 높아질 것 같아요.
형기님, 소중한 프롬프트 전문 공유 허용을 해주셔서 감사드립니다.
#FastCampus #promptengineering #prompting #프롬프트엔지니어링 #ChatGPT #SmartDUR #의약품안전
sujin-prompt-engineer
Subscribe to 'sujin-prompt-engineer'
안녕하세요,
슬래시페이지 구독을 하시면, 이따금씩 발행하는 프롬프트와 프롬프트 엔지니어링에 관한 글을 이메일로 받아보실 수 있어요. 구독하시겠어요? 😊
Subscribe
1
👍
4
😀
1
D
DK
많은 도움이 됩니다^^
See latest comments