본문으로 건너뛰기

Research 도메인 비즈니스 규칙

Research 도메인의 비즈니스 규칙을 정의합니다. 본 문서는 requirements.mdevent-storming.md의 합의를 기준으로 합니다.


1. 불변식 (Invariants)

1.1 연구 참여자 부분집합

  • 규칙: 연구 참여자(Research Participant)는 진료용 환자(활성 사용자)의 부분집합이어야 한다.
  • 위반 시: 연구 참여자 등록/조회가 거부되어야 한다.

1.2 무작위번호 병원 단위 유일성

  • 규칙: 동일 siteId 내에서 randomizationNumber는 중복될 수 없다.
  • 허용: 서로 다른 siteIdrandomizationNumber 중복은 허용한다.
  • 위반 시: 무작위번호 저장/수정이 거부되어야 한다.

1.3 메모 단일 최신본

  • 규칙: 메모는 단일 최신본만 유지하며 과거 수정 이력을 제공하지 않는다.

1.4 연구 리스트 제외(삭제)의 의미

  • 규칙: 연구 참여자 삭제는 “연구 리스트에서 제외”이며, 진료용 환자 데이터(원천 사용자)는 삭제하지 않는다.

2. 유효성 규칙 (Validation Rules)

2.1 연구 기능 접근

  • 규칙: 연구 기능 접근은 clinicalResearch=true인 Site에 대해서만 허용된다.
  • 규칙: 연구 데이터 조회 스코프는 IAM 권한 평가 결과(그룹/권한) + siteId 컨텍스트로 결정된다.

2.2 무작위번호 입력/검증

  • 최소 입력 조건: 1개 이상의 문자가 입력되어야 한다.
  • 중복 검증 스코프: 동일 siteId 내 중복 검증을 수행한다.
  • UX 디바운스: 클라이언트는 0.5초 동안 추가 입력이 없을 때 검증 결과 메시지를 표시한다.

2.3 삭제 비밀번호 검증

  • 규칙: 연구 리스트 제외(삭제) 수행 전 비밀번호 검증이 필요하다.
  • 참조: 비밀번호 검증 방식은 Auth Operation 컨텍스트를 따른다.

3. 상태 전이 규칙 (State Transition Rules)

3.1 연구 참여자 리스트 포함 상태

[NotEnrolled]
↓ (ImportResearchParticipant / CreateResearchParticipant)
[Enrolled]
↓ (RemoveResearchParticipantFromList)
[RemovedFromResearchList]
  • RemovedFromResearchList는 “연구 시트에서 더 이상 조회되지 않는 상태”이며, 원천 사용자/진료용 데이터의 삭제가 아니다.

3.2 불성실 상태

[Compliant]
↔ (EvaluateNonCompliance)
[NonCompliant]

불성실 판정 조건:

  • 조건 1: 슬립큐 코드 등록 8일차부터 수면 기록률이 50% 이하
  • 조건 2: 43일차에 도달했음에도 마지막 설문 미실시

4. 권한 규칙 (Authorization Rules)

본 섹션은 Research 도메인에서 요구하는 “행위 가능 조건”을 정의합니다.
IAM 모델/프로비저닝의 상세는 IAM Operation 문서를 따릅니다.

4.1 연구용 탭 접근(교차 참조)

IAM Operation 문서의 “그룹별 접근 권한” 규칙을 따른다.

예시(참고):

그룹연구용 탭 접근스코프
medi.platform-admin모든 임상연구 참여 Site
medi.site-admin✓ (조건부)본인 Site (Site가 ClinicalResearch인 경우)
medi.site-member✓ (조건부)본인 Site (Site가 ClinicalResearch인 경우)

4.2 연구 참여자 관리 권한

  • 규칙: 사이트 스코프 사용자(예: medi.site-admin, medi.site-member)만 연구 참여자 등록/수정/삭제를 수행할 수 있다.
  • 규칙: 플랫폼 전체 조회 권한 보유자는 기본적으로 조회/필터링 기능을 제공하고, 등록/수정/삭제 기능은 제한될 수 있다(요구사항 참조).

5. 계산/파생 규칙 (Derivation Rules)

5.1 치료주차

  • 1일~7일: 1주차
  • 8일~14일: 2주차
  • 15일~21일: 3주차
  • 22일~28일: 4주차
  • 29일~35일: 5주차
  • 36일~42일: 6주차
  • 43일 이후: 만료됨(43일)

5.2 앱 접속 횟수(n/42)

  • n: 00:00~23:59 사이에 1회 이상 접속한 “일자 수”
  • 동일 일자 중복 접속은 1회로 카운팅

5.3 준수율(기상/취침)

  • 분모: 첫 처방 다음날 이후로 작성한 수면 기록 수
  • DNS는 “수면 기록은 작성한 것으로, 목표 시간은 준수하지 않은 것”으로 해석
  • 소수점 첫째 자리에서 반올림

5.4 주차 평균(SE/WASO/TST/SOL)

  • 1주차(8일차) 평균: 1일차~7일차 작성 데이터
  • 6주차(43일차) 평균: 36일차~42일차 작성 데이터
  • 미작성 날은 평균 계산에서 제외
  • 데이터가 없으면 “-”로 표기
  • 소수점 셋째 자리에서 반올림 후 표기(0이어도 표기)

6. 제약 사항 (Constraints)

6.1 스코프 제약

  • 제약: 스코프가 SITE_SCOPED인 사용자는 요청 시 siteId 컨텍스트와 일치하는 데이터만 접근 가능해야 한다.

6.2 감사(감사 로그) 제약

  • 제약: 연구 참여자 등록/삭제, 무작위번호 변경, 메모 변경, 불성실 판정 변경은 감사 가능하도록 기록되어야 한다.

변경 이력

버전날짜작성자변경 내용
0.1.02025-12-29jeff@weltcorp.com최초 작성