View in English

  • 메뉴 열기 메뉴 닫기
  • Apple Developer
검색
검색 닫기
  • Apple Developer
  • 뉴스
  • 둘러보기
  • 디자인
  • 개발
  • 배포
  • 지원
  • 계정
페이지에서만 검색

빠른 링크

5 빠른 링크

비디오

메뉴 열기 메뉴 닫기
  • 컬렉션
  • 주제
  • 전체 비디오
  • 소개

WWDC25 컬렉션으로 돌아가기

  • 소개
  • 요약
  • 자막 전문
  • HealthKit Medications API 만나보기

    HealthKit에서 새로운 Medications API를 확인하세요. 새로운 API를 사용하는 예제 앱을 살펴보고, 의약품 및 투여 정보에 액세스하는 방법을 학습하며, 앱이 이와 같은 새로운 유형의 데이터 승인을 관리하는 방법을 알아보세요.

    챕터

    • 0:00 - 서론
    • 2:12 - Medications API 개요
    • 5:35 - 의약품 데이터의 예
    • 8:58 - 샘플 앱으로 자세히 알아보기
    • 18:21 - 고정된 객체 쿼리
    • 22:39 - 새 의약품에 대한 승인

    리소스

    • Authorizing access to health data
    • HKAnchoredObjectQuery
    • HKSampleQuery
    • Logging symptoms associated with a medication
    • requiresPerObjectAuthorization()
      • HD 비디오
      • SD 비디오

    관련 비디오

    WWDC25

    • iOS 및 iPadOS에서 HealthKit을 사용하여 운동 기록 추적하기

    WWDC20

    • Getting started with HealthKit
  • 비디오 검색…

    안녕하세요, 저는 Health 팀의 iOS 개발자 Eric입니다 오늘 소개해 드릴 내용은 HealthKit에 추가되었으며 iOS, iPadOS, visionOS에서 놀라운 경험을 연출할 수 있는 새 의약품 API입니다 안녕하세요, 저는 Health의 소프트웨어 엔지니어 Srishti Gupta입니다 저는 Eric이 소개할 새 API를 사용해 빌드한 앱을 보여 드리겠습니다

    먼저 앱이 의약품 데이터를 읽을 수 있도록 하는 새 HealthKit API를 살펴봅니다 Health에서 이 데이터가 표시되는 방식의 예도 확인합니다 그런 다음 Srishti가 이러한 API를 사용하는 샘플 앱을 설명합니다

    이어서 고정된 객체 쿼리, 그리고 앱이 새로 추가된 의약품의 승인을 관리하는 데 Health가 도움이 되는 방식을 살펴봅니다 새 API를 자세히 둘러보기 전에 의약품 데이터가 HealthKit에 추가되는 방식을 보여 드리죠

    iOS 15에서 Health 앱에 의약품 추적 기능이 추가되었습니다 이 기능은 Health의 Search(검색) 탭에 있습니다 시작하려면 Medications(의약품)를 탭합니다 의약품 보기로 이동되고요 아직 추가한 의약품이 없다면 “Add a Medication(의약품 추가)”을 탭해 추가할 수 있습니다 의약품을 추가할 때는 우선 검색부터 하겠죠 이름은 같지만 강도가 다르거나 형태가 다른 의약품이 많습니다 특정 의약품을 선택한 후 지속적인 추적을 위해 알림 일정을 설정할 수도 있습니다 의약품에 대한 추가 세부 정보를 입력해 개인화할 수도 있습니다 완료하면 의약품이 목록에 추가됩니다!

    언제든 의약품을 기록 가능합니다 기록할 때마다 투여량과 투여 시간을 선택할 수 있습니다 시스템이 의약품을 기록하라는 알림을 표시했을 때 Taken(투여함), Skipped(건너뜀)를 선택하거나 10분 후 다시 알릴 수 있습니다 의약품을 추가하든 투여 이벤트를 기록하든 데이터는 HealthKit에 안전하게 저장됩니다 현재 앱이 HealthKit에서 가져올 수 있는 데이터는 확장 중입니다 이제 의약품과 투여 이벤트를 읽는 기능이 추가됩니다! 의약품을 나타내는 객체는 HKUserAnnotatedMedication입니다 HKMedicationDoseEvent는 의약품의 기록된 투여를 나타냅니다 새로운 HKSample이죠 앱은 쿼리 설명자와 HKQuery를 사용해 HealthKit에서 데이터를 가져오는데 이제 의약품을 가져오는 새 쿼리 설명자와 새 HKQuery가 도입됩니다 바로 HKUserAnnotatedMedicationQueryDescriptor와 HKUserAnnotatedMedicationQuery입니다 먼저 의약품과 투여 이벤트를 나타내는 두 객체를 보겠습니다 사용자가 주석을 단 의약품은 특정 의약품과 맞춤화를 나타냅니다 네 가지 속성으로 구성되고요 isArchived는 의약품을 완료했거나 더 이상 투여하지 않음을 나타내는 플래그입니다 이러한 의약품은 보관됨 섹션에 정리되며 활성 의약품 목록에 나타나지 않습니다 hasSchedule은 의약품에 알림 일정이 설정되어 있는지 앱에 알립니다 있으면 시스템은 정기적으로 이 의약품을 기록하라는 알림을 표시합니다 별칭은 의약품을 기억하기 쉽게 긴 임상 이름 대신 지칭하는 방법입니다 개인화, 그리고 임상보다는 이해하기 쉬운 느낌의 의약품 관리를 위해 사용합니다 실제 투여하는 의약품에 대한 참조도 있습니다 HKMedicationConcept는 특정 의약품을 구현합니다 이것을 의약품 개념이라고 하는데 처방전 기록이 아니라 의약품의 개념적 아이디어만 나타내기 때문입니다 해당 식별자는 의약품 개념을 통틀어 고유하므로 앱이 기기와 시간에 관계없이 어떤 의약품을 안정적으로 식별할 수 있습니다 표시 텍스트는 의약품의 이름을 나타냅니다 일반적 형태는 의약품의 물리적 형태를 나타냅니다 캡슐, 정제, 액체 등입니다 의약품의 형태에 따라 투여 방법도 다릅니다 마지막으로 관련 코딩에는 해당 의약품과 연결된 임상 코드 세트가 포함됩니다 이러한 코드는 RxNorm 등 표준화된 용어에서 나옵니다 따라서 다른 건강 시스템과의 상호운용성, 그리고 의약품을 식별하고 분류하는 더 강력한 방법이 확보됩니다 투여 이벤트는 의약품을 투여해야 했거나 실제로 투여한 시간을 나타냅니다 새로운 HKSample이죠 항상 의약품 개념 식별자를 통해 특정 의약품과 연관됩니다 또한 taken, skipped 등 이벤트의 기록 상태도 포함합니다 예약된 투여는 다시 알릴 수 있고 상호작용하지 않을 수도 있습니다 이러한 경우를 위해 저장된 투여는 기록 상태에 이를 반영합니다 각 투여 이벤트는 기록된 의약품 수도 캡처합니다 예약된 투여 이벤트에는 예약된 투여 날짜와 투여량이 있습니다 예약된 수량이 투여 수량과 다르다면 투여를 예약한 항목과 실제로 투여한 항목 사이에 차이가 있었다는 의미입니다 다시 말씀드리면 투여 이벤트는 의약품에 연결됩니다 의약품 개념 식별자는 의약품 개념의 식별자 속성과 동일합니다 앱은 HealthKit의 HKUserAnnotatedMedication을 가져옵니다 이것은 앱이 쿼리를 실행했을 때 Health 내 맞춤화의 현재 상태를 나타냅니다 이제 Health에 추가된 의약품을 설명하고 의약품의 세부 정보와 맞춤화가 표시되는 위치를 살펴보겠습니다 Health에 Amoxicillin을 추가했다고 해 보죠 감염을 치료하기 위해 특정 기간 항생제를 투여하려고 합니다 앱이 의약품에 대해 쿼리하면 Amoxicillin과 맞춤화 가능 속성을 나타내는 객체를 받게 됩니다 현재 이 의약품에는 일정이 설정되어 있지 않습니다 “As Needed(필요시)” 상태죠 별칭은 “Antibiotics(항생제)”입니다 그것이 투여 이유니까요 의약품 개념이 Amoxicillin을 나타내고 있습니다 고유한 식별자가 있고 이름은 “Amoxicillin Trihydrate 500mg Oral Tablet”입니다 제조 형태는 정제고요 관련된 코딩은 하나입니다 308192라는 RxNorm 코드죠 앱은 이 HKUserAnnotatedMedication을 사용해 Health에 표시되는 것과 같은 경험을 만들 수 있습니다 여기에는 맞춤화 가능 컴포넌트와 의약품에 대한 구체적인 세부 정보가 포함됩니다 앱이 Health에서 의약품에 대해 쿼리했는데 이 의약품이 기록된 방식을 기반으로 경험을 강화하기 위해 앱은 투여 이벤트도 가져오려고 합니다 기록된 투여 이벤트의 예를 설명하고 앱이 이러한 속성에서 예상할 수 있는 값을 살펴보겠습니다 항생제는 정해진 간격으로 투여해야 하므로 일정을 설정합니다 Amoxicillin을 투여하라는 알림이 전송되었는데 건너뛰었습니다 알림을 건너뛰었을 때 HealthKit에 투여 이벤트가 저장되었습니다 앱은 의약품 투여 이벤트에 대해 쿼리하고 결과 핸들러에서 샘플을 다시 받습니다 이 투여 이벤트의 상태는 skipped입니다 의약품을 투여하지 않았기 때문에 투여 수량은 0입니다 샘플의 시작 날짜는 기록 시 확인된 시간입니다 이 투여 이벤트는 예약된 특정 이벤트의 레코드입니다 예약된 날짜 및 예약된 수량은 예약된 이벤트와 일치합니다 날짜는 이벤트가 일어날 것으로 설정된 시간이고 수량은 투여해야 하는 양입니다 예약된 의약품 투여마다 저장된 투여 이벤트가 생성됩니다 이 투여 이벤트는 Amoxicillin의 의약품 개념 식별자로 그 의약품 개념과 연결됩니다 앱은 HKMedicationDoseEvent를 사용해 사용자가 의약품을 기록한 방식을 기반으로 경험을 만들 수 있습니다 이는 기록 내용의 컨텍스트와 세부 정보를 캡처합니다 이렇게 앱이 의약품 데이터를 통합하는 데 사용할 수 있는 두 가지 객체를 살펴보았고 이제 앱이 객체를 가져오는 데 사용할 수 있는 쿼리를 보겠습니다 의약품 목록을 가져오려면 앱은 새 쿼리 설명자를 사용해야 합니다 앱은 이를 사용해 HealthKit에서 활성 의약품 및 보관된 의약품의 목록을 가져올 수 있습니다 이 쿼리 설명자와 함께 사용할 수 있는 새 술어는 두 가지입니다 하나는 isArchived용, 다른 하나는 hasSchedule용입니다 앱이 제한을 지정할 수도 있습니다 쿼리 설명자가 술어로 구성되어 있으면 앱이 해당 술어와 일치하는 의약품만 수신합니다 이 경우에서 앱은 Piroxicam을 볼 수 없는데 보관된 상태이기 때문입니다 투여 이벤트는 HKSample이며 앱은 기존 샘플 유형 기반 쿼리를 사용해 이를 가져올 수 있습니다 샘플 쿼리, 고정된 객체 쿼리나 관찰자 쿼리 말입니다 이러한 쿼리를 구성할 때 앱은 새 HKMedicationDoseEvent 샘플 유형을 사용해야 합니다 투여 이벤트에 대한 다양한 쿼리 조건자도 새로 도입되었는데요 가져올 투여 이벤트를 고려할 때는 의약품이나 기록 상태별로 가져오는 것이 가장 유용합니다

    지금까지 이러한 API의 개요와 데이터 예시를 살펴보았고 이제 Srishti의 설명을 듣겠습니다 Srishti는 HealthKit의 의약품 및 투여 이벤트 데이터를 통합하는 앱을 빌드했죠 Srishti, 빌드하신 앱에 대해 자세히 듣고 싶은데요 의약품 API를 어떻게 사용하시는지도 궁금하고요! 설명해 주시겠어요? 그러죠, Eric! 제가 빌드한 앱을 살펴보겠습니다 의약품의 투여 이벤트를 확인하고 부작용을 기록하는 용도입니다 실제 사용법을 보여 드리겠습니다 이 세션의 샘플 앱은 세션의 설명 페이지에 있는 링크에서 다운로드할 수 있습니다 앱을 열면 이미 승인된 의약품 목록이 표시됩니다 Health 앱에 추가된 의약품들이죠 특정 의약품을 탭하면 오늘 투여한 가장 최근의 내용이 표시됩니다 Health 앱에서 오늘 아침 투여했다고 기록했고요 발생할 수 있는 부작용 목록도 표시됩니다 이러한 부작용은 이 특정 의약품과 연결되어 있습니다 지금 심한 두통이 있기 때문에 해당 증상을 선택하고 이모티콘을 선택해 심각하다고 표시하겠습니다 그런 다음 ‘Save to HealthKit(HealthKit에 저장)’ 버튼을 탭해 샘플을 저장합니다 이렇게 앱을 간략히 설명해 드렸고 이제 제작한 방법에 대해 자세히 살펴보겠습니다 먼저 사용자에게 개인 데이터를 읽고 공유할 권한을 요청해야 합니다 앱은 HealthKit 객체별 승인 API를 사용해 의약품 데이터에 대한 읽기 접근 권한을 요청합니다 의약품은 샘플이 아닌 객체니까요 이 요청은 Swift UI View에 임베드되어 있습니다 그런 다음 healthStore와 새 객체 유형인 HKUserAnnotatedMedicationType으로 요청을 구성했습니다 또한 승인 메시지를 트리거해야 할 때를 나타내기 위해 상태 변수를 사용했습니다 이 상태 변수가 true로 변경되면 시스템은 Health 앱에 추가된 의약품 목록을 표시합니다 사용자는 앱과 공유할 의약품을 토글한 다음 ‘Allow(허용)’를 탭하면 됩니다 승인이 검토되면 완료 핸들러가 호출되므로 제가 오류를 매끄럽게 처리할 수 있습니다 의약품 투여를 읽는 데 별도로 승인을 요청할 필요는 없습니다 사용자가 의약품을 승인하면 해당 의약품과 투여를 읽을 접근 권한이 앱에 자동 부여됩니다 앱은 별도의 요청에서 메스꺼움, 구토 같은 증상 샘플에 대한 접근 권한을 요청하고 읽고 공유합니다 건강 데이터 접근 권한 요청에 비슷한 API 호출을 사용하겠습니다 하지만 차이점은 읽고 공유할 항목으로 단일 객체 유형 대신 샘플 유형 목록을 제공한다는 겁니다 상태 변수를 true로 변경하면 승인 요청이 시작되어 읽고 공유하도록 요청된 데이터 유형을 선택하는 시트가 표시됩니다 사용자는 원하는 증상 유형을 토글하고 ‘Allow(허용)’를 탭하죠 이 승인 요청을 완료하는 작업도 비슷하게 처리되어야 합니다 승인이 성공하지 않았을 때 앱이 매끄럽게 실패하도록요 승인을 결정한 후 앱은 HealthKit에서 승인된 의약품의 전체 목록에 대해 쿼리합니다 이를 위해 앱은 HKUserAnnotatedMedication 배열을 반환하는 async 함수를 사용합니다 먼저 이 함수는 승인된 의약품 목록을 가져오는 쿼리 설명자를 구성합니다 이때 의약품은 사용자가 Health에 추가한 의약품입니다! 이 쿼리에는 술어나 제한이 필요하지 않은데 활성 의약품과 보관된 의약품을 모두 가져올 것이기 때문입니다 그리고 healthStore에 대한 참조를 사용해 쿼리 설명자의 결과를 대기합니다 이 함수를 구현하는 클래스는 다양한 쿼리를 담당하므로 healthStore에 대한 참조를 인스턴스 변수로 유지합니다 앱은 사용자가 승인한 의약품만 볼 수 있습니다 쿼리의 결과를 받았으면 이 함수의 의약품 목록을 가져와서 이를 사용해 앱의 기본 보기를 채웁니다 사용자가 의약품을 탭하면 의약품 세부 정보 보기를 위한 투여 이벤트를 가져오는 또 다른 쿼리를 수행해야 합니다 이번에는 오늘 기록된 의약품 투여 이벤트에 대해 쿼리해야 합니다 최신 투여 이벤트를 가져오기 위해 쿼리 설명자를 설정한 방법을 보여 드리죠 최신 투여를 가져오기 위해 HKMedicationConcept를 받고 선택 사항인 HKMedicationDoseEvent 하나를 반환하는 함수를 작성했습니다 오늘 기록된 투여가 없으면 해당 의약품에 대한 이 투여 이벤트는 nil입니다 결과를 제한하기 위해 복합 술어를 설정했는데 제공된 의약품의 투여 이벤트 중 오늘 기록되었고 상태가 taken인 투여를 원하기 때문입니다 이 샘플 술어를 구성한 방법에 대한 자세한 내용은 샘플 앱을 살펴보세요 그런 다음 샘플 쿼리 설명자의 나머지 부분을 구성하고 대기했던 결과의 첫 번째 객체를 반환했습니다 정렬 설명자 및 제한에 따라 술어와 일치하면서 가장 최근 기록된 투여만 결과에 포함됩니다 오늘의 투여를 검색한 후 이것의 시작 날짜로 투여 타일을 설정합니다 오늘 기록된 투여가 없으면 아무것도 표시하지 않습니다

    앱이 HealthKit에서 의약품 및 투여 이벤트를 성공적으로 가져왔습니다 이제 특정 의약품에 연결된 관련 부작용 목록을 표시하려고 합니다 이를 위해 의약품별로 어떤 부작용이 있는지 조사를 약간 했습니다

    의약품에는 각종 부작용이 있을 수 있는데 HealthKit에는 두통, 메스꺼움 등 일부 증상을 반영한 카테고리 유형이 있습니다 조사를 할 때 RxNorm이라는 시스템의 코드와 중상 이름 및 카테고리 유형 설명자를 캡처하는 증상 모델을 연결했습니다 RxNorm은 임상 약물을 개별 개념을 나타내는 고유 식별자로 인코딩합니다 조사한 연결 관계를 앱의 정적 구조에 인코딩했습니다 RxNorm 코드를 통해 의약품을 부작용 샘플 유형 목록에 연관시킨 방법을 보여 드리겠습니다 먼저 Eric이 앞서 소개한 다이어그램을 볼까요 HKMedicationConcept에 관련 코딩 속성을 사용했습니다 여기에는 이 의약품을 나타내는 임상 코딩 세트가 포함되어 있죠 임상 코딩은 시스템에 컨텍스트화된 코드입니다 이러한 코드는 알레르기, 상태, 지금 예시에서는 의약품처럼 특정한 의학 개념을 나타냅니다 시스템은 공식 FHIR 용어에 따라 식별됩니다 제가 활용 중인 RxNorm 시스템에는 이 시스템을 고유하게 식별하는 이러한 URL이 있습니다 이러한 코딩을 모델링하는 방법에 대한 자세한 내용은 개발자 문서를 확인하세요 이제 앱에서 RxNorm 시스템을 사용하는 방법을 보여 드리죠 부작용 구조를 강화하여 알려진 부작용이 특정 의약품과 매치되도록 하기로 했습니다 먼저 RxNorm 시스템에 대한 상수를 추가했습니다 그런 다음 HKMedicationConcept에 대한 증상 유형을 검색하는 함수를 도입했습니다 이 함수는 정적 딕셔너리의 데이터를 사용해 의약품의 RxNorm 코드를 증상 모델에 매치합니다 SideEffects 정적 함수를 사용해 의약품의 모든 관련 증상을 가져와서 의약품 세부 정보 보기에 표시했습니다 이제 앱에 의약품에 대한 증상 세트가 준비되었고 다음으로 증상을 기록하는 경험을 구현했습니다 증상 강도 표시 및 기록 방법으로 저는 이모티콘을 가장 좋아합니다 우선 없음부터 극심까지 증상을 나타내는 이모티콘 5개를 선택했습니다 그런 다음 SymptomIntensity라는 새 열거형을 만들었습니다 이 강도를 HealthKit에 저장할 카테고리 샘플로 바꾸고 싶습니다 그래서 사례를 해당 카테고리 값과 연결했습니다 모두 하나로 묶고자 카테고리 유형과 SymptomIntensity를 위한 샘플을 만드는 함수를 작성했고요 healthStore의 기존 save 메서드로 샘플을 저장하겠습니다 이제 증상 유형을 탭하면 이모티콘 선택기가 표시됩니다 증상의 강도를 나타내는 이모티콘을 선택하고 HealthKit에 저장할 수 있습니다 이렇게 제 앱을 살펴보았습니다! 제가 빌드한 다양한 경험, 그리고 앱이 데이터를 가져오는 데 사용하는 다양한 의약품 쿼리를 둘러보았습니다 RxNorm 시스템을 활용해 증상을 연결하고 앱에 표시하는 방법도 보여 드렸습니다 새 차트 경험도 추가할까 생각 중입니다 시간 경과에 따라 기록된 의약품 투여를 추적할 수 있게요 Eric, 기반 데이터를 관찰하고 가져온 다음 차트를 채우는 고정된 객체 쿼리를 사용할까 하는데요 어떻게 생각하세요? 훌륭한 개요 설명 감사합니다! 차트 경험에 고정된 객체 쿼리가 딱 적합할 것 같습니다 새 투여가 HealthKit에 저장되면 차트가 원활하게 업데이트되겠죠

    투여 이벤트 데이터에 고정된 객체 쿼리를 사용할 때는 주의해야 합니다 투여 이벤트는 과거 며칠에 대해 기록되거나 편집 중 삭제되고 다시 유지되거나 아직 상호작용하지 않은 알림을 위해 저장될 수 있습니다 잘못 처리하면 일관성 없는 데이터처럼 보일 수 있습니다 고정된 객체 쿼리와 유의할 모범 사례를 한번 복습해 볼까요 앱이 고정된 객체 쿼리를 실행하면 앱은 기존 샘플의 스냅샷을 받습니다 업데이트가 있는 경우 앱은 추가 결과 세트를 받는데 여기에는 앱이 이미 처리한 샘플에 대한 삭제가 포함될 수 있습니다 고정된 객체 쿼리는 다양하게 사용할 수 있습니다 앱이 HealthKit에 추가된 새 데이터를 받도록 하는 데 효율적인 방법입니다 고정된 객체 쿼리는 제공된 쿼리 앵커에 유의해 데이터를 가져오기에 유용합니다 고정된 객체 쿼리에서 이미 데이터를 가져왔다면 앱이 같은 데이터를 다시 처리하지 않도록 반환된 쿼리 앵커를 사용하세요 앱이 쿼리를 처음부터 시작하려는 경우 쿼리 앵커에 nil을 제공하세요 앱은 HealthKit 추가 최신 투여 이벤트 데이터를 반영해야 합니다 투여 이벤트는 대화형 기록 동작을 캡처하므로 앱에서 오래된 데이터가 보이면 당황스러울 수 있습니다 고정된 쿼리를 사용해 계속 앱의 데이터를 최신으로 유지하여 Health에 표시된 내용과 일치하도록 해야 합니다 일반적으로 고정된 객체 쿼리 사용이 페어링된 관찰자 쿼리 및 샘플 쿼리 설정보다 효율적입니다 마지막으로 고정된 객체 쿼리용 Swift async 인터페이스가 있죠 이 인터페이스는 결과 흐름을 제공하며 Swift async/await와 사용 가능합니다 고정된 객체 쿼리를 사용해 본 적이 없거나 자세한 내용 및 예를 보려면 개발자 문서를 확인하세요 HealthKit 시작하기 WWDC 세션도 시청하세요!

    Srishti가 연결된 객체 쿼리를 사용해 차트용 데이터를 가져오는 과정을 볼까요 Srishti, 이 쿼리를 구현하는 방법을 보여 주시겠어요?

    물론이죠! 쿼리를 어떻게 작성할지 생각 중인데요 의약품의 기록된 투여만 가져와야 하며 차트 날짜 기간에 속해야 합니다 앱의 데이터가 업데이트되는 방식도 추적해야 합니다 고정된 객체 쿼리를 설정하기 위해 우선 앞서 만든 샘플 쿼리처럼 쿼리를 구성하겠습니다 의약품 및 기록 상태별로 투여를 가져오기 위해 동일한 술어를 사용하고요 다만 오늘에 대한 술어를 차트 날짜 기간에 속하는 투여와 일치하는 술어로 바꿨습니다 이 술어를 구성한 방법에 대한 자세한 내용은 샘플 앱을 확인하세요 앵커에 대해 nil을 입력합니다 기록된 모든 투여 이벤트의 처음부터 시작하려고 하니까요 Swift async 인터페이스를 사용해 백그라운드 스레드에서 쿼리를 실행합니다 쿼리에서 결과를 받으면 별도의 함수에서 처리하여 앱의 데이터 모델을 업데이트하죠 handleResult라는 새 함수를 사용하겠습니다 먼저 결과에서 삭제된 객체를 가져와 삭제된 데이터를 정리해야 합니다 그런 다음 추가된 새 샘플로 차트 포인트 세트를 업데이트해야 합니다 차트 포인트를 관리한 방법에 대한 자세한 내용은 샘플 앱을 확인하세요 이제 UI를 살펴보고 새 데이터가 저장될 때 차트가 업데이트되는 방식을 보여 드리죠 이것이 차트인데 X축은 개별 날짜를 나타내고 Y축은 의약품을 투여한 횟수를 나타냅니다 수평 스크롤 보기에서 다양한 의약품을 선택할 수 있습니다 워치의 의약품 앱에서 투여를 표시하려고 합니다 고정된 객체 쿼리를 사용해 새 데이터를 계속 확인하므로 워치에서 기록한 새 데이터로 차트가 자동 업데이트됩니다 완성된 차트가 아주 마음에 듭니다! HealthKit에 저장된 최신 데이터가 표시되기 때문에 시간 경과에 따라 기록된 투여를 관찰하기에 매우 편리합니다 하지만 Eric, Health 앱에 새 의약품을 추가하면 어떻게 되죠? 좋은 질문입니다 지금까지 보여 드린 내용은 Health에 추가된 모든 의약품에 대해 앱의 승인이 결정된 상태를 가정한 것입니다

    예를 들어 앱을 설치하고 의약품 데이터에 대해 성공적으로 승인을 완료했다고 해 보죠 이제 앱 사용자가 활성 목록에 새 의약품을 추가하려고 합니다 새 의약품이 다른 활성 의약품과 함께 표시되기를 원하므로 Health 앱으로 돌아와 이를 추가합니다 추가할 새 의약품을 검색하고 맞춤화하겠죠 목록에 추가하기 전에 마지막 단계가 있습니다 앱이 이미 의약품에 대한 접근 권한을 요청했기 때문에 Health 앱은 공유 대상으로 이 앱을 선택할 수 있도록 사용자에게 스위치를 표시합니다 승인을 요청할 때와 같지만 Health 앱 내부라는 점이 다르죠 앱에서 추가 작업이 필요하지 않고요 사용자가 앱을 선택하면 의약품이 Health에 저장됩니다 사용자가 앱으로 돌아가면 새로 추가된 약물이 표시됩니다 이 방식으로 승인을 관리하면 앱과 사용자 모두에게 원활하고 간편합니다 지금까지 의약품 API였습니다! 고유한 개인화부터 시간 경과에 따른 투여까지 의약품 데이터로 멋진 경험을 만드는 데 필요한 모든 것이 앱에 있습니다 모든 것은 특정한 의약품 개념을 통해 연결되며 이 개념은 다른 임상 데이터와 연관시킬 수 있습니다 투여 의약품이 건강에 영향을 미치는 방식을 사용자가 이해할 수 있도록 돕는 모든 경험을 상상해 보세요 앱에 의약품을 통합하는 흥미로운 방법을 찾으실 수 있기를 바랍니다

    마무리하기 전에 기억하실 몇 가지를 알려 드리죠 샘플 앱을 살펴보면서 기본적인 내용만 설명드렸는데요 나아갈 수 있는 방향은 매우 다양합니다 샘플 앱을 다운로드하고 예시 코드를 확인해 자체 앱 개발을 더 쉽게 시작해 보세요 HKMedicationConcept API를 더 효과적으로 활용하려면 RxNorm과 같은 임상 코딩 시스템에 대해 알아보세요 의약품을 분류 및 식별하고 부작용, 교육 콘텐츠 등 통찰력 있는 데이터와 연결할 수 있습니다 개발자 문서를 참고하면 각종 쿼리 술어와 HKMedicationDoseEvent의 기타 기능에 대해 다양한 기록 상태의 의미를 확인할 수 있습니다 “iOS의 운동 만나 보기” 개발자 세션도 확인해 보세요 의약품 API를 살펴보는 세션에 함께해 주셔서 감사합니다! 여러분의 결과물을 기대하고 있겠습니다 피드백 지원 기능을 사용해 오늘 다룬 새 API에 대한 여러분의 의견을 알려 주세요 시청해 주셔서 감사합니다!

    • 0:00 - 서론
    • iOS, iPadOS, visionOS 앱에서 의약품 데이터를 읽고 활용하도록 하는 새 의약품 API가 HealthKit에 도입되었습니다. iOS 15의 건강 앱은 사용자가 HealthKit을 통해 의약품을 추적하고, 알림을 설정하고, 투여를 안전하게 기록할 수 있도록 합니다. 이제 개발자는 이러한 API를 활용하여 맞춤화된 건강 경험을 만들 수 있습니다.

    • 2:12 - Medications API 개요
    • HealthKit의 데이터 기능이 이제 의약품과 투여 이벤트를 포함하도록 확장되었습니다. 앱는 새로운 객체와 쿼리를 통해 이 정보에 접근할 수 있습니다. 새로운 쿼리 설명자와 ‘HKQuery’를 사용하여 의약품 및 투여 이벤트를 가져올 수 있습니다. 이렇게 하면 앱이 더 포괄적인 의약품 관리 기능을 제공하고 다른 건강 시스템과의 상호운용성을 강화합니다.

    • 5:35 - 의약품 데이터의 예
    • 건강 앱에서 사용자가 Amoxicillin과 같은 의약품을 추가하면 해당 의약품이 맞춤화가 가능한 속성을 갖춘 객체로 표시됩니다. 이 객체에는 의약품의 공식 이름, 형태(예: 정제), 고유 식별자, RxNorm 코드가 포함됩니다. 사용자는 일정을 설정하고 쉽게 찾기 위해 ’항생제‘와 같은 별명을 지정할 수 있습니다. 앱는 특정 쿼리를 사용하여 이 데이터를 가져올 수 있습니다. 의약품 목록을 가져오기 위해 앱은 의약품의 활성 또는 보관된 상태와 예약 여부를 기반으로 필터링하는 새 쿼리 설명자를 사용할 수 있습니다. 투여 이벤트를 가져오기 위해 앱은 기존 샘플 유형 기반 쿼리를 사용하고, ‘HKMedicationDoseEvent’ 샘플 유형을 지정하고, 의약품 또는 기록 상태를 기준으로 필터링할 수 있습니다.

    • 8:58 - 샘플 앱으로 자세히 알아보기
    • 샘플 앱은 HealthKit의 의약품 API를 활용하여 사용자가 승인된 의약품을 확인하고, 가장 최근에 투여한 의약품과 부작용을 기록할 수 있도록 합니다. 앱은 사용자의 의약품 데이터 및 두통, 메스꺼움과 같은 증상 샘플을 읽거나 공유할 권한을 요청합니다. 권한이 승인되면 앱은 HealthKit에 쿼리를 전송하여 승인된 의약품의 전체 목록과 해당 투여 이벤트를 가져옵니다. 앱은 HealthKit 쿼리와 복합 술어를 사용하여 오늘 기록된 특정 의약품의 가장 최근 투여를 가져옵니다. 투여를 찾지 못하면 아무것도 표시되지 않습니다. 앱은 임상 의약품을 고유하게 식별하는 시스템인 RxNorm 코드를 사용하여 의약품과 부작용을 연결합니다. 앱의 정적 딕셔너리가 RxNorm 코드를 증상 모델로 매핑합니다. 사용자는 의약품과 관련된 부작용의 목록을 확인하고, 이모티콘을 사용하여 증상 강도를 기록할 수 있으며, 이는 HealthKit에 카테고리 샘플로 저장됩니다.

    • 18:21 - 고정된 객체 쿼리
    • 고정된 객체 쿼리를 사용하여 시간 경과에 따른 의약품 투여를 추적하는 기능을 앱에 추가할 수 있습니다. 고정된 객체 쿼리는 HealthKit의 새로운 투여 데이터로 차트를 업데이트하는 데 이상적인 솔루션입니다. 이 쿼리 방법을 사용하면 기존 샘플의 스냅샷과 삭제를 비롯한 후속 업데이트를 받을 수 있습니다. 그러나 투여 이벤트의 동적 특성(사후에 기록, 수정 또는 알림을 위해 저장 가능) 때문에 고정된 객체 쿼리를 사용할 때는 주의해야 합니다. 고정된 객체 쿼리를 구현할 때는 데이터 재처리를 방지하기 위해 반환된 쿼리 앵커를 사용해야 합니다. 투여를 의약품별로 필터링하고 관련 날짜 기간에 속하는 술어로 쿼리를 구성하세요. 백그라운드 스레드에서 효율적으로 실행하려면 Swift async 인터페이스를 사용하는 것이 좋습니다. 이 실시간 데이터 동기화는 사용자가 시간 경과에 따른 의약품 투여를 편리하게 모니터링할 수 있도록 합니다.

    • 22:39 - 새 의약품에 대한 승인
    • 사용자가 건강 앱에 새로운 의약품을 추가하면, 이미 의약품 데이터에 승인을 완료한 앱 중에서 새 의약품에 접근할 수 있는 앱을 선택하라는 메시지가 표시됩니다. 이 원활한 프로세스는 Health 앱 내에서 이루어지며 추가 개발 작업이 필요하지 않습니다. 사용자가 앱을 선택하면 의약품이 저장되고, 앱은 새로 추가된 약물을 표시할 수 있습니다. 의약품 API를 사용하면 포괄적인 의약품 관리 경험을 제공하는 앱을 만들고, RxNorm과 같은 임상 코딩 시스템을 활용하여 향상된 분류 및 데이터 연결을 구현할 수 있습니다.

