Skip to content

Repository files navigation

OralPilot · Implant Planning Studio

치과 임플란트 수술계획의 흐름을 경험하는 비임상 연구용 웹 프로토타입입니다. 환자 치료, 진단, 수술 또는 가이드 제작에 사용할 수 없습니다.

실행

npm install
npm run dev
npm run build

Vinext / React / TypeScript / Three.js 기반입니다. app/studio.tsx가 공유 계획 상태를 관리하고, app/scene.tsx가 3D 해부학과 가상 임플란트를 표시합니다.

구현한 기능

  • 공개 CBCT 분할에서 유래한 70개 구조: 32개 치아, 32개 치수강, 상악골, 하악골, 좌우 하치조관, 상악동 저부.
  • 구조별 표시/숨김, 치관·치근·골 투명도, 치아 선택 강조, 회전/확대 및 10개 시점.
  • STL/OBJ/PLY 표면 가져오기. 파일 좌표를 유지하여 조립한 후 표시 중심만 이동하며 원본 단위는 사용자 확인이 필요합니다.
  • 지원 DICOM 단일 프레임 시리즈, NIfTI의 실제 픽셀 읽기, 격자 I/J/K 단면 표시, 윈도우 조절.
  • CT 임계값에서 Marching Cubes 표면 추출. 최대 112³ 작업 격자로 다운샘플링하므로 작은 구조는 손실될 수 있습니다.
  • 치아별 6점 PD/퇴축/BOP, 동요도, 이개부 병변, CAL 표시. CSV 가져오기 및 내보내기.
  • 여러 가상 식립계획의 직경, 길이, 치아축 대비 두 경사각, 근원심/협설 이동, 깊이, 수동 토크 메모.
  • 하치조관/상악동 표면 정점에서 유한 식립축까지의 거리에서 반경을 뺀 근사 이격. 정점 사이의 삼각형 면, 정확한 충돌, 오차, 임상 안전성은 평가하지 않습니다.
  • 파라미터에 따라 변하는 통과공·슬리브·지지판 개념 형상, 검토용 STL.
  • 다중 식립의 1–3개 회차 비교안 생성, 장단점·검토 조건과 단계별 치료/회복 애니메이션.
  • 계획 JSON 저장 및 검증 후 복원, 전체 치주 차트를 포함한 인쇄 가능 HTML 계획서 다운로드. HTML을 열어 인쇄에서 PDF로 저장할 수 있습니다.

입력 및 상태

입력 파일은 브라우저에서만 처리하며 서버에 업로드하지 않습니다. 편집 상태는 세션 내 메모리입니다. 유지하려면 계획 JSON을 다운로드하고 다음 세션에서 다시 여세요. 계획 파일에는 업로드한 의료영상 자체가 포함되지 않습니다.

DICOM 지원: Implicit/Explicit VR Little Endian, 단일 프레임 흑백 8/16 bit, 유효한 PixelSpacing/ImagePositionPatient/ImageOrientationPatient가 있는 동일 시리즈. 위치로 정렬하고 중복/불규칙 간격/혼합 시리즈를 거부합니다. 압축·enhanced multiframe·gantry tilt는 지원하지 않습니다. NIfTI는 mm 단위 단일 3D 정수/부동소수 볼륨을 지원합니다. 최대 8천만 voxel, 입력 파일 합계 180 MB.

CSV 헤더: tooth,site,pd,recession,bop,mobility,furcation. 각 치아에 MB/B/DB/ML/L/DL의 6개 행이 필요합니다. PD 0–15 mm, GM(퇴축) −15–15 mm, BOP 0/1, 동요/이개부 0–3. 음수 GM도 보존합니다. 미포함 치아는 미입력으로 처리합니다.

구현하지 않은 범위

AI 자동 분할, 환자별 CT–구강스캔 정합, EMR 자동 연동, 혀/혈관/잇몸 자동 복원, 신경 자체 식별, 영상 기반 골질/토크 확정, 골유착 예측, 제작 가능한 환자 맞춤 가이드, 수술 프로토콜 및 임상 검증은 없습니다. 식립 계획에서는 계획 치아를 반투명하게 표시하고, 가이드 검토에서는 가상 발치 형상을 표시합니다. 3D 영상 탐색에서는 검사 기록의 치아 상태를 적용합니다. 시뮬레이션은 발치 가정 단계에 따라 표시합니다. 이는 실제 발치 또는 식립을 추천하는 것이 아닙니다.

가져온 영상에서 생성한 표면에는 데모의 치주값/신경관/임플란트를 정합 없이 겹치지 않습니다. 모든 기존 계획과 계획서는 ToothFairy 해부학 예제에 속합니다.

데이터 출처

