← Back to team overview

mlhim-specs-dev team mailing list archive

[Branch ~cdd-dev/cdd/trunk] Rev 261: Cleaned up some formatting. Moved ElementType to mlhim2RM.

 

------------------------------------------------------------
revno: 261
committer: Timothy W. Cook <timothywayne.cook@xxxxxxxxx>
branch nick: cdd
timestamp: Wed 2012-09-19 21:38:24 -0300
message:
  Cleaned up some formatting. Moved ElementType to mlhim2RM.
removed:
  src/xls2ccd/examples/Laboratory Test Results.zip
modified:
  src/xls2ccd/mlhim2RM.py
  src/xls2ccd/xls2ccd.py


--
lp:cdd
https://code.launchpad.net/~cdd-dev/cdd/trunk

Your team MLHIM Specifications Developers is subscribed to branch lp:cdd.
To unsubscribe from this branch go to https://code.launchpad.net/~cdd-dev/cdd/trunk/+edit-subscription
=== removed file 'src/xls2ccd/examples/Laboratory Test Results.zip'
Binary files src/xls2ccd/examples/Laboratory Test Results.zip	2012-09-15 22:10:45 +0000 and src/xls2ccd/examples/Laboratory Test Results.zip	1970-01-01 00:00:00 +0000 differ
=== modified file 'src/xls2ccd/mlhim2RM.py'
--- src/xls2ccd/mlhim2RM.py	2012-09-18 17:09:07 +0000
+++ src/xls2ccd/mlhim2RM.py	2012-09-20 00:38:24 +0000
@@ -195,6 +195,44 @@
     return (complexTypes,elements)
 #====================================================================
 
+
+def getCareEntryType(data_name, ct_name, docs, d_id, e_data_type, indent=0):
+    """
+    data_name - string to use for data_name
+    ct_name - uuid string for complexType.name
+    docs - string for documentation
+    indent - number of spaces to indent first line
+    """
+    defin_str = ''
+    padding = ('').rjust(indent)
+
+    defin_str = '\n\n'+padding.rjust(indent) + ("<xs:complexType name='ct-"+ct_name+"'>\n")
+    defin_str += padding.rjust(indent+2) + ("<xs:complexContent>\n")
+    defin_str += padding.rjust(indent+4) + ("<xs:restriction base='mlhim2:EntryType'>\n")
+    defin_str += padding.rjust(indent+6) + ("<xs:sequence>\n")
+    #Locatable
+    defin_str += padding.rjust(indent+8) + ("<xs:element maxOccurs='unbounded' minOccurs='0' ref='mlhim2:links'/>\n")
+    defin_str += padding.rjust(indent+8) + ("<xs:element maxOccurs='1' minOccurs='0' ref='mlhim2:feeder-audit'/>\n")
+    #Entry
+    defin_str += padding.rjust(indent+8) + ("<xs:element maxOccurs='1' minOccurs='1' name='language' type='xs:language' default='en-US'/>\n")
+    defin_str += padding.rjust(indent+8) + ("<xs:element maxOccurs='1' minOccurs='1' name='encoding' type='xs:string' default='utf-8'/>\n")
+    defin_str += padding.rjust(indent+8) + ("<xs:element maxOccurs='1' minOccurs='1' ref='mlhim2:entry-subject'/>\n")
+    defin_str += padding.rjust(indent+8) + ("<xs:element maxOccurs='1' minOccurs='0' ref='mlhim2:entry-provider'/>\n")
+    defin_str += padding.rjust(indent+8) + ("<xs:element maxOccurs='unbounded' minOccurs='0' ref='mlhim2:other-participations'/>\n")
+    defin_str += padding.rjust(indent+8) + ("<xs:element maxOccurs='1' minOccurs='0' ref='mlhim2:protocol-id'/>\n")
+    defin_str += padding.rjust(indent+8) + ("<xs:element maxOccurs='1' minOccurs='0' name='current-state' type='xs:string'/>\n")
+    defin_str += padding.rjust(indent+8) + ("<xs:element maxOccurs='1' minOccurs='0' ref='mlhim2:workflow-id'/>\n")
+    defin_str += padding.rjust(indent+8) + ("<xs:element maxOccurs='1' minOccurs='0' ref='mlhim2:attestation'/>\n")
+    defin_str += padding.rjust(indent+8) + ("<xs:element maxOccurs='1' minOccurs='1' ref='mlhim2:entry-data'/>\n")
+
+    defin_str += padding.rjust(indent+6) + ("</xs:sequence>\n")
+    defin_str += padding.rjust(indent+4) + ("</xs:restriction>\n")
+    defin_str += padding.rjust(indent+2) + ("</xs:complexContent>\n")
+    defin_str += padding.rjust(indent) + ("</xs:complexType>\n")
+
+    return defin_str
+
+
 def getDvBooleanType(data_name, ct_name, bool_values, docs, indent=0):
     """
     data_name - string to use for data_name
@@ -358,7 +396,7 @@
     return dt_str
 
 
-def getDvCountType(data_name, ct_name, uom, docs, indent=0):
+def getDvCountType(data_name, ct_name, uom, docs, rr_def, dvi_list, indent=0):
     """
     data_name - string to use for data_name
     ct_name - uuid string for complexType.name
