블로그

DAML 사용 사례 : 의료 시스템에서 스마트 계약을 구현하고 의료 오류를 방지하는 방법

socl 2020. 9. 21. 15:40

처음으로 이 4개의 편지를 들은 지 거의 7개월이 지났는데 그것이 개발자로서의 일상생활에 어떤 영향을 미칠지 전혀 몰랐습니다.

DAML은 오픈 소스 스마트 계약 프로그래밍 언어입니다. 정의를 조사할 때 DAML 자체와 매우 흡사하고 정직한 정의를 찾았습니다. "대단히 단순한 아키텍처 덕분에 팀은 상용구가 아닌 비즈니스 로직에 집중할 수 있어 고객에게 보다 차별화된 기능을 더 빠르게 제공할 수 있습니다."

실제로 DAML로 개발할 때 애플리케이션이 하지 말아야 할 일을 하지 않도록 하는 대신 애플리케이션이 해야 할 일에 초점을 쉽게 유지할 수 있습니다.

현재 대부분의 DAML 애플리케이션은 금융 부문을 목표로 하지만, 이에 대한 좋은 예가 의료 시스템에도 적용될 수 있다고 생각합니다.

DAML모델이 중앙 시스템으로 실행되고 직원, 환자, 진단 및 처방약을 관리하는 병원을 상상해 봅시다. 직원부터 시작하여 역할 계약을 통해 이들을 온 보딩(Onboarding) 해야 합니다.

여기에 기관 이름, 의사 이름 및 NPI(National Provider Identifier)로 채워질 DoctorRole 템플릿이 있습니다. 이제 우리가 마법을 보기 시작할 때입니다.
이 템플릿에서 DoctorRole 계약의 핵심은 의사 NPI 및 기관(이름 또는 일부 고유 식별)과의 튜플이 될 것이라고 말했습니다. 그렇게 함으로써 DAML이 키 고유성을 적용하기 때문에 이 기관에서 동일한 NPI로 다른 DoctorRole 인스턴스를 생성할 수 없도록 합니다. 따라서 다른 사용자는 그에게 의사라는 직함을 부여하는 직원 고유 식별자 중 하나를 사용하여 온 보딩 할 수 없습니다.

다음으로 넘어 가면 DoctorRole 템플릿은 의사 (템플릿 내의 컨트롤러)에게 약물 (CreateMeds)을 만들 수있는 권한을 제공하여 약물 유형의 계약을 반환합니다. 약물 템플릿은 다음과 같습니다.

이 템플릿에는 다시 기관(institution), 의사(doctor)(이 약물을 요청한 의사)가 있고 약물 이름(name), kg 당 최대 복용량(maxDosagekg) (환자 체중) 및 알레르겐(alergenes)(알레르기 반응을 일으키는 항원)이 있습니다. 서명자들이 이제 어떻게 기관과 의사가되었는지 주목하십시오. 즉, 의료 계약은 기관(DoctorRole을 통해 제공됨)과 의사(CreateMeds 선택을 실행하여 제공됨) 모두의 동의를 얻어야 생성 할 수 있으며 명확한 워크 플로를 설정합니다.

이제 간호사가 데모를 위해 지나치게 단순화 된 입원 시트로 PatientRole 계약을 생성하는 환자를 온 보딩 할 수있는 간호사 역할 템플릿도 만들어 보겠습니다.

그리고 입원시 간호사에 의해 저장된 데이터가있는 환자 역할 템플릿.

그리고 이제 처방 템플릿은 환자 입원 시트 PatientRole을 통해 만들 수 있습니다.

여기서 우리는 배정된 의사가 진단, 복용할 약과 복용량, 그리고 치료가 시작될 때까지 입력한것을 볼 수 있습니다. 간호사는 이제 통제자이며 GiveMedication 선택(choice)을 행사(exercise)할 수 있습니다.

선택에 세심한 주의를 기울이면 현재 시간과 날짜를 가져오고 각각의 키로 약물 계약과 환자 역할 계약도 가져오는 것을 볼 수 있습니다. 프로세스를 완료하기 전에 체중을 기준으로 특정 환자에 대한 최대 안전 용량을 계산합니다.

마지막으로, 처방전이 여전히 유효하고 복용량이 계산된 최대치 미만이라고 주장하며 기준이 충족되면 오류가 반환되지 않습니다.

그게 좀 분명해 보이는 건 알지만, 응급실 검증이 매일 서둘러서 이런 걸 하면 생명을 구할 수 있을 있습니다(daily rush of an Emergency Room validations). 또한 데이터의 무결성을 잃지 않으면서도 데이터 흐름의 속도는 전 세계 의료 시스템의 최전선에 있는 영웅에게 큰 도움이 될 수 있습니다.

이쯤에서 멈춰서 이 일을 너무 길게 만들지 않도록 하겠지만, 우리가 여기서는 표면을 거의 긁어내지 못했다는 것을 명심하십시오. 약물 템플릿으로 돌아가보면 알레르겐 리스트가 있다는것을 알 수 있습니다. 환자 알레르기도 그의 역할에 추가하면 어떨까요? GiveMedicine 선택(choice)에 대한 유효성 검사를 어떻게 구현 하시겠습니까(How would you implement that validation)?

이쯤에서 멈춰서 이 일을 너무 길게 만들지 않도록 하겠지만, 우리가 여기 표면을 거의 긁어내지 못했다는 것을 명심하세요. 약물 템플릿으로 돌아가보면 알러지겐 리스트가 있다는 것을 알 수 있을 겁니다. 환자들도 그의 역할에 알레르기를 더하면 어떨까? Give Medicine 선택에 대한 검증을 어떻게 구현하시겠습니까?

원문 : A DAML use case: How smart contracts could be implemented in the healthcare system and help prevent medical errors.
https://www.linkedin.com/pulse/daml-use-case-how-smart-contracts-could-implemented-health-mapa/