세 데이터는 서로 다른 대상이고 정합되지 않았습니다. 치주차트는 메시의 자연치 존재 상태로 초기화하며 PD·GM 등 검사값은 미입력입니다. 예전 계획 파일에 저장된 합성 검사값은 사용자 기록과 함께 그대로 복원됩니다. ToothFairy 원본의 CC BY-NC-SA와 메시 제공자의 BY-SA 표기에 차이가 있어 원본의 비상업·동일조건 제한을 적용합니다. 상세 권한·처리 내용은 public/anatomy/ASSET-NOTES.md를 확인하세요. 파생 해부학 데이터는 원본 조건을 유지해야 하며 앱 코드와 혼동해서는 안 됩니다.

검증

npm test
npx tsc --noEmit
npm run build

치주 CSV와 계획 검증, 실제 메시 오프셋과 근사 거리 반응, DICOM 순서/spacing/rescale 및 잘못된 입력 거부, NIfTI 읽기, OBJ 읽기, 강도 기반 표면 추출을 검증합니다. GUI/WebGL 브라우저 검증은 이 세션에서 사용할 수 있는 브라우저가 없어 수행하지 못했습니다.

WebMCP: get_research_plan, configure_research_implant, navigate_planning_step을 지원 브라우저에서만 등록합니다. 같은 React 상태 및 입력 검증을 사용합니다. 지원되는 WebMCP 실행 컨텍스트를 사용할 수 없어 등록·실행 계약은 실환경에서 검증하지 못했습니다.

해부학 기준 식립 예제와 표시 보정

기본 #46, 전환 #36 / #24 예제는 원본 치아의 PCA 축에서 치관 반대 방향으로 식립합니다. 치경부는 치관측 32% 높이(5–8 mm 범위)와 단면 정점으로 추정했습니다. 임상 치경부 주석이나 치조골능 검출 결과가 아닙니다. 원래 치관의 반투명 표시와 식립부 확대 시점을 제공합니다. 상악 #26의 10 mm 기본 예제는 상악동 중첩으로 제외했습니다. 예제는 수술 추천이 아니며 골 외벽/인접치 정확 충돌 및 보철 적합 검증은 없습니다.

계획 형식은 oralpilot-plan-v2입니다. 각도 0°는 해당 치아의 원본 축을 뜻하며 x/z는 치아 국소 좌표의 근원심/협설 이동입니다. v1 월드 좌표 계획은 명시적으로 거부하여 다른 위치로 해석되는 것을 방지합니다.

치아 표면은 표시 복사본에 Taubin 평활화를 적용하고 원본 정점 대비 이동을 0.18 mm로 제한합니다. 정량 계산의 원본 바이너리는 변경하지 않았습니다. 거친 분할에 없는 미세 해부학을 복구하는 기능은 아닙니다.

public/anatomy/neurovascular-paths.json은 좌우 하치조관 메시를 0.35 mm로 복셀화한 뒤 골격의 최장 연결 경로를 추출한 파생 통로입니다. 중심선 180 / 173개 점, 약 86.6 / 83.8 mm이며 좌표는 원본 메시와 동일합니다. 신경·동맥·정맥을 각각 분할한 데이터가 아닙니다. 튜브 반경 0.45 mm는 표시용입니다. 투시 모드는 가림을 해제하므로 깊이 관계 확인에는 끄세요. 이 파생 데이터도 원본 ToothFairy 라이선스 제한을 유지합니다.

생성: scripts/derive-anatomy.py (numpy / scipy / trimesh / scikit-image). 단면 확인: scripts/check-implant-geometry.py, validation/implant-source-sections.png. 기능·기하 테스트에 상·하악 방향, 국소 이동, 평활화 변위와 원본 보존, 중심선 원본 체크섬/연속성을 포함합니다.

영상 근거: CT/MR 융합 연구, 하치조관 MRI 가시성 연구. 일반 CBCT의 골성 관으로 개별 신경·혈관의 조직 경계를 확정할 수 없으므로 공통 통로로 표시합니다.

추가 공개 원본 예제는 상위 작업공간의 datasets/public-examples/README.mdcatalog.json에 기록했습니다. 대용량 원본은 사이트에 포함하지 않고 로컬에 보존합니다.

검증 한계: 전체 npm run lint는 기존 UI 스캐폴드와 일부 기존 타입/React 규칙 경고로 통과하지 않습니다. 타입 검사, 29개 기능·기하 테스트, 프로덕션 빌드 및 로컬 HTTP 응답 확인은 통과했습니다.

음성 치주 차트와 외관 제어