@@ -367,6 +405,8 @@
     indent - number of spaces to indent first line
     """
     padding = ('').rjust(indent)
+    nr_id = str(uuid.uuid4())
+    orr_id = str(uuid.uuid4())
 
     dt_str = '\n\n'+padding.rjust(indent) + ("<xs:complexType name='ct-"+ct_name+"'>\n")
     dt_str += padding.rjust(indent+2) + ("<xs:complexContent>\n")
@@ -378,8 +418,10 @@
     dt_str += padding.rjust(indent+8) + ("<xs:element maxOccurs='1' minOccurs='0' name='valid-time-begin' type='xs:dateTime'/>\n")
     dt_str += padding.rjust(indent+8) + ("<xs:element maxOccurs='1' minOccurs='0' name='valid-time-end' type='xs:dateTime'/>\n")
     #DvOrdered
-    dt_str += padding.rjust(indent+8) + ("<xs:element maxOccurs='1' minOccurs='0' ref='mlhim2:normal-range'/>\n")
-    dt_str += padding.rjust(indent+8) + ("<xs:element maxOccurs='unbounded' minOccurs='0' ref='mlhim2:other-reference-ranges'/>\n")
+    dt_str += padding.rjust(indent+8) + ("<xs:element maxOccurs='1' minOccurs='0' ref='mlhim2:el-"+nr_id+"'/>\n")
+
+    dt_str += padding.rjust(indent+8) + ("<xs:element maxOccurs='unbounded' minOccurs='0' ref='mlhim2:el-"+orr_id+"'/>\n")
+
     dt_str += padding.rjust(indent+8) + ("<xs:element maxOccurs='1' minOccurs='0' name='normal-status' type='xs:string'/>\n")
     #DvQuantified
     dt_str += padding.rjust(indent+8) + ("<xs:element maxOccurs='1' minOccurs='1'  name='magnitude' type='xs:decimal'/>\n")
@@ -413,6 +455,13 @@
     dt_str += padding.rjust(indent+4) + ("</xs:complexContent>\n")
     dt_str += padding.rjust(indent+2) + ("</xs:complexType>\n")
 
+    dt_str += padding.rjust(indent+2) + ("<xs:element name='el-"+nr_id+"' substitutionGroup='mlhim2:normal-range' type='mlhim2:ct-"+nr_id+"'/>\n")
+
+    dt_str += padding.rjust(indent+2) + ("<xs:element name='el-"+orr_id+"' substitutionGroup='mlhim2:other-reference-ranges' type='mlhim2:ct-"+orr_id+"'/>\n")
+
+    dt_str += getReferenceRangeType(data_name, nr_id, rr_def, dvi_list, docs, indent)
+    dt_str += getReferenceRangeType(data_name, orr_id, rr_def, dvi_list, docs, indent)
+
     return dt_str
 
 
@@ -460,6 +509,58 @@
 
     return dt_str
 
+def getDvIntervalType(data_name, ct_name, docs, indent, dvi_list):
+    """
+    data_name - string to use for data_name
+    ct_name - uuid string for complexType.name
+    docs - string for documentation
+    indent - number of spaces to indent first line
+    dvi_list - a list containing the data items and the type for DvInterval
+               the order and defaults are:
+               datatype = 'int'
+               lower = 0
+               upper = 0
+               lower-included = 1
+               upper-included = 1
+               lower-unbounded = 0
+               upper-unbounded = 0
+    """
+    if not indent: indent = 0
+    padding = ('').rjust(indent)
+
+    if not dvi_list or len(dvi_list) != 7:
+        dvi_list = ['xs:int','0','0','1','1','0','0']
+
+    # Must be an ordered type
+    if dvi_list[0] not in ['xs:int', 'xs:decimal','xs:date','xs:time','xs:datetime','xs:gDay','xs:gMonth','xs:gYear','xs:gMonthDay','xs:gMonthYear','xs:byte','xs:integer','xs:long','xs:short','xs:negativeInteger','xs:nonNegativeInteger','xs:nonPositiveInteger','xs:positiveInteger','xs:unsignedLong','xs:unsignedInt','xs:unsignedShort','xs:unsignedByte','xs:double','xs:float']:
+        raise TypeError("Invalid Type for DvInterval. "+repr(dvi_list[0])+" is not an ordered type.")
+
+
+    dt_str = '\n\n'+padding.rjust(indent) + ("<xs:complexType name='ct-"+ct_name+"'>\n")
+    dt_str += padding.rjust(indent+2) + ("<xs:complexContent>\n")
+    dt_str += padding.rjust(indent+4) + ("<xs:restriction base='mlhim2:DvIntervalType'>\n")
+    dt_str += padding.rjust(indent+6) + ("<xs:sequence>\n")
+    #DvAny
+    dt_str += padding.rjust(indent+8) + ("<xs:element maxOccurs='1' minOccurs='1' name='data-name' type='xs:string' fixed='"+data_name+"'/>\n")
+    dt_str += padding.rjust(indent+8) + ("<xs:element maxOccurs='1' minOccurs='0' ref='mlhim2:ExceptionalValue'/>\n")
+    dt_str += padding.rjust(indent+8) + ("<xs:element maxOccurs='1' minOccurs='0' name='valid-time-begin' type='xs:dateTime'/>\n")
+    dt_str += padding.rjust(indent+8) + ("<xs:element maxOccurs='1' minOccurs='0' name='valid-time-end' type='xs:dateTime'/>\n")
+    #DvInterval
+    dt_str += padding.rjust(indent+8) + ("<xs:element maxOccurs='1' minOccurs='1' name='lower' type='"+dvi_list[0]+"' fixed='"+dvi_list[1]+"'/>\n")
+    dt_str += padding.rjust(indent+8) + ("<xs:element maxOccurs='1' minOccurs='1'  name='upper' type='"+dvi_list[0]+"' fixed='"+dvi_list[2]+"'/>\n")
+    dt_str += padding.rjust(indent+8) + ("<xs:element maxOccurs='1' minOccurs='1' name='lower-included' type='xs:boolean' fixed='"+dvi_list[3]+"'/>\n")
+    dt_str += padding.rjust(indent+8) + ("<xs:element maxOccurs='1' minOccurs='1' name='upper-included' type='xs:boolean' fixed='"+dvi_list[4]+"'/>\n")
+    dt_str += padding.rjust(indent+8) + ("<xs:element maxOccurs='1' minOccurs='1' name='lower-unbounded' type='xs:boolean' fixed='"+dvi_list[5]+"'/>\n")
+    dt_str += padding.rjust(indent+8) + ("<xs:element maxOccurs='1' minOccurs='1' name='upper-unbounded'  type='xs:boolean' fixed='"+dvi_list[6]+"'/>\n")
+
+    dt_str += padding.rjust(indent+8) + ("</xs:sequence>\n")
+    dt_str += padding.rjust(indent+6) + ("</xs:restriction>\n")
+    dt_str += padding.rjust(indent+4) + ("</xs:complexContent>\n")
+    dt_str += padding.rjust(indent+2) + ("</xs:complexType>\n")
+
+    return dt_str
+
+
 def getDvQuantityType(data_name, ct_name, docs, indent, ta,tn,tv,tc,cs):
     """
     data_name - string to use for data_name
