# Firely NET SDK 101 – Model與DataTypes 在討論FHIR Model Classes之前,先了解一下基本的FHIR Type,相關的資料可參考Datatypes - FHIR v5.0.0 (hl7.org)與Types - FHIR v5.0.0 (hl7.org)。FHIR標準中,Type可區分為三個基本分類:Datatypes、Resources和Logical Models。其中Datatypes為構成FHIR Classes的基礎。 ![Model & Data Type -2](https://hackmd.io/_uploads/rymcduR8p.png) FHIR Type Framework 上圖為FHIR Type的繼承架構。所有FHIR物件都繼承自Base Class,往下可分為兩部分:Resource/DomainResource主要定義FHIR Resource相關Class,每一個FHIR Resource都必須繼承DomainResource,而構成Resource的元件則是由另一個分支(Element)來描述。換句話說,每一個FHIR Model Class的欄位都是一個Element。 Element又可區分為兩種,其中Datatypes為基本的資料結構,BackoneElement則是不同Datatypes的組合。 Datatypes又可區分為基本型(PrimitiveTypes)和複雜型(Complex,非Primitive)。PrimitiveTypes是最基本的資料型態,其繼承關係如下: ![Model & Data Type -1](https://hackmd.io/_uploads/Sy2e_OR8T.png) 由上圖可知,PrimitiveTypes可大致分為: 1. 數值型:integer、integer64、decimal、bollean、base64Binary 2. 字串型:string(包含特殊格式字串,例如code、id)、uri 3. 時間型:instant、time、date、dateTime 除基本數值型與部分字串型,其他Type的表示法會依循Regular Express語法定義。雖然code為一字串形式的Primitive Type,若其Biding Strength設定為Required即表示其值必須唯一有限集合之資料集。以gender為例,type為code,Biding Strength為Required,value set為AdministrativeGender,就表示可以填入的值為male | female | other | unknown。Firely NET SDK會定義對應的Enumeration,語法如下: Gender = AdministrativeGender.Male Complex Types:顧名思義就是Datatypes包含一個以上屬性,例如Period(Start, End)、Range(Low, High)等。