상위 voicedental_chart/src의 도메인, 차트/치근 SVG, reducer, 음성 입력 파이프라인을 lib/voice-perio/로 가져와 통합했습니다. 원본 폴더와 SQLite 데이터는 변경하지 않았습니다. 원본 앱의 별도 서버, 환자 카드, 저장소는 복사하지 않았으며 OralPilot의 케이스와 계획 JSON을 사용합니다.

치주 화면은 기존 내비게이션·중앙 작업면·오른쪽 검사 패널과 Geist 글꼴을 유지합니다. 차트 색상은 밝은 검사 용지, 적색 GM/BOP, 청색 CAL로 분리했습니다. 전악 6점 PD/GM/CAL, 부위별 BOP/치태/치석/배농/GI/MGJ/이개부, 치아 상태·메모·동요도, 실행 취소/다시 실행을 지원합니다. FDI↔Universal은 템플릿 매핑을 사용합니다. 미입력 PD/GM을 0으로 바꿔 CAL을 계산하지 않습니다. 출혈 등 표식은 템플릿의 표시됨/표시되지 않음 방식이며 검사 미실시 여부는 별도 상태로 구분하지 않습니다.

계획 JSON의 선택적 perioChart에 전체 검사값을 검증하여 저장·복원하고, 전체 CSV 및 계획서에도 표시합니다. 기존 7열 CSV 가져오기는 유지합니다. perio는 호환용 완전 입력 치아의 부분집합이며 미완성·결손 치아는 전체 perioChart에서 유지합니다. 기존 치아별 이개부 점수는 legacyFurcation으로 보존하며 새 부위별 점수를 임의로 생성하지 않습니다. 원본 템플릿의 추가 필드는 기존 CSV에 없으면 미입력입니다. 기존 파일의 임상 주석이 전체 검사 완료를 뜻하지는 않습니다.

음성과 문자 명령은 같은 파서를 사용합니다. 예: 46번, 출혈, 5 4 6, 하악 설측, 퇴축 -1 0 1, 출혈 없음. 세 숫자는 화면의 왼쪽→오른쪽 순서입니다. 영어 명령도 지원합니다. 기기 내 인식을 기본으로 선택하고, 미지원 시 원격 인식으로 조용히 전환하지 않습니다. 브라우저 서비스는 사용자가 UI에서 선택할 수 있으며 음성 전송 가능성을 표시합니다. 마이크는 명시적 버튼 클릭에만 시작하고 차트를 떠나면 중지합니다. 낮은 신뢰도의 결과는 확인 대기이며 대기 중 차트/커서가 바뀌면 반영을 거부합니다. 브라우저와 언어 모델 지원에 따라 실제 마이크 사용이 제한됩니다. 브라우저 음성 처리 방식.

치아는 기존 표시 평활화 뒤 삼각형을 4배 세분화하며 새 모서리 정점의 이동을 0.1 mm로 제한합니다. 치관/치근의 색·광택 차이는 시각화 재질로, CT에서 측정한 색상이 아닙니다. 원본 해부학 바이너리·식립 축·거리 계산은 유지됩니다. 치관/치근/턱뼈 투명도는 뷰어의 작은 조절 메뉴와 해부학 패널에서 조절합니다.

골 불투명도 아래의 잇몸은 원본 치아의 추정 치경부와 턱뼈 표면 폭에서 만든 참고 모형입니다. 협측·설측 벽을 치근 방향으로 확장하고 치간 굴곡, 닫힌 뒤쪽 단면, 이어진 둘레를 구성합니다. 내부 표면보다 뒤에 투명 잇몸을 그려 정면 회전 시 전체 메시의 투명 정렬이 뒤바뀌는 현상을 줄입니다. 입술과 얼굴은 아래 설명한 별도 대상의 Infinite 실물 스캔으로 교체했습니다. 환자별 연조직 분할/정합이 아니며 치은연·입술 두께·얼굴 치수, 거리 계산, 가이드 STL에 사용하지 않습니다. 각각 표시 토글과 공통 연조직 투명도가 있습니다.

검증: 29개 기능·기하 테스트에 한국어/영어 명령, 치아 번호·6점 매핑, 음수 GM, 출혈 없음, 추가 필드와 미입력 보존, 메시 세분화 범위 및 참고 모형 분리를 포함합니다. 실제 마이크와 WebGL 화면 검증은 사용 가능한 브라우저가 없어 수행하지 못했습니다.

치아 선택, 시점과 치료 회차 비교

3D 영상 탐색의 치아 버튼은 개별 선택을 토글하여 치아를 청색으로 강조합니다. 뷰는 3D 전체, 폐구 정면, 우측면, 좌측면, 상악 교합, 하악 교합, 양악 펼침, 선택부 확대, 식립축 방향, 안면 외관의 10개입니다. 3D View는 상·하악을 함께 켜고 원본 교합 위치를 사선에서 보여줍니다. 정면/폐구와 선택부 확대 메뉴를 통합하고 중복 교합면 및 후면을 제거했습니다. 펼침은 표시 객체만 회전·이동하며 원본 해부학 좌표와 계획 계산은 바꾸지 않습니다.

