Jump to content
과거의 기술자료(읽기 전용): https://tech.devgear.co.kr ×
과거의 기술자료(읽기 전용): https://tech.devgear.co.kr

엉망으로 한 칫솔질을 델파이가 기록하는 방법!


Recommended Posts

이안 바커 (Ian Barker)"This Is How Delphi Helps Document Your Terrible Toothbrushing!" 을 번역했습니다. (원문 작성: 2023년 2월, 최종 번역: 2024년 1월)

기업용 대형 애플리케이션 개발 사례 기고 경연 대회(Enterprise Article competition)에 주목할 만한 사례들이 등록되었다. 델파이, C++빌더 등 RAD 스튜디오가 얼마나 다양하고 많은 산업 분야에서 그리고 우리의 일상 생할 곳곳에서 조용히 해나가고 있는 엄청난 일들을 보면서 나는 끝없이 놀라고 있다. 오늘 소개할 엔터프라이즈 개발 사례는 치과 전문가 및 연구자들을 위한 멀티-플랫폼 앱이다. Anouar Hamza Chrif가 크로스 플랫폼으로 개발한 이 앱을 이용하면 치주 차트를 쉽게 만들 수 있다. 이 차트는 치아 상태를 시각화하고 기록하며, 모든 치료를 추적할 수 있다.

긴장을 풀어도 좋다. 전혀 아프지 않을 것이다. 😁

목차


치주 차트 작성(periodontal charting)이란?

치과 분야에서, 특히 치주과 진료 및 연구 분야에서, 치주 차트 작성은 치은 및 치주 건강이나 질병을 평가하고 모니터링하는 중요한 과정이다. 치주 탐침 검사(probing, 치주 질환의 상태를 파악하기 위해 치주낭 깊이를 측정하는 검사)는 병변의 깊이, 조직 손실 여부 등등 각 치아마다 다양한 치은 매개 변수를 측정하는 검사이다. 이 검사를 통해 수치들이 기록되면, 해석을 거쳐 해당 질병이 분류 및 정의된다. 그리고 나면, 치주 차트를 작성하게 된다. (Wolf and al., 2005)

치주 차트 작성을 위한 좋은 앱이 갖추어야 할 조건은?

데스크탑 앱이나 모바일 앱으로 치주 차트 작성을 하면, 진료 중에 즉석에서 데이터를 수집할 수 있고, 환자 기록 정리 및 분석도 잘 수행할 수 있다.

이 주제에 맞는 이상적인 앱은, 또는 적어도 우리 팀이 추구하는 컨셉은 반드시 아래 사항을 충족해야 한다.

  • 사용하기 쉬운 명령어로 구성된 직관적인 UI로 설계되어 있다.
  • 여러 플랫폼(데스크톱 및 모바일 장비)에서 작동한다.
  • 검사 기록(치주 검사 값들)을 저장하고 불러올 수 있다.
  • 치주 차트를 고화질 이미지로 그릴 수 있고 내보낼 수 있다.
  • 전자 건강 기록(EHR) 소프트웨어처럼 환자 검사 기록을 체계화한다.

검사할 때마다, 치주 검사 값을 저장하고 시각화하기 위해 치주 차트를 그리는 일은 매우 힘든 작업이었다. 이 작업을 빠르게 할 수 있는 앱이 없어서 수작업으로 해야 했기 때문이다. 사용 가능한 유일한 솔루션은 기록을 호스팅하고 치주 차트를 작성해주는 유료 서비스들인데, 매월 사용료를 지불해야 한다. 입력 값에 따라 즉석에서 차트를 그리는 웹사이트도 있기는 하지만 저장이나 호스팅 기능은 없다.

그래서, 그 시점에 나는 치주 차트를 쉽게 만들 수 있는 멀티-플랫폼 앱(데스크탑 및 모바일)을 델파이로 개발하는 일을 맡게 되었다.

spacer.png

 

왜 델파이인가?

오브젝트 파스칼은 학습하기 좋은 언어이다. 패러다임이 쉽고 난 2011년부터 사용해 왔다. 델파이 IDE(통합 개발 환경)는 쓸만한 기능과 장점이 많다. 가장 주목할 만한 것은 다음과 같다:

  • 멀티-플랫폼을 목표 한다: 그 기반은 단일 코드 심지어 단일 폼(Form)이다.
  • 인터페이스(interface) 구역과 구현(implementation) 구역 사이에서 신속하게 코드를 이동한다. 그리고 유닛을 빠르게 찾는다.
  • 데이터 계층 컴포넌트들을 따로 모아 놓는 데이터모듈(DataModule)과 코드를 모아 놓은 공통 컨테이너를 애플리케이션 폼(from)에서 공유한다.
  • 사용하기 쉬운 그래픽 프레임워크가 내장되어 있다.

