예제 #1
0
        public void BasicSplitFieldFact()
        {
            string        hl7string = "^A^ ^C ^D^";
            List <string> fields    = HL7Util.SplitField(hl7string, 2, 10);

            Assert.Equal(10, fields.Count);
            Assert.Equal(null, fields[0]);
            Assert.Equal("A", fields[1]);
            Assert.Equal(null, fields[2]);
            Assert.Equal("C", fields[3]);
            Assert.Equal("D", fields[4]);
            Assert.Equal(null, fields[5]);
            Assert.Equal(null, fields[6]);
            Assert.Equal(null, fields[7]);
            Assert.Equal(null, fields[8]);
            Assert.Equal(null, fields[9]);
        }
예제 #2
0
 public void SplitFieldThrowsIfNotEnoughFields()
 {
     Assert.Throws <ArgumentException>(() => HL7Util.SplitField("abba", 2, 4));
 }
예제 #3
0
        /// <summary>
        /// Creates a document from an XML XElement representation
        /// </summary>
        public static DocumentMetadata ConsumeDocument(XElement docXEl)
        {
            DocumentMetadata doc = new DocumentMetadata();

            doc.Author             = ConsumeAuthor(docXEl.Classification(XDMetadataStandard.UUIDs.DocumentAuthor));
            doc.Class              = ConsumeCodedValue(docXEl.Classification(XDMetadataStandard.UUIDs.DocumentClass));
            doc.Comments           = docXEl.DescriptionValue();
            doc.Confidentiality    = ConsumeCodedValue(docXEl.Classification(XDMetadataStandard.UUIDs.DocumentConfidentiality));
            doc.CreatedOn          = docXEl.SlotValue <DateTime?>(XDMetadataStandard.Slots.CreationTime, s => HL7Util.DateTimeFromHL7Value(s));
            doc.EventCodes         = docXEl.Classifications(XDMetadataStandard.UUIDs.EventCode).Select(c => ConsumeCodedValue(c));
            doc.FormatCode         = ConsumeCodedValue(docXEl.Classification(XDMetadataStandard.UUIDs.FormatCode));
            doc.FacilityCode       = ConsumeCodedValue(docXEl.Classification(XDMetadataStandard.UUIDs.FacilityCode));
            doc.Hash               = docXEl.SlotValue(XDMetadataStandard.Slots.Hash);
            doc.LanguageCode       = docXEl.SlotValue(XDMetadataStandard.Slots.LanguageCode);
            doc.LegalAuthenticator = docXEl.SlotValue <Person>(XDMetadataStandard.Slots.LegalAuthenticator, s => Person.FromXCN(s));
            doc.MediaType          = docXEl.AttributeValue(XDMetadataStandard.Attrs.MimeType);
            doc.PatientID          = docXEl.ExternalIdentifierValue(XDMetadataStandard.UUIDs.DocumentEntryPatientIdentityScheme, s => PatientID.FromEscapedCx(s));
            doc.ServiceStart       = docXEl.SlotValue <DateTime?>(XDMetadataStandard.Slots.ServiceStart, s => HL7Util.DateTimeFromHL7Value(s));
            doc.ServiceStop        = docXEl.SlotValue <DateTime?>(XDMetadataStandard.Slots.ServiceStop, s => HL7Util.DateTimeFromHL7Value(s));
            doc.PracticeSetting    = ConsumeCodedValue(docXEl.Classification(XDMetadataStandard.UUIDs.PracticeSetting));
            doc.Size               = docXEl.SlotValue <int?>(XDMetadataStandard.Slots.Size, s => Parse(s));
            doc.SourcePtId         = docXEl.SlotValue <PatientID>(XDMetadataStandard.Slots.SourcePatientID, s => PatientID.FromEscapedCx(s));
            doc.Patient            = Person.FromSourcePatientInfoValues(docXEl.SlotValues(XDMetadataStandard.Slots.SourcePatientInfo));
            doc.Title              = docXEl.NameValue();
            // Ignore TypeCode
            doc.UniqueId = docXEl.ExternalIdentifierValue(XDMetadataStandard.UUIDs.DocumentUniqueIdIdentityScheme);
            doc.Uri      = ConsumeUriValues(docXEl.SlotValues(XDMetadataStandard.Slots.Uri));

            return(doc);
        }
예제 #4
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="packageXEl"></param>
        /// <returns></returns>
        public static DocumentPackage ConsumePackage(XElement packageXEl)
        {
            DocumentPackage package = new DocumentPackage();

            package.Author          = ConsumeAuthor(packageXEl.Classification(XDMetadataStandard.UUIDs.SubmissionSetAuthor));
            package.Comments        = packageXEl.DescriptionValue();
            package.ContentTypeCode = ConsumeCodedValue(packageXEl.Classification(XDMetadataStandard.UUIDs.ContentTypeCode));
            package.IntendedRecipients.AddAll(packageXEl.SlotValues <Recipient>(XDMetadataStandard.Slots.IntendedRecipient, r => Recipient.FromXONXCNXTN(r)));
            package.PatientId      = packageXEl.ExternalIdentifierValue <PatientID>(XDMetadataStandard.UUIDs.SubmissionSetPatientId, s => PatientID.FromEscapedCx(s));
            package.SourceId       = packageXEl.ExternalIdentifierValue(XDMetadataStandard.UUIDs.SubmissionSetSourceId);
            package.SubmissionTime = packageXEl.SlotValue <DateTime?>(XDMetadataStandard.Slots.SubmissionTime, s => HL7Util.DateTimeFromHL7Value(s));
            package.Title          = packageXEl.NameValue();
            package.UniqueId       = packageXEl.ExternalIdentifierValue(XDMetadataStandard.UUIDs.SubmissionSetUniqueId);

            return(package);
        }