시뮬레이션의 생성 버튼은 전체 식립계획·치주값·추가 치료 가정을 읽어 구역별 분할, 악별 분할, 단일 식립 회차의 중복되지 않는 최대 3개 안을 만듭니다. 가까운 부위 순서는 기하학적 이동량을 줄이기 위한 것으로 임상 최적화가 아닙니다. 우측 안을 선택하면 장단점·확인 조건과 재생 화면이 준비됩니다. 입력이 바뀌면 이전 결과는 무효화하고 재생을 중지합니다.

각 임플란트를 순차적으로 드릴링·식립하며, 발치/근관치료 가정, 봉합, 회복 관찰, 재평가 단계를 포함합니다. 적색은 처치 영역, 황색은 회복 관찰, 청색은 재평가 단계의 개념 표시입니다. 실제 출혈량·골유착·치유 완료를 예측하지 않습니다. 근관치료 파일과 발치 이동도 개념 동작이며 실제 근관 길이·수술 접근을 계산하지 않습니다. 영상상 존재하는 계획 부위 치아의 발치는 시나리오 가정으로 명시하고, 같은 부위의 근관치료+식립 충돌은 거부합니다.

Full arch를 반드시 여러 날로 제한하지 않습니다. ITI 전악 부하 합의문에 따라 선택된 증례의 단일 회차 가능성을 비교하되, 전신 상태·보철/교합·초기 고정·골 증대 여부 등이 없어 어느 안도 안전/최적이라고 확정하지 않습니다. EFP 지침을 참고할 수 있도록 연결했습니다. 날짜·회복 기간·수술 중 토크와 부하 허용 여부는 자동 확정하지 않습니다.

회차별 식립 누락/중복, 발치 후 회복 순서, 미래 단계 기구 미표시, 후속 처치의 상처 색상 재전환, 입력 변경 무효화와 펼침 시 원본 좌표 보존을 기능 테스트로 확인합니다. 실제 마이크와 브라우저 WebGL 시각 검증은 미실시입니다.

펼침 뷰에서 좌우 하치조관 표면과 파생 중심선은 동일한 하악 변환을 사용합니다. 상악동 표면은 상악에 소속됩니다. 관 표면 2개와 내부 중심선 2개는 같은 좌우 구조의 서로 다른 표시이며 추가 신경관을 뜻하지 않습니다. 원본 정점이나 거리 계산은 변경하지 않았습니다.

3D 화면 바로 아래의 식립 위치 선택과 임플란트 추가 버튼으로 모든 치아 번호에 계획을 수동 추가할 수 있습니다. 추가 즉시 현재 시점을 유지하며 식립 계획 패널에서 직경·길이·위치·각도를 편집합니다. 같은 치아에 이미 계획이 있으면 기존 계획을 선택하여 중복을 방지합니다. 가져온 미정합 표면에는 사용할 수 없습니다.

뷰 메뉴는 가로·세로 스크롤 없이 폭에 맞춰 줄바꿈합니다. 정면 · 폐구 뷰는 상·하악 치아를 함께 켜고 원본 좌표의 정면 교합 관계를 표시합니다. 턱을 임의로 이동하거나 실제 교합 접촉을 계산하는 기능은 아닙니다.

실물 얼굴 스캔

Lee Perry-Smith / Infinite-Realities의 Infinite 스캔을 사용합니다. CC BY 3.0 라이선스. 형식 변환 기여: Morgan McGuire, Guedis Cardenas, Keijiro Takahashi, three.js. 배포 원본과 정확한 커밋, 파일별 SHA-256은 public/anatomy/face-scan/source.json, 원래 저작권 표시는 LICENSE.txt에 보존합니다. 신원 추정 데이터가 아닌 제작자가 공개한 실물 스캔 자산입니다.

4K 피부 색상·변위 맵, 1K 표면 법선·반사 맵을 포함합니다. scripts/prepare-face-scan.py는 어깨 부분을 자르고 UV를 보존한 채 두 차례 제한된 접평면 세분화를 적용하여 129,616정점/256,304삼각형의 표시 메시를 만듭니다. 피부 색, 요철, 반사와 광택 재질 및 실내 조명 반사를 사용합니다. 입술 단독 보기는 동일한 스캔의 대략적인 영역 잘라내기이며 임상 분할이 아닙니다. 환자의 조직 두께나 완전한 연조직 내부 해부학을 재건하지 않습니다.

