NIEM / NIEM-Releases

Repository for releases of the National Information Exchange Model
https://niem.github.io/niem-releases/
87 stars 23 forks source link

Update Biometrics component definitions and restore 4.1 DNAPedigree components #227

Closed cdmgtri closed 2 years ago

cdmgtri commented 2 years ago

DNAPedigree and DNAPedigreeType and its components should be restored to the NIEM 5.1 schema.

Note: These should be included in addition to the updated PedigreeType already in 5.1.

From 4.1:

  <xs:simpleType name="DNAPedigreeMemberStatusCodeSimpleType">
    <xs:annotation>
      <xs:documentation>A data type for a DNA pedigree member status code</xs:documentation>
    </xs:annotation>
    <xs:restriction base="xs:token">
      <xs:enumeration value="K">
        <xs:annotation>
          <xs:documentation>Known</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="U">
        <xs:annotation>
          <xs:documentation>Unknown</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
    </xs:restriction>
  </xs:simpleType>

  <xs:complexType name="DNAPedigreeMemberStatusCodeType">
    <xs:annotation>
      <xs:documentation>A data type for a DNA pedigree member status code</xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="biom:DNAPedigreeMemberStatusCodeSimpleType">
        <xs:attributeGroup ref="structures:SimpleObjectAttributeGroup"/>
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:complexType name="DNAPedigreeType">
    <xs:annotation>
      <xs:documentation>A data type for a description of a pedigree originating and held at a DNA laboratory</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="structures:ObjectType">
        <xs:sequence>
          <xs:element ref="biom:DNAPedigreeID" minOccurs="0" maxOccurs="unbounded"/>
          <xs:element ref="biom:DNAPedigreeMemberIndexNumeric" minOccurs="0" maxOccurs="unbounded"/>
          <xs:element ref="biom:DNAPedigreeMemberStatusCode" minOccurs="0" maxOccurs="unbounded"/>
          <xs:element ref="biom:DNAPedigreeSampleID" minOccurs="0" maxOccurs="unbounded"/>
          <xs:element ref="biom:DNAPedigreeFatherIndexNumeric" minOccurs="0" maxOccurs="unbounded"/>
          <xs:element ref="biom:DNAPedigreeMotherIndexNumeric" minOccurs="0" maxOccurs="unbounded"/>
          <xs:element ref="biom:DNAPedigreeCommentText" minOccurs="0" maxOccurs="unbounded"/>
          <xs:element ref="biom:DNAPedigreeAugmentationPoint" minOccurs="0" maxOccurs="unbounded"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:element name="DNAPedigree" type="biom:DNAPedigreeType" nillable="true">
    <xs:annotation>
      <xs:documentation>A description of a pedigree originating and held at a DNA laboratory</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:element name="DNAPedigreeAugmentationPoint" abstract="true">
    <xs:annotation>
      <xs:documentation>An augmentation point for DNAPedigree</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:element name="DNAPedigreeCommentText" type="nc:TextType" nillable="true">
    <xs:annotation>
      <xs:documentation>A descriptive comment about a DNA pedigree</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:element name="DNAPedigreeFatherIndexNumeric" type="biom:Integer0to999Type" nillable="true">
    <xs:annotation>
      <xs:documentation>An index number that refers to the father of the subject of this DNA pedigree</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:element name="DNAPedigreeID" type="nc:TextType" nillable="true">
    <xs:annotation>
      <xs:documentation>An identifier (i.e., file number) of a DNA pedigree</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:element name="DNAPedigreeMemberIndexNumeric" type="nc:TextType" nillable="true">
    <xs:annotation>
      <xs:documentation>An index that refers to the DNA subject of the transaction and provides the ability to link pedigree information.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:element name="DNAPedigreeMemberStatusCode" type="biom:DNAPedigreeMemberStatusCodeType" nillable="true">
    <xs:annotation>
      <xs:documentation>A status of a subject of a DNA pedigree</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:element name="DNAPedigreeMotherIndexNumeric" type="biom:Integer0to999Type" nillable="true">
    <xs:annotation>
      <xs:documentation>An index number that refers to the mother of a subject of this DNA pedigree</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:element name="DNAPedigreeSampleID" type="nc:TextType" nillable="true">
    <xs:annotation>
      <xs:documentation>An Identifier for a DNA sample linking it to this related pedigree</xs:documentation>
    </xs:annotation>
  </xs:element>

