Beispiel #1
0
        private static CDSOutput getResponse(CDSInput cdsInput)
        {
            OpenCdsService service  = new OpenCdsService(endPoint);
            CDSOutput      response = service.evaluate(cdsInput, scopingEntityId, businessId, version);

            return(response);
        }
Beispiel #2
0
        public CDSOutput evaluate(CDSInput cdsInput, string scopingEntityId, string businessId, string version)
        {
            CDSOutput         cdsOutput = null;
            MemoryStream      ms        = new MemoryStream();
            XmlWriterSettings settings  = new XmlWriterSettings();

            settings.Encoding         = Encoding.UTF8;
            settings.Indent           = true;
            settings.IndentChars      = "    ";
            settings.ConformanceLevel = ConformanceLevel.Document;
            XmlWriter     writer     = XmlTextWriter.Create(ms, settings);
            XmlSerializer serializer = new XmlSerializer(typeof(CDSInput));

            serializer.Serialize(ms, cdsInput);
            string cdsInputString = Encoding.UTF8.GetString(ms.ToArray());

            ms.Close();
            string response = evaluate(cdsInputString, scopingEntityId, businessId, version);

            serializer = new XmlSerializer(typeof(CDSOutput));
            StringReader sr = new StringReader(response);

            cdsOutput = (CDSOutput)serializer.Deserialize(sr);
            sr.Close();
            return(cdsOutput);
        }
Beispiel #3
0
        private static void callServiceWithXmlFile()
        {
            StreamReader  sr         = new StreamReader(sampleFilename);
            XmlSerializer serializer = new XmlSerializer(typeof(CDSInput));
            CDSInput      cdsInput   = (CDSInput)serializer.Deserialize(sr);

            sr.Close();
            CDSOutput response = getResponse(cdsInput);

            processResponse(response);
        }
Beispiel #4
0
 private CDSActionGroupResponse GetSampleResponsePayload(CDSInput payload)
 {
     return
         (new CDSActionGroupResponse
     {
         patientId = payload.vmrInput.patient.id,
         actionGroup =
             new ActionGroup
         {
             subElements =
                 new ActionGroupSubElements
             {
                 Items =
                     new List <object>
                 {
                     new CreateAction
                     {
                         actionId = new II {
                             extension = Guid.NewGuid().ToString("N")
                         },
                         actionSentence =
                             new ComplexLiteral
                         {
                             value =
                                 new SubstanceAdministrationProposal
                             {
                                 id = new II {
                                     extension = Guid.NewGuid().ToString("N")
                                 },
                                 substanceAdministrationGeneralPurpose =
                                     new CD
                                 {
                                     code = "ASPIRIN",
                                     codeSystem = "org.hl7.example",
                                     codeSystemName = "org.hl7.example",
                                     displayName = new ST {
                                         value = "Aspirin"
                                     }
                                 },
                                 proposedAdministrationTimeInterval = new IVL_TS {
                                     low = new TS {
                                         value = "20130729"
                                     }
                                 }
                             }
                         }
                     }
                 }
             }
         }
     });
 }
Beispiel #5
0
        /// <summary>
        /// Base-64 encodes a vMR request payload.
        /// </summary>
        /// <param name="request">The vMR request to be encoded.</param>
        /// <returns>A base-64 string containing the request document.</returns>
        public static string EncodeRequestPayload(CDSInput request)
        {
            var sb = new StringBuilder();

            using (var writer = new StringWriter(sb))
            {
                requestSerializer.Serialize(writer, request);
            }

            var bytes = Encoding.UTF8.GetBytes(sb.ToString());

            return(Convert.ToBase64String(bytes));
        }
 public CDSOutput evaluate(CDSInput cdsInput, string scopingEntityId, string businessId, string version)
 {
     CDSOutput cdsOutput = null;
     MemoryStream ms = new MemoryStream();
     XmlWriterSettings settings = new XmlWriterSettings();
     settings.Encoding = Encoding.UTF8;
     settings.Indent = true;
     settings.IndentChars = "    ";
     settings.ConformanceLevel = ConformanceLevel.Document;
     XmlWriter writer = XmlTextWriter.Create(ms, settings);
     XmlSerializer serializer = new XmlSerializer(typeof(CDSInput));
     serializer.Serialize(ms, cdsInput);
     string cdsInputString = Encoding.UTF8.GetString(ms.ToArray());
     ms.Close();
     string response = evaluate(cdsInputString, scopingEntityId, businessId, version);
     serializer = new XmlSerializer(typeof(CDSOutput));
     StringReader sr = new StringReader(response);
     cdsOutput = (CDSOutput)serializer.Deserialize(sr);
     sr.Close();
     return cdsOutput;
 }