안면 외관 버튼을 누를 때만 큰 자산을 불러오며 실패/재시도와 해제 시 리소스 처리를 제공합니다. 전체 얼굴은 입술을 포함하므로 입술 단독 메시를 동시에 겹쳐 그리지 않습니다. 펼침/교합면에서는 얼굴 마스크를 숨깁니다. ToothFairy CT와 다른 사람이며 치아 기준점에 대략 배치한 시각적 참고입니다. 이 배치는 등록·교합 검증·환자별 안면 예측 결과가 아닙니다. 기본적으로 꺼져 있고, ‘안면 외관’에서 켜면 불투명 피부를 보며 슬라이더로 투명도를 조절할 수 있습니다.

검사 기록과 3D의 공유 상태

초기 치아 상태는 실제 모델의 치아 목록을 사용합니다. PD/GM/BOP/동요도 등 실제 검사 결과를 영상에서 만들어내지 않습니다. 전체 perioChart를 3D 영상 탐색과 임플란트 계획이 직접 구독하므로, 호환용 CSV의 완전 입력 치아 부분집합을 기다리지 않고 부분 입력과 실행 취소도 반영됩니다.

결손은 치아·치수강 숨김, 기존 임플란트 기록은 위치 기호, 보철 치관은 치관 영역의 푸른 표시로 표현합니다. 기존 임플란트의 실제 규격은 기록에 없어 확정하지 않습니다. PD/GM과 BOP 등의 표식은 추정 치경부 주변의 점/선으로 보이며 실제 치주낭이나 잇몸 경계를 재건한 결과가 아닙니다. 전체 값·추가 기록은 선택 치아 요약에서 확인합니다. CT 골 형상은 변경하지 않습니다.

식립 계획에서 선택한 자연치는 치관·치근의 불투명도를 최대 25%로 낮춰 축을 관찰할 수 있게 합니다. 다른 계획 치아는 최대 40%로 표시합니다. 원래 치아 기준축(청색 점선), 실제 계획축(황색), 진입 위치 십자와 축 사이 각도 원호가 위치·깊이·두 경사각 수정에 따라 갱신됩니다. 식립축 방향 뷰는 변경된 축을 따라 카메라를 정렬합니다. 계획 추가는 실제 발치·치료 완료 기록을 바꾸지 않습니다.

발치 위치 선택과 일괄 계획

검사 상태가 결손인 치아는 원본의 추정 치경부 아래 치근만 흐릿한 선택용 참고 표시로 표시합니다. 실제 잔존 치근이 아니며, 원본 치아 형상이 없는 결손 위치의 뿌리를 임의로 생성하지 않습니다. 참고 표시를 클릭하면 해당 FDI 위치가 선택되고 임플란트 계획에서 기준축과 식립축 가이드가 표시됩니다. 치관 쪽의 빈 공간은 클릭 대상에서 제외하며 펼침/상하악 표시 여부를 따릅니다.

임플란트 버튼은 추가/제거 토글입니다. 여러 치아를 선택하면 계획이 없는 위치에만 일괄 추가하고, 모두 계획된 선택을 다시 누르면 선택 위치의 계획을 제거합니다. 혼합 선택에서 기존 계획의 조정값은 보존합니다. 선택 개수와 번호를 표시하고 선택 해제 버튼을 제공합니다. 번호 드롭다운과 기존 계획 목록은 단일 선택으로 전환합니다.

치아/발치 위치 선택, 다중 선택, 계획 추가·제거와 편집은 카메라 회전·확대·이동을 유지합니다. 선택부 확대 또는 식립축 방향 버튼을 직접 누르면 그 시점의 선택 위치/각도에 맞춥니다. 이미 활성화된 뷰 버튼을 다시 눌러도 재정렬할 수 있습니다.

보철 시퀀스와 가이드 형상

수술 시뮬레이션은 식립·회복·재평가 이후 지대주 연결, 연조직 관찰, 인상/스캔 적합 검토, 인공 치관 장착, 교합 검토 단계를 표시합니다. 지대주와 치관은 실제 계획의 위치와 경사축을 따라 장착되며, 되감으면 미래 단계의 부품이 사라집니다. 치관은 공개 예제의 해당 치아 치관을 참고한 형상입니다. 환자 맞춤 보철 CAD나 검증된 교합 접촉이 아니며, 전악 연결 보철물·프레임·폰틱 설계도 아닙니다. 임상 진행 조건과 실제 날짜는 확정하지 않습니다. ADI 보철 단계 참고.

