Scanner 컴포넌트는 Nonscanner의 setup, patient 및 report 컴포넌트와 데이터 공유가 복잡하게이루어지므로, 이들간 데이터 공유를 단순하게 할 필요가 있다.
8.4.1. 컴포넌트와 프로세스간 통신
컴포넌트와 별도 프로세스간 통신은 IPC(예 소켓, 파이프)를 활용하며, 통신 프로토콜은 컴포넌트와 프로세스간으로 한정한다.
8.4.2. 리소스 공유
사용자가 Setup 항목을 변경하면, Setup 컴포넌트는 변경된 항목에 대응하는 리소스를 저장하고 event를 발생시킨다.
Figure: Resource changes

8.4.3. Scanner와 Patient간 스터디 데이터 공유
Scanner 컴포넌트와 Patient 컴포넌트는 Study_Model.xml 파일을 이용하여 스터디 데이터를 공유한다. Scanner 컴포넌트와 Patient 컴포넌트가 같은 프로세스에 있는 경우, component bus를 통해 서로 event를 전달한다.
이 절에서는 Scanner 컴포넌트와 Patient 컴포넌트가 같은 프로세스에 있다고 가정하고 기술한다.
환자 등록 후 환자를 검사하고 종료한는 시퀀스 다이어그램은 다음과 같다:
Figure: New study sequence diagram (patient state)

환자를 먼저 검사하고 종료할 때 환자를 등록하는 시퀀스 다이어그램은 다음과 같다:
Figure: New study sequence diagram (no patient status)

환자를 먼저 검사하고 이미지를 저장할 때 시퀀스 다이어그램은 다음과 같다:
Figure: Image save in no patient state

study_model.xml의 구성은 다음과 같다:
<Study_Model> <Patient> … </Patient> <Study> … </Study> <Series_Group> … </Series_Group> <Report_Group> … </Report_Group> <History_Group> … </History_Group> </Study_Model > |
study_model.xml에서 Patient 파라메터는 환자의 기본 정보를 다음과 같이 표시한다:
<Patient> <Key type=”string”>123456789ABCDEF</Key> <Id type=”string”>20230131_091023</Id> <First_Name type=”string”>Gil</First_Name> <Middle_Name type=”string”>Dong</Middle_Name> <Last_Name type=”string”>Hong</Last_Name> <Birthdate type=”string”>19850916</Birthdate> <Sex type=”string”>Male</Sex> <Study_Count>1<Study_Count> </Patient> |
Study 파라메터는 스터디의 기본 정보를 다음과 같이 표시한다:
<Study> <Key type=”string”>123456789ABCDE0</Key> <Id type=”int”>0</Id> <Datetime type=”string”>20230131_091025</Datetime> <Last_Body_Part type=”string”>ID_OB</Last_Body_Part> <Height type=”int”>160</Height> <Weight type=”int”>60</Weight> <Ref_Physician type=”string”>KIM</Ref_Physician> <Last_Perf_Physician type=”string”>YOON</Last_Perf_Physician> <Last_Operator type=”string” /> <Accession_No type=”string”>12345</Accession_No> <Description type=”string”>Spine – 6 disc</Description> <Comment type=”string”>comment …</Comment> <Last_Series_No type=”int”>1</Last_Series_No> <Report_Count type=”int”>0</Report_Count> <Image_Count type=”int”>0</Image_Count> <ChangedF type=”bool”>false</ChangedF> </Study> |
Series_Group은 시리즈 기본 기본와 개별 시리즈에 대한 정보를 다음과 같이 표시한다:
<Series_Group> <Series> <General> <Key type=”string”>123456789ABCDE0</Key> <Series_No type=”int”>1</Series_No> <Datetime type=”string”>datetime</Datetime> <Perf_Physician type=”string”>YOON</Perf_Physician> <Operator type=”string” /> <Body_Part type=”string”>ID_OB</Body_Part> <Preset_Name type=”string”>YOON_PRS</Preset_Name> <Base_Preset_Name type=”string”>ID_OB</Base_Preset_Name> <ChangedF type=”bool”>false</ChangedF> </General> <Images> <Image> <Key type=”string”>123456789ABCDE0</Key> <Datetime type=”string”>datetime</Datetime> <Name type=”string”>datetime.miliseconds.bmp</Name> </Image> </Images> </Series> </Series_Group> |
Report_Group은 리포트 파일에 대한 정보를 다음과 같이 표시한다:
<Report_Group> <Report> <Key type=”string”>123456789ABCDE0</Key> <Datetime type=”string”>datetime</Datetime> <Name type=”string”>datetime.miliseconds.bmp</Name> </Report> </Report_Group> |
History_Group은 과거 스터디 데이터를 다음과 같이 표시한다:
<History_Group> <History> <Study> … </Study> <Series_Group> … </Series_Group> <Report_Group> … </Report_Group> </History> </History_Group> |
8.4.4. 리포트 데이터 공유
TBD