Beispiel #7
0
        private EngineResponse GetSampleEngineResponse(CDSInput payload)
        {
            var responsePayload = GetSampleResponsePayload(payload);

            var messages = new List <CDSExecutionMessage>();

            // Uncomment this statement to demonstrate exception handling
            //throw
            //	new CDSExecutionMessageWrapper
            //	(
            //		new CDSExecutionMessage
            //		{
            //			message = new ST { value = "Error" },
            //			level = new CDSExecutionMessageLevel1 { valueSpecified = true, value = CDSExecutionMessageLevel.Error },
            //			reason = new CDSExecutionMessageReason1 { valueSpecified = true, value = CDSExecutionMessageReason.DataIsMissing },
            //			sourceComponentType = new CDSExecutionMessageSourceComponentType { valueSpecified = true, value = DSSComponentType.System }
            //		}
            //	);

            return(new EngineResponse {
                Response = responsePayload, Messages = messages
            });
        }
Beispiel #8
0
 private CDSActionGroupResponse GetSampleResponsePayload(CDSInput payload)
 {
     return
         (new CDSActionGroupResponse
     {
         patientId = payload.vmrInput.patient.id,
         actionGroup =
             new ActionGroup
         {
             subElements =
                 new ActionGroupSubElements
             {
                 Items =
                     new List <ActionBase>
                 {
                     new CreateAction
                     {
                         actionId = new II {
                             extension = Guid.NewGuid().ToString("N")
                         },
                         actionSentence =
                             new elm.Instance
                         {
                             classType = new XmlQualifiedName("SubstanceAdministrationProposal"),
                             element = new List <elm.InstanceElement>
                             {
                                 new elm.InstanceElement
                                 {
                                     name = "id",
                                     value = new elm.Instance
                                     {
                                         classType = new XmlQualifiedName("II"),
                                         element = new List <elm.InstanceElement>
                                         {
                                             new elm.InstanceElement
                                             {
                                                 name = "extension",
                                                 value = new elm.Literal {
                                                     value = Guid.NewGuid().ToString("N"), valueType = new XmlQualifiedName("t:String")
                                                 }
                                             }
                                         }
                                     }
                                 },
                                 new elm.InstanceElement
                                 {
                                     name = "susbtanceAdministrationGeneralPurpose",
                                     value = new elm.Code {
                                         code = "ASPIRIN", display = "Aspirin", system = new elm.CodeSystemRef {
                                             name = "org.hl7.example"
                                         }
                                     }
                                 },
                                 new elm.InstanceElement
                                 {
                                     name = "proposedAdministrationTimeInterval",
                                     value = new elm.Interval {
                                         low = new elm.Literal {
                                             value = "2013-07-29", valueType = new XmlQualifiedName("t:DateTime")
                                         }
                                     }
                                 }
                             }
                             //value =
                             //	new SubstanceAdministrationProposal
                             //	{
                             //		id = new II { extension = Guid.NewGuid().ToString("N") },
                             //		substanceAdministrationGeneralPurpose =
                             //			new CD
                             //			{
                             //				code = "ASPIRIN",
                             //				codeSystem = "org.hl7.example",
                             //				codeSystemName = "org.hl7.example",
                             //				displayName = new ST { value = "Aspirin" }
                             //			},
                             //		proposedAdministrationTimeInterval = new IVL_TS { low = new TS { value = "20130729" } }
                             //	}
                         }
                     }
                 }
             }
         }
     });
 }