@@ -614,3 +715,57 @@
 
     return dt_str
 
+def getElementType(e_id, d_id, indent):
+    defin_str = ''
+    padding = ('').rjust(indent)
+    defin_str += padding.rjust(indent) + ("<xs:complexType name='ct-"+e_id+"'>\n")
+    defin_str += padding.rjust(indent+2) + ("<xs:complexContent>\n")
+    defin_str += padding.rjust(indent+4) + ("<xs:restriction base='mlhim2:ElementType'>\n")
+    defin_str += padding.rjust(indent+6) + ("<xs:sequence>\n")
+    defin_str += padding.rjust(indent+8) + ("<xs:element  maxOccurs='1' minOccurs='1' ref='mlhim2:el-"+d_id+"'/>\n")
+    defin_str += padding.rjust(indent+6) + ("</xs:sequence>\n")
+    defin_str += padding.rjust(indent+4) + ("</xs:restriction>\n")
+    defin_str += padding.rjust(indent+2) + ("</xs:complexContent>\n")
+    defin_str += padding.rjust(indent) + ("</xs:complexType>\n")
+    defin_str += padding.rjust(indent) + ("<xs:element name='el-"+d_id+"' substitutionGroup='mlhim2:Element-dv' type='mlhim2:ct-"+d_id+"'/>\n")
+
+    return defin_str
+
+
+def getReferenceRangeType(data_name, ct_name, rr_def, dvi_list, docs, indent):
+    """
+    data_name - string to use for data_name
+    ct_name - uuid string for complexType.name
+    rr_def - ReferenceRange-definition, the default is 'normal'
+    dvi_list - a list containing the values for DvIntervalType
+    docs - string for documentation
+    indent - number of spaces to indent first line
+    """
+    if not rr_def:
+        rr_def = "normal"
+    dvi_id = str(uuid.uuid4())
+
+    padding = ('').rjust(indent)
+
+    dt_str = '\n\n'+padding.rjust(indent) + ("<xs:complexType name='ct-"+ct_name+"'>\n")
+    dt_str += padding.rjust(indent+2) + ("<xs:complexContent>\n")
+    dt_str += padding.rjust(indent+4) + ("<xs:restriction base='mlhim2:ReferenceRangeType'>\n")
+    dt_str += padding.rjust(indent+6) + ("<xs:sequence>\n")
+    #DvAny
+    dt_str += padding.rjust(indent+8) + ("<xs:element maxOccurs='1' minOccurs='1' name='data-name' type='xs:string' fixed='"+data_name+"'/>\n")
+    dt_str += padding.rjust(indent+8) + ("<xs:element maxOccurs='1' minOccurs='0' ref='mlhim2:ExceptionalValue'/>\n")
+    dt_str += padding.rjust(indent+8) + ("<xs:element maxOccurs='1' minOccurs='0' name='valid-time-begin' type='xs:dateTime'/>\n")
+    dt_str += padding.rjust(indent+8) + ("<xs:element maxOccurs='1' minOccurs='0' name='valid-time-end' type='xs:dateTime'/>\n")
+    #ReferenceRange
+    dt_str += padding.rjust(indent+8) + ("<xs:element maxOccurs='1' minOccurs='1' name='ReferenceRange-definition' type='xs:string' fixed='"+rr_def+"'/>\n")
+    dt_str += padding.rjust(indent+8) + ("<xs:element maxOccurs='1' minOccurs='1' ref='mlhim2:el-"+dvi_id+"'/>\n")
+    dt_str += padding.rjust(indent+8) + ("</xs:sequence>\n")
+    dt_str += padding.rjust(indent+6) + ("</xs:restriction>\n")
+    dt_str += padding.rjust(indent+4) + ("</xs:complexContent>\n")
+    dt_str += padding.rjust(indent+2) + ("</xs:complexType>\n")
+
+    dt_str += padding.rjust(indent+2) + ("<xs:element name='el-"+dvi_id+"' substitutionGroup='mlhim2:data-range' type='mlhim2:ct-"+dvi_id+"'/>\n\n")
+
+    dt_str += getDvIntervalType(data_name, dvi_id, docs, indent, dvi_list)
+
+    return dt_str

