mlhim-specs-dev team mailing list archive
-
mlhim-specs-dev team
-
Mailing list archive
-
Message #00741
[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