Beispiel #9
0
        private static void callServiceWithObject()
        {
            string   clientSystemPatientId = "1234567890";
            CDSInput cdsInput = new CDSInput();

            II templateId = new II();

            templateId.root     = "2.16.840.1.113883.3.795.11.1.1";
            cdsInput.templateId = new II[] { templateId };

            CDSContext cdsContext        = new CDSContext();
            CD         preferredLanguage = new CD();

            preferredLanguage.code        = "en";
            preferredLanguage.codeSystem  = "1.2.3";
            preferredLanguage.displayName = "English";
            cdsContext.cdsInformationRecipientPreferredLanguage = preferredLanguage;
            cdsInput.cdsContext = cdsContext;

            VMR vmr = new VMR();

            cdsInput.vmrInput = vmr;

            II vmrTemplateId = new II();

            vmrTemplateId.root = "2.16.840.1.113883.3.795.11.1.1";
            vmr.templateId     = new II[] { vmrTemplateId };

            EvaluatedPerson patient = new EvaluatedPerson();

            II personTemplateId = new II();

            personTemplateId.root = "2.16.840.1.113883.3.795.11.2.1.1";
            patient.templateId    = new II[] { personTemplateId };

            II id = new II();

            id.root      = "2.16.840.1.113883.3.795.12.100.11";
            id.extension = clientSystemPatientId;
            patient.id   = id;

            EvaluatedPersonDemographics demographics = new EvaluatedPersonDemographics();

            TS birthTime = new TS();

            birthTime.value        = "20110401";
            demographics.birthTime = birthTime;

            CD gender = new CD();

            gender.code         = "F";
            gender.codeSystem   = "2.16.840.1.113883.5.1";
            demographics.gender = gender;

            patient.demographics = demographics;
            vmr.patient          = patient;

            EvaluatedPersonClinicalStatements statements = new EvaluatedPersonClinicalStatements();

            patient.clinicalStatements = statements;

            SubstanceAdministrationEvent statement1 = getSubstanceAdministrationEvent("185", "20110430");
            SubstanceAdministrationEvent statement2 = getSubstanceAdministrationEvent("184", "20110523");
            SubstanceAdministrationEvent statement3 = getSubstanceAdministrationEvent("183", "20110721");
            SubstanceAdministrationEvent statement4 = getSubstanceAdministrationEvent("182", "20110911");
            SubstanceAdministrationEvent statement5 = getSubstanceAdministrationEvent("181", "20110912");

            statements.substanceAdministrationEvents = new SubstanceAdministrationEvent[] { statement1, statement2, statement3, statement4, statement5 };
            CDSOutput response = getResponse(cdsInput);

            processResponse(response);
        }
 private static CDSOutput getResponse(CDSInput cdsInput)
 {
     OpenCdsService service = new OpenCdsService(endPoint);
     CDSOutput response = service.evaluate(cdsInput, scopingEntityId, businessId, version);
     return response;
 }
        private static void callServiceWithObject()
        {
            string clientSystemPatientId = "1234567890";
            CDSInput cdsInput = new CDSInput();

            II templateId = new II();
            templateId.root = "2.16.840.1.113883.3.795.11.1.1";
            cdsInput.templateId = new II[] { templateId };

            CDSContext cdsContext = new CDSContext();
            CD preferredLanguage = new CD();
            preferredLanguage.code = "en";
            preferredLanguage.codeSystem = "1.2.3";
            preferredLanguage.displayName = "English";
            cdsContext.cdsInformationRecipientPreferredLanguage = preferredLanguage;
            cdsInput.cdsContext = cdsContext;

            VMR vmr = new VMR();
            cdsInput.vmrInput = vmr;

            II vmrTemplateId = new II();
            vmrTemplateId.root = "2.16.840.1.113883.3.795.11.1.1";
            vmr.templateId = new II[] { vmrTemplateId };

            EvaluatedPerson patient = new EvaluatedPerson();

            II personTemplateId = new II();
            personTemplateId.root = "2.16.840.1.113883.3.795.11.2.1.1";
            patient.templateId = new II[] { personTemplateId };

            II id = new II();
            id.root = "2.16.840.1.113883.3.795.12.100.11";
            id.extension = clientSystemPatientId;
            patient.id = id;

            EvaluatedPersonDemographics demographics = new EvaluatedPersonDemographics();

            TS birthTime = new TS();
            birthTime.value = "20110401";
            demographics.birthTime = birthTime;

            CD gender = new CD();
            gender.code = "F";
            gender.codeSystem = "2.16.840.1.113883.5.1";
            demographics.gender = gender;

            patient.demographics = demographics;
            vmr.patient = patient;

            EvaluatedPersonClinicalStatements statements = new EvaluatedPersonClinicalStatements();
            patient.clinicalStatements = statements;

            SubstanceAdministrationEvent statement1 = getSubstanceAdministrationEvent("185", "20110430");
            SubstanceAdministrationEvent statement2 = getSubstanceAdministrationEvent("184", "20110523");
            SubstanceAdministrationEvent statement3 = getSubstanceAdministrationEvent("183", "20110721");
            SubstanceAdministrationEvent statement4 = getSubstanceAdministrationEvent("182", "20110911");
            SubstanceAdministrationEvent statement5 = getSubstanceAdministrationEvent("181", "20110912");

            statements.substanceAdministrationEvents = new SubstanceAdministrationEvent[] { statement1, statement2, statement3, statement4, statement5 };
            CDSOutput response = getResponse(cdsInput);
            processResponse(response);
        }