가이드 형상 검토는 인접 자연치의 치관을 감싸는 부분 치열 쉘, 둥글고 굴곡진 연조직 쪽 가장자리, 열린 드릴 구멍과 테두리가 있는 금속 슬리브를 표시합니다. 사용자 제공 ../doc_ref/surgical_guide 제품 이미지 7장을 형태 참고로 사용했으며 제품 이미지를 웹에 재배포하지 않습니다. 가까운 식립 부위는 동일 부분 가이드로 묶고 상·하악은 분리합니다. 원본 치아 좌표는 바꾸지 않습니다.

임플란트별 Depth max는 계획 플랫폼부터 식립체 끝까지의 깊이입니다. 슬리브 상단부터 계획 끝까지의 거리도 별도로 표시합니다. 예시 슬리브 높이 5 mm와 벽 두께 1.2 mm는 제조사 호환 규격이 아닙니다. 실제 드릴 끝·핸들·키·스톱 오프셋이 없어 임상 드릴의 최대 깊이를 확정할 수 없습니다. Straumann 공식 기구 정보. 쉘과 연결부는 표시용 합성 부품이며 Boolean 결합, 언더컷, 삽입 경로, 점막 적합, 출력 공차를 검증하지 않았습니다. STL은 CONCEPT-ONLY 검토용입니다.

번호·선택과 뷰 설정

표시 번호의 기본값은 Universal입니다. 치주 검사에서 Universal/FDI/Palmer를 바꾸면 3D 영상 탐색, 임플란트 계획, 시뮬레이션과 보고서에 같은 설정을 적용합니다. 내부 계획의 치아 식별자는 FDI로 유지하고 JSON에 표시 체계를 별도로 저장합니다. 치주 차트에서 선택한 치아도 3D 선택과 공유합니다. 임플란트를 제거하면 제거된 위치의 선택과 축 가이드를 해제합니다.

안면 외관 뷰는 진입 직전의 안면 마스크, 연조직 불투명도와 신경 강조 설정을 기억합니다. 다른 뷰로 나가면 이를 복원하며, 같은 안면 뷰를 반복 눌러도 스냅샷을 덮어쓰지 않습니다. 마스크 스위치는 뷰를 강제로 바꾸지 않습니다. 정면과 3D View는 상·하악 치아를 함께 표시합니다.

datasets 스캔

데이터 가져오기에서 datasets 스캔을 누르면 하위 폴더의 STL/OBJ/PLY, NIfTI, DICOM, PNG/JPEG/WebP를 검색·필터·페이지 목록으로 보여줍니다. 항목을 클릭하면 기존 입력 파서로 로딩하며 오류와 파일 크기 제한을 표시합니다. 볼륨의 실제 강도 범위로 초기 Window와 표면 임계값을 설정하고 HU를 가정하지 않습니다. DICOM은 폴더 단위 후보로 묶고 실제 로더가 시리즈와 간격 일관성을 검증합니다. 분할 라벨/마스크는 별도 표기합니다.

npm run dev에서는 ../datasets를 로컬 서버에서 읽습니다. 배포 사이트에서는 브라우저 파일 접근 정책에 따라 버튼을 누른 뒤 사용자가 컴퓨터의 datasets 폴더를 선택합니다. 파일은 서버로 업로드하지 않습니다. ZIP/RAR은 먼저 압축을 풀고 NRRD는 제공된 NIfTI 동반 파일을 사용하세요. 대용량 원본은 사이트 배포물에 포함하지 않습니다. 전체 출처·라이선스·검증 내용은 ../datasets/public-examples/README.md와 JSON 카탈로그에 저장합니다.

이 변경은 TypeScript 검사, 40개 기능 테스트, 프로덕션 빌드와 로컬 HTTP 파일 무결성 확인으로 검증했습니다. 실제 브라우저 WebGL 화면과 마이크는 별도로 확인하지 않았습니다.

임플란트 계획의 임플란트 계획으로 수술 시뮬레이션 버튼은 현재 등록된 모든 계획을 그대로 읽어 시뮬레이션 화면으로 이동하고 생성합니다. 시뮬레이션 패널에도 식립 대상 번호·개수·규격을 표시합니다. 계획을 임의의 네 부위 예제로 덮어쓰던 버튼을 제거했습니다. 생성은 계획의 치아·ID·위치·각도·규격을 변경하지 않습니다. 계획의 추가/제거/편집 시 기존 시퀀스는 무효화되며, 추가 선행 처치는 사용자 지정 목록으로 구분합니다.

계획서 임시공간 저장을 누르면 현재 계획·가이드 설정·전체 치주 차트·검사 설정·번호 체계·시퀀스 구성 가정을 localStorageoralpilot.browser-plan.v2 키에 저장합니다. 저장 후 편집도 자동 반영하고 다음 방문/새로고침 시 검증 후 복원합니다. 버튼은 계획서 임시공간 삭제로 바뀌며 누르면 앱의 해당 저장 키만 삭제하고 자동 저장을 중지합니다. 현재 열린 계획과 다른 사이트 데이터는 지우지 않습니다. 서버 전송, 영상/메시 원본, 카메라 시점, 실행 취소 이력은 포함하지 않습니다. 생성된 시퀀스는 복원된 계획에서 다시 생성합니다.