Revise documentation in accordance with NIEM Naming and Design Rules 5.0, Section 7.4

  1. Remove "DNAProcess is added in NIEM 5.1 to replace ProcessAnnotation in the future. This is because DNA processes/operations contain information on DNA instrument and potentially expert systems. The data architecture of ProcessAnnotation supports generic biometric processes/operations but not required DNA process fields." from the documentation of DNAProcess.

  2. Remove "This element has the IdentificationType because a DNACartridge may have multiple DNACartridgeIdentification elements and need the IdentificationCategoryDescriptionText filed of the IdentificationType to differentiate one DNACartridgeIdentification from another." from the documentation of DNACartridgeIdentification. Note: CR has "An identification of a DNA cartridge." which is too brief. I've received questions from developers about this field. The definition should be the first part of the documentation in the schema. I've updated the CR accordingly.

  3. Remove "DNASampleCollection is added in NIEM 5.1 to replace BiometricCapture in the future. This is because DNA sample collection contains information unique to DNA collection (e.g. whether the collection was from a mobile object such as a gun or a stationary location such as the floor; the person and the organization who collected the DNA sample; etc). It is more effective to exchange the relevant information in specific DNASampleCollection fields than in generic biometric capture fields of BiometricCapture." from the documentation of DNASampleCollection.

  4. Remove "DNALocus is added in NIEM 5.1 to replace DNASTRProfile in the future. This is because the name and the data architecture of DNASTRProfile does not align with the required information for exchanging STR locus data." from the documentation of DNALocus.

  5. Remove "DNALocusCategoryCode is added in NIEM 5.1 to replace DNASTRProfileCategoryCode in the future. This is because The category autosomal, X-STR, Y-STR is at the locus level instead of the sample/STR profile level. An STR profile may contain both autosomal and Y-STR loci. The data architecture of DNASTRProfileCategoryCode does not support such scenario. " from the documentation of DNALocusCategoryCode.

  6. Remove "DNALocusName is added in NIEM 5.1 to replace DNALocusReferenceID in the future. This is because a locus name is more readable than a numerical reference code. It makes testing/verification and troubleshooting of the data exchange file easier. " from the documentation of DNALocusName.

  7. Remove "DNALocusQualityStatusCode is added in NIEM 5.1 to replace DNAAlleleIndicator in the future. This is because the true/false indicator does not fully convey the quality status of a DNA locus. " from the documentation of DNALocusQualityStatusCode.

  8. Remove "DNASTRProfilePartialIndicator is added in NIEM 5.1 to replace DNALocusAnalysisIndicator in the future. This is because the DNASTRProfilePartialIndicator value and the kit information represent a partial profile better than DNALocusAnalysisIndicator. " from the documentation of DNASTRProfilePartialIndicator.

  9. Remove "DNAAllele is added in NIEM 5.1 to replace DNAAlleleCall1Text, DNAAlleleCall2Text, and DNAAlleleCall3Text in the future. This is because for a mixture, a locus can have more than 3 alleles. " from the documentation of DNAAllele.

  10. Update the documentation of DNAEncoding to "An encoding or representation of the DNA data from a person (can be a composite profile based on multiple DNA samples) or a DNA sample (can be a single-source sample or a mixture sample from a crime scene)." Note: Reverse the words a little bit. ISO still uses "representation" because there wasn't enough time to update the entire ISO DNA Data Exchange document with "encoding". SMEs agree that "encoding" is a better name than "representation" for the DNA data.

  11. Remove "DNASource is added in NIEM 5.1 to replace DNASampleOrigin, DNAProfileCategoryCode, and DNADonorCategoryCode in the future. This is because the information can be better represented by the data architecture of DNASource." from the documentation of DNASource.

  12. Remove "DNASourceCategoryCode is added in NIEM 5.1 to replace DNAProfileCategoryCode in the future. DNAProfileCategoryCode is not aligned with the ISO DNA standard." from the documentation of DNASourceCategoryCode.

  13. Remove "DNASourceKnownIndicator is added in NIEM 5.1 to replace DNADonorCategoryCode in the future. This is because DNADonorCategoryCode can apply to only a person while DNASourceKnownIndicator can apply to a person or a DNA mixture. " from the documentation of DNASourceKnownIndicator.

  14. Remove "DNASTRData is added in NIEM 5.1 to replace DNASTRProfile in the future. This is because the data architecture of DNASTRProfile does not support the taxonomy of DNA STR data." from the documentation of DNASTRData.

  15. Update the documentation of DNAMitoData to "A description of the mitochondira DNA (mtDNA) data" Note: "DNA" was missing in the documentation.

  16. Remove "DNARecord is added in NIEM 5.1 to replace PackageDNARecord in the future. This is because the data architecture of PackageDNARecord does not support the required taxonomy of DNA data." from the documentation of DNARecord.

  17. Update the documentation of DNADataIdentification to "A unique identification for the DNA profile or encoded DNA data for which the transaction is based, e.g. sample ID, barcode, or profile ID." Note: Noticed additional typo.

  18. Remove "DNADonorVitalityCode is added in NIEM 5.1 to replace DNADonorStatusCode in the future. This is because "Missing Person" as a status value for DNADonorStatusCode is confusing. The fact that the sample was collected from an artifact from a reported missing person is already conveyed in DNADataCategory." from the documentation of DNADonorVitalityCode.

Documentation is truncated, please correct

Not sure what happened here. "DNALocusGenotypeProbabilityValue" and "LocusGenotypeProbabilityValueType" were new in NIEM 4.1, they were not in NIEM 4.0. It appears that the documentation has been truncated right from the beginning. I believe the following is the intended documentation:

<xs:complexType name="LocusGenotypeProbabilityValueType">
  <xs:annotation>
    <xs:documentation>A data type for an expression of the probability of an individual having these alleles at a single locus. This probability can be calculated by various formulas that consider if the locus is homozygous or heterozygous. The frequency of the individual alleles is based on population statistics data.</xs:documentation>
  </xs:annotation>
</xs:complexType>

<xs:element name="DNALocusGenotypeProbabilityValue" type="biom:LocusGenotypeProbabilityValueType" nillable="true">
  <xs:annotation>
    <xs:documentation>A probability of an individual having these alleles at a single locus. The frequency of the individual alleles is based on population statistics data. This probability can be calculated by various formulas that consider if the locus is homozygous or heterozygous.</xs:documentation>
  </xs:annotation>
</xs:element>
cdmgtri commented 2 years ago

Updated in NIEM 5.1 RC2.