=== modified file 'src/xls2ccd/xls2ccd.py'
--- src/xls2ccd/xls2ccd.py	2012-09-18 17:09:07 +0000
+++ src/xls2ccd/xls2ccd.py	2012-09-20 00:38:24 +0000
@@ -107,13 +107,15 @@
 
     #MLHIM ElementType
     e_id = str(uuid.uuid4())
-    ect = "ct-"+ e_id # complexType
-    e_el = "el-"+ e_id # element
 
     #MLHIM DataType
     d_id = str(uuid.uuid4())
-    dct = "ct-"+ d_id # complexType
-    d_el = "el-"+ d_id # element
+
+    defin_type = "ElementType"
+    defin_str = ''
+
+    # if the defin_type is an Entry type this is the entry-data type
+    e_data_type = "ClusterType"
 
     schema = ccd_id + ".xsd"
 
@@ -155,9 +157,9 @@
 
     xsd_file.write("""<?xml version="1.0" encoding="UTF-8"?>
 <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema";
-           xmlns:mlhim2="http://www.mlhim.org/xmls/mlhim2/2_4_0";
+           xmlns:mlhim2="http://www.mlhim.org/xmlns/mlhim2/2_4_0";
            elementFormDefault="qualified"
-           targetNamespace="http://www.mlhim.org/xmls/mlhim2/2_4_0";
+           targetNamespace="http://www.mlhim.org/xmlns/mlhim2/2_4_0";
            xmlns:data-view="http://www.w3.org/2003/g/data-view#";
            data-view:transformation="http://www.mlhim.org/ccd/ccd_md_view.xsl";>
 
@@ -190,7 +192,7 @@
      </xs:appinfo>
     </xs:annotation>
 
-    <xs:include schemaLocation="http://www.mlhim.org/xmls/mlhim2/2_4_0/mlhim2.xsd"/>
+    <xs:include schemaLocation="http://www.mlhim.org/xmlns/mlhim2/2_4_0/mlhim2.xsd"/>
 
     <xs:element name='"""+ccd_id+"""' type="mlhim2:"""+ccdct+""""/>
 
@@ -198,23 +200,20 @@
       <xs:complexContent>
         <xs:restriction base="mlhim2:CCDType">
         <xs:sequence>
-          <xs:element maxOccurs="1" minOccurs="1" ref="mlhim2:"""+e_el+""""/>
-        </xs:sequence>
-        </xs:restriction>
-      </xs:complexContent>
-    </xs:complexType>
-    <xs:element name='"""+e_el+"""' substitutionGroup="mlhim2:definition" type='mlhim2:"""+ect+"""'/>
-
-    <xs:complexType name='"""+ect+"""'>
-      <xs:complexContent>
-        <xs:restriction base="mlhim2:ElementType">
-        <xs:sequence>
-          <xs:element  maxOccurs="1" minOccurs="1" ref="mlhim2:"""+d_el+""""/>
-        </xs:sequence>
-        </xs:restriction>
-      </xs:complexContent>
-    </xs:complexType>
-    <xs:element name='el-"""+d_id+"""' substitutionGroup="mlhim2:Element-dv" type='mlhim2:ct-"""+d_id+"""'/>""")
+          <xs:element maxOccurs="1" minOccurs="1" ref="mlhim2:el-"""+e_id+""""/>
+        </xs:sequence>
+        </xs:restriction>
+      </xs:complexContent>
+    </xs:complexType>
+    <xs:element name='el-"""+e_id+"""' substitutionGroup="mlhim2:definition" type='mlhim2:ct-"""+e_id+"""'/>""")
+
+
+    if defin_type == "ElementType":
+        indent = 4
+        xsd_file.write(mlhim2RM.getElementType(e_id, d_id, indent))
+    elif defin_type == "CareEntryType":
+        indent = 4
+        xsd_file.write(mlhim2RM.getCareEntryType(data_name, e_id, docs, d_id, e_data_type, indent))
 
 
     if dt == "DvBooleanType":
@@ -227,7 +226,9 @@
     elif dt == "DvCountType":
         default = None
         indent = 4
-        xsd_file.write(mlhim2RM.getDvCountType(data_name, d_id, uom, dt_docs, indent))
+        dvi_list = []
+        rr_def = ''
+        xsd_file.write(mlhim2RM.getDvCountType(data_name, d_id, uom, dt_docs, rr_def, dvi_list, indent))
 
     elif dt == "DvDateType":
         default = None