44< meta charset ="UTF-8 ">
55< meta http-equiv ="X-UA-Compatible " content ="IE=edge ">
66< meta name ="viewport " content ="width=device-width, initial-scale=1.0 ">
7- < meta name ="generator " content ="Asciidoctor 2.0.10 ">
7+ < meta name ="generator " content ="Asciidoctor 2.0.14 ">
88< meta name ="description " content ="openEHR Simplified Data Template (SDT) ">
99< meta name ="keywords " content ="JSON, REST, web template, commit, simplified data, TDS, SDT, ncSDT, simSDT, structSDT ">
1010< title > Simplified Data Template (SDT)</ title >
1111< link rel ="stylesheet " href ="https://specifications.openehr.org/styles/openehr.css ">
12+ < link rel ="stylesheet " href ="https://specifications.openehr.org/styles/pygments-default.css ">
1213</ head >
1314< body class ="book toc2 toc-left ">
1415< div id ="header ">
@@ -95,7 +96,7 @@ <h1 id="_simplified_data_template_sdt" class="sect0"><a class="anchor" href="#_s
9596</ thead >
9697< tbody >
9798< tr >
98- < td class ="tableblock halign-left valign-top "> < p class ="tableblock "> < strong > Release</ strong > : ITS-REST latest </ p > </ td >
99+ < td class ="tableblock halign-left valign-top "> < p class ="tableblock "> < strong > Release</ strong > : ITS-REST Release-1.0.2 </ p > </ td >
99100< td class ="tableblock halign-left valign-top "> < p class ="tableblock "> < strong > Status</ strong > : DEVELOPMENT</ p > </ td >
100101</ tr >
101102< tr >
@@ -159,7 +160,7 @@ <h2 id="_amendment_record"><a class="anchor" href="#_amendment_record"></a>Amend
159160</ thead >
160161< tbody >
161162< tr >
162- < th class ="tableblock halign-center valign-top " colspan ="4 "> < p class ="tableblock "> < strong > ITS_REST Release 1.0.2 (unreleased) </ strong > </ p > </ th >
163+ < th class ="tableblock halign-center valign-top " colspan ="4 "> < p class ="tableblock "> < strong > ITS_REST Release 1.0.2</ strong > </ p > </ th >
163164</ tr >
164165< tr >
165166< td class ="tableblock halign-left valign-top "> < p class ="tableblock "> < a id ="latest_issue "> </ a > 1.0.2</ p > </ td >
@@ -266,7 +267,7 @@ <h3 id="_purpose"><a class="anchor" href="#_purpose"></a>1.1. Purpose</h3>
266267< div class ="sect2 ">
267268< h3 id ="_status "> < a class ="anchor " href ="#_status "> </ a > 1.2. Status</ h3 >
268269< div class ="paragraph ">
269- < p > This specification is in the DEVELOPMENT state. The development version of this document can be found at {json_data_template}[{json_data_template}^] .</ p >
270+ < p > This specification is in the DEVELOPMENT state. The development version of this document can be found at < a href =" https://specifications.openehr.org/releases/ITS-REST/latest/simplified_data_template.html " target =" _blank " rel =" noopener " > https://specifications.openehr.org/releases/ITS-REST/latest/simplified_data_template.html </ a > .</ p >
270271</ div >
271272< div class ="paragraph ">
272273< p > Known omissions or questions are indicated in the text with a 'to be determined' paragraph, as follows:</ p >
@@ -304,7 +305,7 @@ <h2 id="_overview"><a class="anchor" href="#_overview"></a>2. Overview</h2>
304305< div class ="sect2 ">
305306< h3 id ="_requirements "> < a class ="anchor " href ="#_requirements "> </ a > 2.1. Requirements</ h3 >
306307< div class ="paragraph ">
307- < p > The default serialised data representations for openEHR content are canonical XML, based on the < a href ="https://specifications.openehr.org/releases/ITS/latest " target ="_blank " rel ="noopener "> openEHR RM XSDs</ a > , canonical JSON, described by the < a href ="https://specifications.openehr.org/releases/ITS/latest " target ="_blank " rel ="noopener "> openEHR JSON schemas</ a > , and potentially any other canonical serial format based on the underlying Reference Model (e.g. YAML etc). Here, 'canonical' means any fully-expressed instance data in which:</ p >
308+ < p > The default serialised data representations for openEHR content are canonical XML, based on the < a href ="https://specifications.openehr.org/releases/ITS-XML /latest " target ="_blank " rel ="noopener "> openEHR RM XSDs</ a > , canonical JSON, described by the < a href ="https://specifications.openehr.org/releases/ITS-JSON /latest " target ="_blank " rel ="noopener "> openEHR JSON schemas</ a > , and potentially any other canonical serial format based on the underlying Reference Model (e.g. YAML etc). Here, 'canonical' means any fully-expressed instance data in which:</ p >
308309</ div >
309310< div class ="ulist ">
310311< ul >
@@ -650,60 +651,60 @@ <h3 id="_visitor_algorithm"><a class="anchor" href="#_visitor_algorithm"></a>4.1
650651< h4 id ="_c_complex_object "> < a class ="anchor " href ="#_c_complex_object "> </ a > 4.1.1. C_COMPLEX_OBJECT</ h4 >
651652< div class ="listingblock ">
652653< div class ="content ">
653- < pre class ="pygments highlight "> < code data-lang ="java "> < span > </ span > < span class ="tok-nl "> SOptVisitor:</ span > < span class ="tok-o "> :</ span > < span class ="tok-n "> OptVisitor</ span > < span class ="tok-o "> {</ span >
654+ < pre class ="pygments highlight "> < code data-lang ="java "> < span > </ span > < span class ="tok-nl "> SOptVisitor:</ span > < span class ="tok-p "> :</ span > < span class ="tok-n "> OptVisitor</ span > < span class ="tok-p "> {</ span >
654655
655656 < span class ="tok-c1 "> //</ span >
656657 < span class ="tok-c1 "> // Visitor function for C_COMPLEX_OBJECT node in OPT</ span >
657658 < span class ="tok-c1 "> //</ span >
658- < span class ="tok-kd "> public</ span > < span class ="tok-nf "> enterCComplexObject</ span > < span class ="tok-o "> (</ span > < span class ="tok-n "> CComplexObject</ span > < span class ="tok-n "> cObj</ span > < span class ="tok-o "> )</ span > < span class ="tok-o "> {</ span >
659+ < span class ="tok-kd "> public</ span > < span class ="tok-nf "> enterCComplexObject</ span > < span class ="tok-p "> (</ span > < span class ="tok-n "> CComplexObject</ span > < span class ="tok-n "> cObj</ span > < span class ="tok-p "> )</ span > < span class ="tok-p "> {</ span >
659660 < span class ="tok-c1 "> // obtain or synthesise SIM class name for cCObj.rmTypeName</ span >
660- < span class ="tok-n "> simClassName</ span > < span class ="tok-o "> =</ span > < span class ="tok-n "> xxx</ span > < span class ="tok-o "> ;</ span >
661+ < span class ="tok-n "> simClassName</ span > < span class ="tok-o "> =</ span > < span class ="tok-n "> xxx</ span > < span class ="tok-p "> ;</ span >
661662
662663 < span class ="tok-c1 "> // create SOpt CComplexObject</ span >
663- < span class ="tok-n "> CComplexObject</ span > < span class ="tok-n "> SCobj</ span > < span class ="tok-o "> =</ span > < span class ="tok-k "> new</ span > < span class ="tok-n "> CComplexObject</ span > < span class ="tok-o "> (</ span > < span class ="tok-n "> simClassName</ span > < span class ="tok-o "> );</ span >
664+ < span class ="tok-n "> CComplexObject</ span > < span class ="tok-n "> SCobj</ span > < span class ="tok-o "> =</ span > < span class ="tok-k "> new</ span > < span class ="tok-n "> CComplexObject</ span > < span class ="tok-p "> (</ span > < span class ="tok-n "> simClassName</ span > < span class ="tok-p "> );</ span >
664665
665666 < span class ="tok-c1 "> // process attributes</ span >
666- < span class ="tok-k "> for</ span > < span class ="tok-o "> (</ span > < span class ="tok-n "> CAttribute</ span > < span class ="tok-n "> cAttr</ span > < span class ="tok-n "> in</ span > < span class ="tok-n "> cCObj</ span > < span class ="tok-o "> .</ span > < span class ="tok-na "> attributes</ span > < span class ="tok-o "> )</ span > < span class ="tok-o "> {</ span >
667+ < span class ="tok-k "> for</ span > < span class ="tok-p "> (</ span > < span class ="tok-n "> CAttribute</ span > < span class ="tok-n "> cAttr</ span > < span class ="tok-n "> in</ span > < span class ="tok-n "> cCObj</ span > < span class ="tok-p "> .</ span > < span class ="tok-na "> attributes</ span > < span class ="tok-p "> )</ span > < span class ="tok-p "> {</ span >
667668
668669 < span class ="tok-c1 "> // find any rule for this attribute</ span >
669- < span class ="tok-k "> if</ span > < span class ="tok-o "> (</ span > < span class ="tok-n "> rules</ span > < span class ="tok-o "> .</ span > < span class ="tok-na "> hasPathRule</ span > < span class ="tok-o "> (</ span > < span class ="tok-n "> cObj</ span > < span class ="tok-o "> .</ span > < span class ="tok-na "> rmTypeName</ span > < span class ="tok-o "> ,</ span > < span class ="tok-n "> CAttr</ span > < span class ="tok-o "> .</ span > < span class ="tok-na "> rmAttributeName</ span > < span class ="tok-o "> ))</ span > < span class ="tok-o "> {</ span >
670- < span class ="tok-n "> attrRule</ span > < span class ="tok-o "> =</ span > < span class ="tok-n "> rules</ span > < span class ="tok-o "> .</ span > < span class ="tok-na "> pathRule</ span > < span class ="tok-o "> (</ span > < span class ="tok-n "> cObj</ span > < span class ="tok-o "> .</ span > < span class ="tok-na "> rmTypeName</ span > < span class ="tok-o "> ,</ span > < span class ="tok-n "> CAttr</ span > < span class ="tok-o "> .</ span > < span class ="tok-na "> rmAttributeName</ span > < span class ="tok-o "> );</ span >
670+ < span class ="tok-k "> if</ span > < span class ="tok-p "> (</ span > < span class ="tok-n "> rules</ span > < span class ="tok-p "> .</ span > < span class ="tok-na "> hasPathRule</ span > < span class ="tok-p "> (</ span > < span class ="tok-n "> cObj</ span > < span class ="tok-p "> .</ span > < span class ="tok-na "> rmTypeName</ span > < span class ="tok-p "> ,</ span > < span class ="tok-n "> CAttr</ span > < span class ="tok-p "> .</ span > < span class ="tok-na "> rmAttributeName</ span > < span class ="tok-p "> ))</ span > < span class ="tok-p "> {</ span >
671+ < span class ="tok-n "> attrRule</ span > < span class ="tok-o "> =</ span > < span class ="tok-n "> rules</ span > < span class ="tok-p "> .</ span > < span class ="tok-na "> pathRule</ span > < span class ="tok-p "> (</ span > < span class ="tok-n "> cObj</ span > < span class ="tok-p "> .</ span > < span class ="tok-na "> rmTypeName</ span > < span class ="tok-p "> ,</ span > < span class ="tok-n "> CAttr</ span > < span class ="tok-p "> .</ span > < span class ="tok-na "> rmAttributeName</ span > < span class ="tok-p "> );</ span >
671672
672673 < span class ="tok-c1 "> // deal with collapse case - go through all matching paths</ span >
673- < span class ="tok-k "> if</ span > < span class ="tok-o "> (</ span > < span class ="tok-n "> attrRule</ span > < span class ="tok-o "> .</ span > < span class ="tok-na "> collapse</ span > < span class ="tok-o "> )</ span > < span class ="tok-o "> {</ span >
674+ < span class ="tok-k "> if</ span > < span class ="tok-p "> (</ span > < span class ="tok-n "> attrRule</ span > < span class ="tok-p "> .</ span > < span class ="tok-na "> collapse</ span > < span class ="tok-p "> )</ span > < span class ="tok-p "> {</ span >
674675 < span class ="tok-c1 "> // create a new output C_ATTRIBUTE with the SIM attribute name</ span >
675- < span class ="tok-n "> CAttribute</ span > < span class ="tok-n "> sCAttr</ span > < span class ="tok-o "> =</ span > < span class ="tok-k "> new</ span > < span class ="tok-n "> CAttribute</ span > < span class ="tok-o "> (</ span > < span class ="tok-n "> baseName</ span > < span class ="tok-o "> (</ span > < span class ="tok-n "> attrRule</ span > < span class ="tok-o "> .</ span > < span class ="tok-na "> simPath</ span > < span class ="tok-o "> ));</ span >
676+ < span class ="tok-n "> CAttribute</ span > < span class ="tok-n "> sCAttr</ span > < span class ="tok-o "> =</ span > < span class ="tok-k "> new</ span > < span class ="tok-n "> CAttribute</ span > < span class ="tok-p "> (</ span > < span class ="tok-n "> baseName</ span > < span class ="tok-p "> (</ span > < span class ="tok-n "> attrRule</ span > < span class ="tok-p "> .</ span > < span class ="tok-na "> simPath</ span > < span class ="tok-p "> ));</ span >
676677
677678 < span class ="tok-c1 "> // attach new C_OBJECT to cAttr</ span >
678- < span class ="tok-k "> for</ span > < span class ="tok-o "> (</ span > < span class ="tok-n "> collapseRule</ span > < span class ="tok-n "> in</ span > < span class ="tok-n "> rules</ span > < span class ="tok-o "> .</ span > < span class ="tok-na "> matchingPathRules</ span > < span class ="tok-o "> (</ span > < span class ="tok-n "> cCObj</ span > < span class ="tok-o "> .</ span > < span class ="tok-na "> rmTypeName</ span > < span class ="tok-o "> ,</ span > < span class ="tok-n "> CAttr</ span > < span class ="tok-o "> .</ span > < span class ="tok-na "> rmAttributeName</ span > < span class ="tok-o "> )</ span >
679- < span class ="tok-n "> sCAttr</ span > < span class ="tok-o "> .</ span > < span class ="tok-na "> appendChildren</ span > < span class ="tok-o "> (</ span > < span class ="tok-n "> makeCCObjects</ span > < span class ="tok-o "> (</ span > < span class ="tok-n "> collapseRule</ span > < span class ="tok-o "> ));</ span >
679+ < span class ="tok-k "> for</ span > < span class ="tok-p "> (</ span > < span class ="tok-n "> collapseRule</ span > < span class ="tok-n "> in</ span > < span class ="tok-n "> rules</ span > < span class ="tok-p "> .</ span > < span class ="tok-na "> matchingPathRules</ span > < span class ="tok-p "> (</ span > < span class ="tok-n "> cCObj</ span > < span class ="tok-p "> .</ span > < span class ="tok-na "> rmTypeName</ span > < span class ="tok-p "> ,</ span > < span class ="tok-n "> CAttr</ span > < span class ="tok-p "> .</ span > < span class ="tok-na "> rmAttributeName</ span > < span class ="tok-p "> )</ span >
680+ < span class ="tok-n "> sCAttr</ span > < span class ="tok-p "> .</ span > < span class ="tok-na "> appendChildren</ span > < span class ="tok-p "> (</ span > < span class ="tok-n "> makeCCObjects</ span > < span class ="tok-p "> (</ span > < span class ="tok-n "> collapseRule</ span > < span class ="tok-p "> ));</ span >
680681
681- < span class ="tok-o "> }</ span >
682+ < span class ="tok-p "> }</ span >
682683 < span class ="tok-k "> else</ span >
683- < span class ="tok-n "> sCAttr</ span > < span class ="tok-o "> .</ span > < span class ="tok-na "> appendChildren</ span > < span class ="tok-o "> (</ span > < span class ="tok-n "> makeCCObjects</ span > < span class ="tok-o "> (</ span > < span class ="tok-n "> attrRule</ span > < span class ="tok-o "> ));</ span >
684- < span class ="tok-o "> }</ span >
685- < span class ="tok-o "> }</ span >
686- < span class ="tok-o "> }</ span >
684+ < span class ="tok-n "> sCAttr</ span > < span class ="tok-p "> .</ span > < span class ="tok-na "> appendChildren</ span > < span class ="tok-p "> (</ span > < span class ="tok-n "> makeCCObjects</ span > < span class ="tok-p "> (</ span > < span class ="tok-n "> attrRule</ span > < span class ="tok-p "> ));</ span >
685+ < span class ="tok-p "> }</ span >
686+ < span class ="tok-p "> }</ span >
687+ < span class ="tok-p "> }</ span >
687688
688- < span class ="tok-kd "> private</ span > < span class ="tok-n "> List</ span > < span class ="tok-o "> <</ span > < span class ="tok-n "> CObject</ span > < span class ="tok-o "> ></ span > < span class ="tok-nf "> makeCCObjects</ span > < span class ="tok-o "> (</ span > < span class ="tok-n "> CAttribute</ span > < span class ="tok-n "> cAttr</ span > < span class ="tok-o "> ,</ span > < span class ="tok-n "> SOptRule</ span > < span class ="tok-n "> aRule</ span > < span class ="tok-o "> )</ span > < span class ="tok-o "> {</ span >
689- < span class ="tok-n "> List</ span > < span class ="tok-o "> <</ span > < span class ="tok-n "> CObject</ span > < span class ="tok-o "> ></ span > < span class ="tok-n "> sChildCObjList</ span > < span class ="tok-o "> =</ span > < span class ="tok-k "> new</ span > < span class ="tok-n "> List</ span > < span class ="tok-o "> <</ span > < span class ="tok-n "> CObject</ span > < span class ="tok-o "> >;</ span >
690- < span class ="tok-n "> CObject</ span > < span class ="tok-n "> sChildCObj</ span > < span class ="tok-o "> ;</ span >
689+ < span class ="tok-kd "> private</ span > < span class ="tok-n "> List</ span > < span class ="tok-o "> <</ span > < span class ="tok-n "> CObject</ span > < span class ="tok-o "> ></ span > < span class ="tok-nf "> makeCCObjects</ span > < span class ="tok-p "> (</ span > < span class ="tok-n "> CAttribute</ span > < span class ="tok-n "> cAttr</ span > < span class ="tok-p "> ,</ span > < span class ="tok-n "> SOptRule</ span > < span class ="tok-n "> aRule</ span > < span class ="tok-p "> )</ span > < span class ="tok-p "> {</ span >
690+ < span class ="tok-n "> List</ span > < span class ="tok-o "> <</ span > < span class ="tok-n "> CObject</ span > < span class ="tok-o "> ></ span > < span class ="tok-n "> sChildCObjList</ span > < span class ="tok-o "> =</ span > < span class ="tok-k "> new</ span > < span class ="tok-n "> List</ span > < span class ="tok-o "> <</ span > < span class ="tok-n "> CObject</ span > < span class ="tok-o "> ></ span > < span class =" tok-p " > ;</ span >
691+ < span class ="tok-n "> CObject</ span > < span class ="tok-n "> sChildCObj</ span > < span class ="tok-p "> ;</ span >
691692
692693 < span class ="tok-c1 "> // if SIM target type is primitive, apply constraint conversion rule</ span >
693694 < span class ="tok-c1 "> // e.g. convert C_TERMINOLOGY_CODE to a C_STRING</ span >
694- < span class ="tok-k "> if</ span > < span class ="tok-o "> (</ span > < span class ="tok-n "> PrimitiveTypes</ span > < span class ="tok-o "> .</ span > < span class ="tok-na "> has</ span > < span class ="tok-o "> (</ span > < span class ="tok-n "> aRule</ span > < span class ="tok-o "> .</ span > < span class ="tok-na "> sim_type</ span > < span class ="tok-o "> ))</ span > < span class ="tok-o "> {</ span >
695- < span class ="tok-k "> for</ span > < span class ="tok-o "> (</ span > < span class ="tok-n "> cChildObj</ span > < span class ="tok-n "> in</ span > < span class ="tok-n "> cAttr</ span > < span class ="tok-o "> .</ span > < span class ="tok-na "> children</ span > < span class ="tok-o "> )</ span > < span class ="tok-o "> {</ span >
696- < span class ="tok-n "> sChildCObj</ span > < span class ="tok-o "> =</ span > < span class ="tok-n "> rules</ span > < span class ="tok-o "> .</ span > < span class ="tok-na "> execute</ span > < span class ="tok-o "> (</ span > < span class ="tok-n "> aRule</ span > < span class ="tok-o "> .</ span > < span class ="tok-na "> constraintConvRule</ span > < span class ="tok-o "> (</ span > < span class ="tok-n "> cChildObj</ span > < span class ="tok-o "> ));</ span >
697- < span class ="tok-n "> sChildCObjList</ span > < span class ="tok-o "> .</ span > < span class ="tok-na "> append</ span > < span class ="tok-o "> (</ span > < span class ="tok-n "> cChildObj</ span > < span class ="tok-o "> )</ span >
698- < span class ="tok-o "> }</ span >
699- < span class ="tok-o "> }</ span >
695+ < span class ="tok-k "> if</ span > < span class ="tok-p "> (</ span > < span class ="tok-n "> PrimitiveTypes</ span > < span class ="tok-p "> .</ span > < span class ="tok-na "> has</ span > < span class ="tok-p "> (</ span > < span class ="tok-n "> aRule</ span > < span class ="tok-p "> .</ span > < span class ="tok-na "> sim_type</ span > < span class ="tok-p "> ))</ span > < span class ="tok-p "> {</ span >
696+ < span class ="tok-k "> for</ span > < span class ="tok-p "> (</ span > < span class ="tok-n "> cChildObj</ span > < span class ="tok-n "> in</ span > < span class ="tok-n "> cAttr</ span > < span class ="tok-p "> .</ span > < span class ="tok-na "> children</ span > < span class ="tok-p "> )</ span > < span class ="tok-p "> {</ span >
697+ < span class ="tok-n "> sChildCObj</ span > < span class ="tok-o "> =</ span > < span class ="tok-n "> rules</ span > < span class ="tok-p "> .</ span > < span class ="tok-na "> execute</ span > < span class ="tok-p "> (</ span > < span class ="tok-n "> aRule</ span > < span class ="tok-p "> .</ span > < span class ="tok-na "> constraintConvRule</ span > < span class ="tok-p "> (</ span > < span class ="tok-n "> cChildObj</ span > < span class ="tok-p "> ));</ span >
698+ < span class ="tok-n "> sChildCObjList</ span > < span class ="tok-p "> .</ span > < span class ="tok-na "> append</ span > < span class ="tok-p "> (</ span > < span class ="tok-n "> cChildObj</ span > < span class ="tok-p "> )</ span >
699+ < span class ="tok-p "> }</ span >
700+ < span class ="tok-p "> }</ span >
700701 < span class ="tok-c1 "> // otherwise, execute visitor on sub-tree at path to create new C_COMPLEX_OBJECT</ span >
701702 < span class ="tok-k "> else</ span >
702- < span class ="tok-n "> sChildCObjList</ span > < span class ="tok-o "> .</ span > < span class ="tok-na "> extend</ span > < span class ="tok-o "> (</ span > < span class ="tok-n "> visit</ span > < span class ="tok-o "> (</ span > < span class ="tok-n "> aRule</ span > < span class ="tok-o "> .</ span > < span class ="tok-na "> rmPath</ span > < span class ="tok-o "> ));</ span >
703+ < span class ="tok-n "> sChildCObjList</ span > < span class ="tok-p "> .</ span > < span class ="tok-na "> extend</ span > < span class ="tok-p "> (</ span > < span class ="tok-n "> visit</ span > < span class ="tok-p "> (</ span > < span class ="tok-n "> aRule</ span > < span class ="tok-p "> .</ span > < span class ="tok-na "> rmPath</ span > < span class ="tok-p "> ));</ span >
703704
704- < span class ="tok-k "> return</ span > < span class ="tok-n "> sChildCObjList</ span > < span class ="tok-o "> ;</ span >
705- < span class ="tok-o "> }</ span >
706- < span class ="tok-o "> }</ span > </ code > </ pre >
705+ < span class ="tok-k "> return</ span > < span class ="tok-n "> sChildCObjList</ span > < span class ="tok-p "> ;</ span >
706+ < span class ="tok-p "> }</ span >
707+ < span class ="tok-p "> }</ span > </ code > </ pre >
707708</ div >
708709</ div >
709710</ div >
@@ -747,6 +748,5 @@ <h2 id="_instance_conversion"><a class="anchor" href="#_instance_conversion"></a
747748Last updated 2021-03-13 13:19:34 UTC
748749</ div >
749750</ div >
750- < link rel ="stylesheet " href ="https://specifications.openehr.org/styles/pygments-default.css ">
751751</ body >
752752</ html >
0 commit comments