위와 같은 이유로, 당연히 델파이를 선택하여 이 프로젝트를 진행했다.

치주 차트 앱에 담긴 기능들은 무엇이 있는가?

이 기고를 작성하는 현재, 우리 치주 차트 앱은 윈도우와 안드로이드에서 실행된다(델파이 FMX 프레임워크 덕분이다). 장비 안에서 로컬로 동작할 수도 있고 여러 사용자들이 연결된 네트워크 안에서 동작할 수도 있다. 실제로, 데이터 처리 및 차트 작성 코드들은 완전히 이 클라이언트 앱 안에 들어있다. 네트워크 서버는 PHP 애플리케이션이며, 이 서버는 MySQL 데이터베이스에 연결하여 사용자 데이터와 환자 기록을 저장한다.

클라이언트 앱이 수행하는 작업들은 다음과 같다:

  • 사용자를 인증한다 (해당 연구 프로젝트에 참여하는 치과의사 등이 네트워크에서 앱을 사용하는 경우).
  • 입력 값들을 파일에 저장 또는 서버의 데이터베이스에 직접 저장한다.
  • 저장된 값들을 로드한다. - (동일한 장비 또는 다른 장비에서 생성되어) 기존 파일에 또는 서버의 데이터베이스에 저장된 값들 가져온다.
  • 치아 상태를 표현한다(자연치, 발치, 임플란트 치아 등).
  • 모든 치아에 대한 추가 매개변수(치아 이동성, 분절 및 근관 간 병변)와 모든 치주 탐침 검사 부위에 대한 추가 매개변수(조직 손실 또는 융기, 잇몸 출혈, 치아 이동성, 박테리아 플라크 등)를 표시한다.
  • 입력 값들을 계산하여 치주 차트를 그린다.
  • 그려진 차트를 이미지 파일로 내보낸다.
  • 동일한 환자의 여러 검사를 나란히 비교한다. 질병의 진행을 평가할 수 있다.
  • 환자 검사 기록을 라이브러리에 정리하고 다양한 필터링 옵션을 사용한다 (네트워크 없이 로컬에서 앱을 사용하는 경우).
  • 사용자 장비들 간 기록을 동기화 한다 (로컬과 네트워크 두 가지 사용 모드 모두에서 반영됨).
  • UI 크기를 조정하여 가로 화면 사용과 세로 화면 사용에 각각 맞춘다.

spacer.png

 

치주 차트 작성 결과는 어떻게 표시되는가?

아래의 그림은 앱에서 치주 탐침 검사 데이터의 결과를 보여주는 화면이다.

spacer.png

어떤 컴포넌트를 사용하여 개발하였는가?

델파이 FMX 프레임워크를 바탕으로 프로젝트를 진행했으며, 아래 컴포넌트들을 사용했다:

  • FireDAC: 입력값들을 데이터셋(TFDMemTable)로 저장 및 작업. 또한 기록을 FireDAC JSON 스토리지 형식으로 저장하고 로드(load)하기 위해 사용.
  • FMX 오브젝트들과 그래픽 컴포넌트들: 치주 차트용 빈 템플릿에 경로를 그리기 위해 사용.
  • FMX 플랫폼 서비스들: 멀티 플랫폼 구현하기 위해 사용 (화면 방향, 대화 상자, 클립보드, 가상 키보드 등등).
  • Skia4Delphi : 델파이 앱에서 가장 최신이고 가장 권장되는 그래픽 백-엔드. 고성능 렌더링을 통해 고품질 UI를 구현하는 데 사용. (옮긴이: 12.0 아테네부터 RAD 스튜디오에 내장된 Skia4Delphi에 대한 DocWiki 보기)
  • Ethea IconFontsImageList: 현대식이고 놀랍도록 훌륭한 UI를 위해서는 이 컴포넌트가 필수다. 이 컴포넌트는 사용자 정의 이미지리스트(ImageList) 컴포넌트를 구현한다. 이 리스트에서는 글꼴의 로고와 아이콘을 사용하며, 각 아이콘마다 색상과 크기를 선택하여 지정할 수 있다.
  • DzHTMLText : Digao Dalpiaz가 개발한 FMX 컴포넌트다. 서식을 반영한 텍스트를 표시하는데, 거의 동일한 HTML 구문을 사용할 수 있다.
  • REST 클라이언트 라이브러리: 네트워크에서 앱을 사용할 때 서버와 데이터를 교환하기 위해 사용 (사용자 인증, 서버 있는 데이터를 다운로드 및 업데이트, 서버에 있는 환자 기록 가져오기, 사용자 기기 간의 기록 동기화 등등).

