Here’s a breakdown of its key components:
- The root element is
<bioprinting>
, which contains all other elements. <printheads>
defines the different printheads used in the job, each with its own technology and parameters.<materials>
defines the materials used, each associated with a printhead and having its own properties.<print-job-configuration>
specifies how the print job is set up, including layer settings and print sequence.<post-processing>
allows for the definition of post-processing steps.
The schema includes specific types for different aspects of bioprinting:
TechnologyType
enumerates the different printing technologies.BioprintingParametersType
allows for different parameter sets depending on the technology.BioprintingMaterialParametersType
includes general properties, cell properties, characterized data, and bioactive components.MeasurementType
ensures that all numerical values have associated units.
Breakdown of the attributes we’ve defined:
- Root level attributes:
- print-job-id
- Printhead-related attributes:
- id (for printhead)
- name
- technology
- Bioprinting Parameters:
- print-pressure
- nozzle-temperature
- bed-temperature
- chamber-temperature
- print-speed
- droplet-volume
- ejection-frequency
- nozzle diameter
- Material-related attributes:
- id (for material)
- name
- associated-printhead-id
- Material Parameters:
- viscosity
- density
- concentration
- cell-type
- cell-concentration
- passage-number
- power-law-index
- consistency-index
- yield-stress
- storage-modulus
- loss-modulus
- Bioactive Components:
- growth-factor name
- growth-factor concentration
- Print Job Configuration:
- layer-height
- total-layers
- Print Sequence:
- order
- material-id
- printhead-id
- description
- Post-processing:
- order
- description
- Universal attributes:
- unit (used with MeasurementType)
- unit (used with MeasurementType)
Additionally, our schema allows for extensibility in several areas. For example:
- Multiple printheads can be defined, each with its own set of parameters.
- Multiple materials can be defined, each with its own properties.
- Multiple growth factors can be specified for each material.
- Multiple print steps and post-processing steps can be defined.
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://example.com/3dmanufacturing/bioprinting/2023/06"
xmlns="http://example.com/3dmanufacturing/bioprinting/2023/06"
elementFormDefault="qualified">
<xs:element name="bioprinting">
<xs:complexType>
<xs:sequence>
<xs:element name="printheads" type="PrintheadsType"/>
<xs:element name="materials" type="MaterialsType"/>
<xs:element name="print-job-configuration" type="PrintJobConfigurationType"/>
<xs:element name="post-processing" type="PostProcessingType" minOccurs="0"/>
</xs:sequence>
<xs:attribute name="print-job-id" type="xs:string" use="required"/>
</xs:complexType>
</xs:element>
<xs:complexType name="PrintheadsType">
<xs:sequence>
<xs:element name="printhead" type="PrintheadType" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="PrintheadType">
<xs:sequence>
<xs:element name="name" type="xs:string"/>
<xs:element name="technology" type="TechnologyType"/>
<xs:element name="bioprinting-parameters" type="BioprintingParametersType"/>
</xs:sequence>
<xs:attribute name="id" type="xs:positiveInteger" use="required"/>
</xs:complexType>
<xs:simpleType name="TechnologyType">
<xs:restriction base="xs:string">
<xs:enumeration value="pressure-assisted-extrusion"/>
<xs:enumeration value="inkjet"/>
<xs:enumeration value="laser-assisted"/>
<xs:enumeration value="melt-electrowriting"/>
</xs:restriction>
</xs:simpleType>
<xs:complexType name="BioprintingParametersType">
<xs:choice maxOccurs="unbounded">
<xs:element name="pressure-control" type="PressureControlType" minOccurs="0"/>
<xs:element name="temperature-control" type="TemperatureControlType" minOccurs="0"/>
<xs:element name="motion-control" type="MotionControlType" minOccurs="0"/>
<xs:element name="droplet-control" type="DropletControlType" minOccurs="0"/>
<xs:element name="nozzle-properties" type="NozzlePropertiesType" minOccurs="0"/>
</xs:choice>
</xs:complexType>
<xs:complexType name="PressureControlType">
<xs:sequence>
<xs:element name="print-pressure" type="MeasurementType"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="TemperatureControlType">
<xs:choice maxOccurs="unbounded">
<xs:element name="nozzle-temperature" type="MeasurementType" minOccurs="0"/>
<xs:element name="bed-temperature" type="MeasurementType" minOccurs="0"/>
<xs:element name="chamber-temperature" type="MeasurementType" minOccurs="0"/>
</xs:choice>
</xs:complexType>
<xs:complexType name="MotionControlType">
<xs:sequence>
<xs:element name="print-speed" type="MeasurementType"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="DropletControlType">
<xs:sequence>
<xs:element name="droplet-volume" type="MeasurementType"/>
<xs:element name="ejection-frequency" type="MeasurementType"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="NozzlePropertiesType">
<xs:sequence>
<xs:element name="diameter" type="MeasurementType"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="MaterialsType">
<xs:sequence>
<xs:element name="material" type="MaterialType" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="MaterialType">
<xs:sequence>
<xs:element name="name" type="xs:string"/>
<xs:element name="associated-printhead-id" type="xs:positiveInteger"/>
<xs:element name="bioprinting-material-parameters" type="BioprintingMaterialParametersType"/>
</xs:sequence>
<xs:attribute name="id" type="xs:positiveInteger" use="required"/>
</xs:complexType>
<xs:complexType name="BioprintingMaterialParametersType">
<xs:sequence>
<xs:element name="general-properties" type="GeneralPropertiesType"/>
<xs:element name="cell-properties" type="CellPropertiesType" minOccurs="0"/>
<xs:element name="characterized-bioink-data" type="CharacterizedBioinkDataType" minOccurs="0"/>
<xs:element name="bioactive-components" type="BioactiveComponentsType" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="GeneralPropertiesType">
<xs:sequence>
<xs:element name="viscosity" type="MeasurementType" minOccurs="0"/>
<xs:element name="density" type="MeasurementType" minOccurs="0"/>
<xs:element name="concentration" type="MeasurementType" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="CellPropertiesType">
<xs:sequence>
<xs:element name="cell-type" type="xs:string"/>
<xs:element name="cell-concentration" type="MeasurementType"/>
<xs:element name="passage-number" type="xs:positiveInteger" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="CharacterizedBioinkDataType">
<xs:sequence>
<xs:element name="shear-thinning-behavior" type="ShearThinningBehaviorType" minOccurs="0"/>
<xs:element name="yield-stress" type="MeasurementType" minOccurs="0"/>
<xs:element name="storage-modulus" type="MeasurementType" minOccurs="0"/>
<xs:element name="loss-modulus" type="MeasurementType" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="ShearThinningBehaviorType">
<xs:sequence>
<xs:element name="power-law-index" type="xs:decimal"/>
<xs:element name="consistency-index" type="MeasurementType" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="BioactiveComponentsType">
<xs:sequence>
<xs:element name="growth-factor" type="GrowthFactorType" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="GrowthFactorType">
<xs:sequence>
<xs:element name="name" type="xs:string"/>
<xs:element name="concentration" type="MeasurementType"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="PrintJobConfigurationType">
<xs:sequence>
<xs:element name="layer-settings" type="LayerSettingsType"/>
<xs:element name="print-sequence" type="PrintSequenceType"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="LayerSettingsType">
<xs:sequence>
<xs:element name="layer-height" type="MeasurementType"/>
<xs:element name="total-layers" type="xs:positiveInteger"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="PrintSequenceType">
<xs:sequence>
<xs:element name="step" type="PrintStepType" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="PrintStepType">
<xs:sequence>
<xs:element name="order" type="xs:positiveInteger"/>
<xs:element name="material-id" type="xs:positiveInteger"/>
<xs:element name="printhead-id" type="xs:positiveInteger"/>
<xs:element name="description" type="xs:string"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="PostProcessingType">
<xs:sequence>
<xs:element name="step" type="PostProcessingStepType" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="PostProcessingStepType">
<xs:sequence>
<xs:element name="order" type="xs:positiveInteger"/>
<xs:element name="description" type="xs:string"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="MeasurementType">
<xs:simpleContent>
<xs:extension base="xs:decimal">
<xs:attribute name="unit" type="xs:string" use="required"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:schema>
Example of Bioprinting Parameters for Multiple Materials and Printheads
Key features of this structure:
- Printheads: Each printhead has its own ID, technology type, and specific bioprinting parameters.
- Materials: Each material is associated with a specific printhead and has its own set of material parameters.
- Print Job Configuration: This section describes how the printheads and materials are used together, including layer settings and print sequence.
- Flexibility: This structure can accommodate any number of printheads and materials, each with their own unique parameters.
- Technology-Specific Parameters: Different parameter sets can be defined for different printing technologies (e.g., pressure control for extrusion, droplet control for inkjet).
<b:bioprinting print-job-id="multi-material-multi-technology-construct">
<b:printheads>
<b:printhead id="1">
<b:name>Pressure-assisted extruder</b:name>
<b:technology>pressure-assisted-extrusion</b:technology>
<b:bioprinting-parameters>
<b:pressure-control>
<b:print-pressure unit="kPa">30</b:print-pressure>
</b:pressure-control>
<b:temperature-control>
<b:nozzle-temperature unit="celsius">37</b:nozzle-temperature>
</b:temperature-control>
<b:motion-control>
<b:print-speed unit="mm/s">10</b:print-speed>
</b:motion-control>
<b:nozzle-properties>
<b:diameter unit="mm">0.3</b:diameter>
</b:nozzle-properties>
</b:bioprinting-parameters>
</b:printhead>
<b:printhead id="2">
<b:name>Inkjet dispenser</b:name>
<b:technology>inkjet</b:technology>
<b:bioprinting-parameters>
<b:droplet-control>
<b:droplet-volume unit="pL">10</b:droplet-volume>
<b:ejection-frequency unit="Hz">5000</b:ejection-frequency>
</b:droplet-control>
<b:temperature-control>
<b:printhead-temperature unit="celsius">30</b:printhead-temperature>
</b:temperature-control>
<b:motion-control>
<b:print-speed unit="mm/s">50</b:print-speed>
</b:motion-control>
</b:bioprinting-parameters>
</b:printhead>
</b:printheads>
<b:materials>
<b:material id="1">
<b:name>Cell-laden hydrogel</b:name>
<b:associated-printhead-id>1</b:associated-printhead-id>
<b:bioprinting-material-parameters>
<b:general-properties>
<b:viscosity unit="mPa·s">300</b:viscosity>
<b:density unit="g/cm³">1.05</b:density>
<b:concentration unit="percent">2</b:concentration>
</b:general-properties>
<b:cell-properties>
<b:cell-type>chondrocytes</b:cell-type>
<b:cell-concentration unit="cells/mL">1000000</b:cell-concentration>
</b:cell-properties>
<b:characterized-bioink-data>
<b:shear-thinning-behavior>
<b:power-law-index>0.6</b:power-law-index>
</b:shear-thinning-behavior>
<!-- Other characterized data -->
</b:characterized-bioink-data>
</b:bioprinting-material-parameters>
</b:material>
<b:material id="2">
<b:name>Growth factor solution</b:name>
<b:associated-printhead-id>2</b:associated-printhead-id>
<b:bioprinting-material-parameters>
<b:general-properties>
<b:viscosity unit="mPa·s">1.5</b:viscosity>
<b:density unit="g/cm³">1.00</b:density>
</b:general-properties>
<b:bioactive-components>
<b:growth-factor>
<b:name>TGF-beta</b:name>
<b:concentration unit="ng/mL">100</b:concentration>
</b:growth-factor>
</b:bioactive-components>
<b:characterized-bioink-data>
<b:surface-tension unit="mN/m">72</b:surface-tension>
<!-- Other characterized data -->
</b:characterized-bioink-data>
</b:bioprinting-material-parameters>
</b:material>
</b:materials>
<b:print-job-configuration>
<b:layer-settings>
<b:layer-height unit="mm">0.1</b:layer-height>
<b:total-layers>50</b:total-layers>
</b:layer-settings>
<b:print-sequence>
<b:step>
<b:order>1</b:order>
<b:material-id>1</b:material-id>
<b:printhead-id>1</b:printhead-id>
<b:description>Print cell-laden hydrogel frame</b:description>
</b:step>
<b:step>
<b:order>2</b:order>
<b:material-id>2</b:material-id>
<b:printhead-id>2</b:printhead-id>
<b:description>Deposit growth factor solution in specific patterns</b:description>
</b:step>
</b:print-sequence>
</b:print-job-configuration>
<b:post-processing>
<b:step>
<b:order>1</b:order>
<b:description>UV crosslinking of hydrogel, 30 seconds</b:description>
</b:step>
<!-- Other post-processing steps -->
</b:post-processing>
</b:bioprinting>