A. 각 병기분류(TNM)에 대한 이해
1. 원발 종양의 크기(T stage, size of the primary tumor)
T0 : 종양세포의 형태가 악성종양의 모습을 보이나
점막 또는 상피에 국한하고,
아직 기저막을 침윤하지 않은 종양
T1 : 원발된 장기에 제한된 병변,
종양이 가동성이 있으며 인접 및 주위조직에 침범이 없다(<2cm)
T2 : 2~5cm 정도
T3 : T2보다 크나 장기 내에 국한됨
T4 : 주변 조직과 유착 및 침윤
2. 림프절의 전이 여부(N stage, lymph node status)
N0 : 림프절의 병변의 증거가 없다
N1 : 촉지되고 가동성이 있으며,
첫번째 위치에 제한되어 있는 림프절
(1~2cm 이상, 보통 3cm까지의 크기)하나에 침범한다
N2 : 촉지되고 부분적으로 가동성이 있는 또는 단단하거나 딱딱한 림프절,
현미경적으로 침범의 증거가 있고
임상적으로 서로 엉켜 있으며 반대측 또는 양측에서 나타난다.. (3cm~5cm)
N3 : 완전히 고정되어 있고
피막을 통과하여 뼈나 큰 혈관, 피부, 신경 등에 완전히 고정되어있으며
6cm 이상의 크기이다
3. 원격전이여부(M stage, distant metastasis)
M0 : 원격전이가 없음
M1 : 원격전이가 있음
B. 암병기(Stage) 결정 - TNM 분류에 따라...

대체적으로 위와 같이 결정되나, 암종별로 각각 조금씩 다르다.
C. 암병기 결정 SW 화면

(참고) 난소암의 경우에는 TNM을 적용하지 않고 사용되는 경우가 많다.

난소암의TNM 처럼 복강내에서 복막이나 다른 장기에 전이가 되더라도 4기가 아니다.
(참고) 혈액암과 림프종은 TNM 병기를 따르지 않는다.
D. 파일구성

E. 화면구성과 암종별 초기화 - 소스 일부

(MS VFP-6.0 version)
local i, j, ca_type, xyz_cnt, xyz_opt
ca_type = thisform.list1.value
with thisform.pageframe1.page1
* 옵션값 / 암병기 값 초기화
.optiongroup1.buttoncount = 1
.optiongroup1.option1.caption = 'no. data'
.optiongroup2.buttoncount = 1
.optiongroup2.option1.caption = 'no. data'
.optiongroup3.buttoncount = 1
.optiongroup3.option1.caption = 'no. data'
.text3.value = ' '
.text4.value = ' '
select stage1
set order to 1
if !seek(ca_type) && 암종이 등록되어 있지 않을때
.optiongroup1.enabled = .f.
.optiongroup2.visible = .f.
.optiongroup3.visible = .f.
return
else
do case
case inlist(allt(암종류),'난소암','자궁암') && 난소암/자궁암일때 옵션1만 가능
.optiongroup1.enabled = .t.
.optiongroup2.visible = .f.
.optiongroup3.visible = .f.
case inlist(allt(암종류),'림프종') && 림프종일때 옵션1,2만 가능
.optiongroup1.enabled = .t.
.optiongroup2.visible = .t.
.optiongroup3.visible = .f.
other
.optiongroup1.enabled = .t.
.optiongroup2.visible = .t.
.optiongroup3.visible = .t.
endcase
.optiongroup1.value = 1
.optiongroup2.value = 1
.optiongroup3.value = 1
endif
for j = 1 to 3 && 암종별 TNM 옵션 질문사항 display
if seek(ca_type+str(j,1))
i = 1
do while ca_type+str(j,1) = 암종류+str(tnm_,1) .and. !eof()
xyz_cnt = 'OptionGroup'+str(j,1)+'.buttonCount'
xyz_opt = 'OptionGroup'+str(j,1)+'.option'+allt(str(i))+'.caption'
opt_len = 'OptionGroup'+str(j,1)+'.option'+allt(str(i))+'.autosize'
.&xyz_cnt = i
.&opt_len = .t.
.&xyz_opt = allt(tnm1)+'.'+allt(tnm2)
i = i + 1
skip
if i > 15
exit
endif
enddo
endif
endfor
endwith
F. 암종별 TNM에 따른 병기값 찾기 - 소스 일부

local ca_type,
local xyz
local T_val, N_val, M_val
local t_look, n_look, m_look,
local tnm_look
local l_seek
select stage2
set order to 1
ca_type = thisform.list1.value
with thisform.pageframe1.page1
T_val = .optiongroup1.value
xyz = 'optiongroup1.option'+allt(str(t_val))+'.caption'
t_look = allt(.&xyz)
t_look = left(t_look,at('.',t_look)-1)
N_val = .optiongroup2.value
xyz = 'optiongroup2.option'+str(n_val,1)+'.caption'
n_look = allt(.&xyz)
n_look = left(n_look,at('.',n_look)-1)
M_val = .optiongroup3.value
xyz = 'optiongroup3.option'+str(m_val,1)+'.caption'
m_look = allt(.&xyz)
m_look = left(m_look,at('.',m_look)-1)
tnm_look = t_look + n_look + m_look && 체크된 T,N,N 값의 문자합
.text3.value = tnm_look
.text4.value = ''
select stage2
set order to 1
if !seek(ca_type + tnm_look) && 암종별 TNM 문자값을 찾는다.
.text4.value = '?'
l_seek = .f.
else
.text4.value = allt(stage2.암병기)
l_seek = .t.
endif
if inlist(right(allt(tnm_look),2) ,'M0','MO') .or. isdigit(left(tnm_look,1))
else
if tnm_look = 'nonono'
.text3.value = ' '
.text4.value = ' '
else
.text4.value = '4'
endif
endif
endwith
thisform.refresh
G. 암종별 TNM-값에 대한 정의

위와 같이 암종별 TNM 값이 모두 다르므로 변경/세분화 해서 정의하고 입력해두면
암병기 결정 SW를 다양하게 사용할 수 있다.
H. 프로그램 업로드
stage.app
stage0.dbf, stage0.fpt
stage1.dbf, stage1.cdx
stage2.dbf, stage2.cdx
상기 파일(stage.zip)을 다운 받아 아래와 같이 설치하고 실행하면 됨
설치
1) 임의의 드라이브(C: or D: or USB-drive 등)에 "ca" 라는 폴더를 만든 후
그곳(\ca)에 ca.zip의 파일들을 풀어서 복사합니다.
ca.zip 파일이 있는 곳: https://best1dr.tistory.com/7495791
이미 설치가 되어 있으면 안해도 된다.
2) 다음에는 \ca 폴더에서 base 폴더를 만드시고
그곳(\ca\base)에 stage.zip의 파일들을 풀어서 복사합니다.
실행
\ca 폴더의 yoyang.exe 를 실행하면 됩니다.

'의학.건강 > SW 공개.코딩' 카테고리의 다른 글
명상 진행 프로그램(SW) - 설치, 계획, 진행, 평가 등 (1) | 2024.02.17 |
---|---|
수액 주사 치료시 주입속도 계산법 SW source (0) | 2024.02.01 |
문항척도 평가도구 점수 계산 (0) | 2023.07.25 |
나의 노트 관리 프로그램(SW) (0) | 2023.06.25 |
(n)년 누적 생존율 계산 (0) | 2023.01.18 |