Developer Footer

  • 비디오
  • WWDC25
  • HealthKit Medications API 만나보기
  • 메뉴 열기 메뉴 닫기
    • iOS
    • iPadOS
    • macOS
    • tvOS
    • visionOS
    • watchOS
    메뉴 열기 메뉴 닫기
    • Swift
    • SwiftUI
    • Swift Playground
    • TestFlight
    • Xcode
    • Xcode Cloud
    • SF Symbols
    메뉴 열기 메뉴 닫기
    • 손쉬운 사용
    • 액세서리
    • 앱 확장 프로그램
    • App Store
    • 오디오 및 비디오(영문)
    • 증강 현실
    • 디자인
    • 배포
    • 교육
    • 서체(영문)
    • 게임
    • 건강 및 피트니스
    • 앱 내 구입
    • 현지화
    • 지도 및 위치
    • 머신 러닝 및 AI
    • 오픈 소스(영문)
    • 보안
    • Safari 및 웹(영문)
    메뉴 열기 메뉴 닫기
    • 문서(영문)
    • 튜토리얼
    • 다운로드(영문)
    • 포럼(영문)
    • 비디오
    메뉴 열기 메뉴 닫기
    • 지원 문서
    • 문의하기
    • 버그 보고
    • 시스템 상태(영문)
    메뉴 열기 메뉴 닫기
    • Apple Developer
    • App Store Connect
    • 인증서, 식별자 및 프로파일(영문)
    • 피드백 지원
    메뉴 열기 메뉴 닫기
    • Apple Developer Program
    • Apple Developer Enterprise Program
    • App Store Small Business Program
    • MFi Program(영문)
    • News Partner Program(영문)
    • Video Partner Program(영문)
    • Security Bounty Program(영문)
    • Security Research Device Program(영문)
    메뉴 열기 메뉴 닫기
    • Apple과의 만남
    • Apple Developer Center
    • App Store 어워드(영문)
    • Apple 디자인 어워드
    • Apple Developer Academy(영문)
    • WWDC
    Apple Developer 앱 받기
    Copyright © 2025 Apple Inc. 모든 권리 보유.
    약관 개인정보 처리방침 계약 및 지침