저장 공간·접근 오류를 표시하며 손상된 저장 내용은 초기값으로 덮어쓰지 않습니다. 다른 탭에서 저장 내용이 변경/삭제되면 해당 탭의 자동 저장을 중지합니다. JSON 다운로드 버튼 이름은 계획서 파일저장입니다. 파일 저장과 브라우저 저장은 같은 계획 구조 및 검증기를 사용합니다.

가이드 제작부터 크라운 장착까지의 시뮬레이션

각 식립 회차의 악궁별로 가이드 형상 제작·금속 슬리브 조립 → 장착 → 적합·고정 확인 → 슬리브 유도 드릴링 → 가이드 제거 → 최종 식립부 준비 확인 → 임플란트 삽입을 표시합니다. 이어서 기존 회복·재평가·지대주 연결·크라운 장착·교합 검토로 진행합니다. 선행 발치로 사라진 치아는 가이드 지지 치아에서 제외합니다. 같은 회차의 상·하악도 각 악궁의 가이드 단계를 구분합니다.

제작 단계는 실제 계획의 가이드 쉘을 층별로 드러내고 금속 슬리브를 조립하는 개념 애니메이션입니다. 장착/제거는 악궁 방향의 설명용 이동으로, 제작 공정·삽입 경로·충돌·조직 적합을 검증하지 않습니다. 드릴은 계획 축과 금속 슬리브 중심을 공유하고, 표시 직경은 통과공보다 작게 제한하며 계획 깊이까지 진입 후 후퇴합니다. 실제 제조사별 드릴 단계·회전수·관주·팁/스톱 규격을 확정하지 않습니다. 현재 드릴 전용 가이드의 좁은 슬리브로 더 큰 식립체를 통과시키지 않도록, 임플란트 삽입 전에 가이드를 제거하는 흐름입니다. 완전 유도 식립용 운반체 호환성은 별도 구현이 필요합니다. 기구 참고.

가이드 설정이 바뀌면 기존 시뮬레이션을 무효화하고 재생성을 요구합니다. 되감기와 단계 이동은 해당 시점의 가이드/기구만 표시합니다. 가이드 원본 기하 형상은 캐시하고 프레임마다 재질과 변환만 분리하여 원본을 보호합니다. 재생 속도 버튼은 0.5× → 1× → 2× → 4×로 전환합니다. 41개 기능 테스트에는 단계 순서, 양악 분리, 가이드 안착, 슬리브/드릴 축 일치, 계획 깊이, 제거 후 식립, 크라운 완료, 캐시 수명 및 가이드 변경 무효화를 포함합니다.

테마별 제안과 공동 선택

현재 식립 계획을 유지하며 안전 우선, 비용 절감, 기간 절약, 상악 우선 일괄, 하악 우선 일괄, 저작·회복 배려의 6가지 관점으로 비교합니다. 구역 분할은 지정 상한을 사용하고, 악궁 일괄은 같은 악궁의 계획 부위를 한 식립 회차에, 기간 절약은 양 악궁을 같은 식립 회차에 순차 구성합니다. 저작·회복 배려는 우측 구역 후 좌측 구역의 예시이며 잔존 지지·교합 조건 확인이 필요합니다. 발치도 해당 구역의 식립 회차 전에 배치하고 회복을 관찰합니다. 식립 회차 수, 회차 최대 개수, 악궁별 가이드 장착 횟수는 실제 생성 시퀀스에서 계산합니다. 비용·총 치료 일수·안전 점수는 계산하지 않으며, 가이드 장착 횟수는 제작물 수나 견적이 아닙니다. 소수 식립으로 실행 순서가 같은 테마는 그 사실을 표시합니다.

카드 선택은 비교 미리보기입니다. 장단점·확인 조건·시뮬레이션 검토 후 환자와 의사의 동의 확인을 각각 체크하고 선택 버튼을 눌러야 공동 선택으로 기록합니다. 다른 안을 미리보기해도 선택한 안은 유지하며, 다른 안의 동의를 확인해 교체하거나 선택·동의 기록을 해제할 수 있습니다. 이는 인증·전자서명된 의료 동의서가 아닌 프로토타입 기록입니다.