이 앱의 데이터는 무엇을 표현하는가?

치주 차트는 치과의사가 치주 탐침 검진 시 수집한 값을 바탕으로, 현재 모든 치아의 치주 건강 상태, 치주 질환의 정도, 환자 구강에서 가장 심하게 감염된 부위의 위치를 나타낸다.

spacer.png

코드는 어떻게 작동하는가?

텅 빈 차트 (치주 차트 템플릿)들이 앱 바이너리 안에서 컴파일 된다. 그리고 각 치주 탐침 검사 부위는 픽셀 좌표로 표시되어 차트를 생성할 때 사용된다. 차트들은 TPath 오브젝트들이다.

치과 의사가 수집한 치주 탐침 검사 값들은 새 검사 기록으로 앱에 입력된다. 그 다음에는, 앱의 로직이 해당 값들을 계산하여 탐침 좌표로 변환한다. 이 좌표들은 해당 빈 참조 좌표와 합쳐져서 경로데이터 문자열로 기록된다. 이 문자열들은 여러 가지 TPathData 오브젝트들을 생성하는데 사용된다. 상악과 하악, 협측과 설측 양쪽 모두를 위해 TPathData 오브젝트들인데, 탐침 깊이, 조직 손실 등등 지정된 파라미터들이 반영된다. 

이런 TPathData 오브젝트들은 빈 템플릿 위에 그려진다. 해당 캔버스 오브젝트 위에 그리는 작업은 드로잉 세션들이 담당한다 (TCanvas.FillPath 함수를 사용하여 영역을 채우고, TCanvas.DrawPath 함수를 사용하여 자유롭게 선을 그린다).

그 결과 사용자들은 최종 업데이트된 비트맵(결과로 발생한 치주 차트)을 보게 된다. 사용자는 차트를 이미지 파일로 내보낼 수도 있다.

마지막으로, 치과의사가 이 검사를 검증할 수 있도록, 치주 탐침 검사 값들을 외부 파일이나 서버 데이터베이스에 기록으로 저장한다.

델파이가 탑재된 RAD 스튜디오로 앞으로 어떤 기업용 앱을 구축할 계획인가?

spacer.png단기 계획으로는, 우리는 이 프로젝트를 계속 개발하면서 더 많은 기능들을 추가할 계획이다. 또한 새 영역으로 확장하려고 한다. 예를 들면, 이 앱을 다른 전자 건강 기록(EHR) 그리고 치과 진료 관리 소프트웨어들과 통합하려고 한다. 또한 연구 네트워크를 강화할 수 있도록 서버 기능을 향상하여 더 많은 치과 의사와 다른 기관들을 섭외하려고도 한다.

참고 자료

Wolf HF, Rateitschak EM, Rateitschak KH, Hassell TM. Color Atlas of Dental Medicine: Periodontology, 2005. Thieme.

 

이 글은 기업용 대형 애플리케이션에 대한 기고 경연 대회(Enterprise Article challenge)에 제출된 것이다. 만약 여러분도 델파이, C++빌더 또는 RAD 스튜디오를 사용하여 만든 훌륭한 엔터프라이즈 제품과 프로젝트에 대해 이야기하고 싶은 성공 사례가 있다면 연락을 주기 바란다.

한국 개발자는 데브기어의 델파이 사례 기고 행사에 참여하세요!

이 댓글 링크
다른 사이트에 공유하기

  • 1 month later...

이 토의에 참여하세요

지금 바로 의견을 남길 수 있습니다. 그리고 나서 가입해도 됩니다. 이미 회원이라면, 지금 로그인하고 본인 계정으로 의견을 남기세요.

Guest
이 토픽(기고/질문)에 답하기

×   서식있는 텍스트로 붙여넣기.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   이전에 작성한 콘텐츠가 복원되었습니다..   편집창 비우기

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

중요한 정보

이용약관 개인정보보호정책 이용규칙 이 사이트가 더 잘 작동하기 위해 방문자의 컴퓨터에 쿠키가 배치됩니다. 쿠키 설정 변경에서 원하는 설정을 할 수 있습니다. 변경하지 않으면 쿠키를 허용하는 것으로 이해합니다.