선택 기록은 입력 서명과 생성 계획 전체에 묶입니다. 식립 위치·규격, 치주 차트, 가이드 또는 회차 설정 변경 시 무효화합니다. 브라우저 저장과 계획 파일에는 선택 기록을 포함하며, 복원 후 같은 시퀀스를 다시 생성해 내용이 일치해야 활성화됩니다. 계획서에는 공동 선택된 안을 우선 표시하고, 미선택 시 현재 비교안을 미확정 초안으로 표시합니다. 비교 JSON은 6개 안과 선택 상태를 함께 보존합니다.

상단 케이스 불러오기

상단 케이스 불러오기 목록에는 ToothFairy3 F_026 계획 케이스만 표시합니다. Open-Full-Jaw 항목과 목록 자동 로딩은 제거했습니다. 이전에 확보한 datasets 원본과 파생 모델·출처 기록은 보관합니다.

실제 케이스 파일은 선택 시에만 내려받고 SHA-256 검증 후 화면을 교체합니다. 목록 닫기·취소·오류 시 기존 화면을 유지합니다. 브라우저에서 치아·골·PDL과 상·하악을 각각 표시하고 골 불투명도를 조절할 수 있습니다. 모든 조직에 같은 좌표 변환 (x, z, -y)와 공동 중심 이동을 적용하여 원본 악궁 관계를 유지합니다. 원본의 계산용 PDL을 치주 검사 데이터로 취급하지 않습니다.

가이드 단독 보기와 CAD 참조 내보내기

가이드 형상 검토의 가이드 기구물만 보기는 해부학·식립체·치관·깊이 표시를 숨기고 레진 지지 쉘과 금속 슬리브만 표시합니다. 가시성 설정을 덮어쓰지 않아 해부학과 함께 보기로 복귀하거나 다른 단계로 이동하면 기존 설정을 사용합니다. 기구물 화면 맞춤은 가이드 범위로 카메라를 맞춥니다.

CAD 참조 패키지 내보내기는 가이드 / 보철 참조 / 전체를 선택하고 바이너리 STL 또는 OBJ 형상의 ZIP을 내려받습니다. 악궁별 가이드 레진·금속 슬리브, 부위별 지대주·크라운·식립체 참조를 개별 파일로 분리합니다. 모든 형상은 동일 원점의 mm 좌표를 사용하며 펼침 뷰·카메라·가시성은 반영하지 않습니다. manifest.json에 내부 FDI 번호, 표시 번호 체계, 위치·회전·규격·깊이·부품별 범위를 기록합니다. 참조 크라운은 시뮬레이션과 같은 원본 치관 추출·평활화 방식을 사용합니다.

용도 표기는 연구용입니다. 출력은 메시이며 STEP/B-rep나 파라메트릭 치과 CAD가 아닙니다. 레진 구성품의 Boolean 결합·폐곡면·삽입 경로·적합·공차 검증과 보철 마진·시멘트 공간·연결부·스크루 채널·교합 설계는 포함하지 않습니다. 크라운 절단 경계는 열려 있을 수 있습니다. 기술적 제한과 원본 데이터 라이선스는 동봉 문서에 기록합니다.

작업 영역

상단의 좌·우 패널 아이콘과 각 패널의 접기 버튼으로 독립적으로 접고 펼칩니다. 접힌 공간은 작업 영역에 반환되고, 단계 변경 시 접힘 상태를 유지합니다. 제목 영역은 단계명과 케이스명을 담은 한 줄로 축소했습니다. 화면·계획서의 용도 배지는 연구용으로 통일합니다.

앞쪽 참고 잇몸은 상·하악별 원본 치아·골 삼각형에서 계산한 정면 표면 범위로 제한합니다. 치아 축 주변의 넓은 단면 분위수 때문에 앞쪽에 과도한 돌출이 생기던 표시를 완화하고 소구치 쪽으로 부드럽게 연결합니다. 이 표시 여유는 실제 잇몸 두께나 정상/비정상 판정 기준이 아닙니다. 원본 치아·골 좌표는 바꾸지 않습니다.

해부학 레이어는 상악·하악 표시 범위, 조직 종류, 표현 설정, 안면·연조직으로 구분됩니다. 양 악궁은 독립적으로 표시되며, 교합면 뷰는 반대 악궁을 제외합니다. 치아 선택 카드는 내부 FDI에 대응하는 상·하악/좌·우별 SVG 치아 기호를 사용하고 번호 체계를 바꿔도 모양의 대응은 유지합니다. 기호는 환자별 치근 형태를 재현한 영상이 아닙니다.

식립 위치, 임플란트 규격, 시뮬레이션 구성, 치주 설정, 데이터 필터, CAD 설정은 공통 커스텀 드롭다운을 사용합니다. Base UI의 키보드 탐색·선택·포커스 복귀와 포털 기반 위치 계산을 사용하며, 치주 차트 드롭다운은 밝은 검사 시트 색상을 따릅니다.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages