web
You’re offline. This is a read only version of the page.
close
Skip to main content

Notifications

Announcements

No record found.

Community site session details

Community site session details

Session Id :
Microsoft Dynamics CRM (Archived)

schedule type

(0) ShareShare
ReportReport
Posted on by 267

using Microsoft.Xrm.Sdk;
using Microsoft.Xrm.Sdk.Messages;
using Microsoft.Xrm.Sdk.Metadata;
using Microsoft.Xrm.Sdk.Query;
using PaRTSIntegrationService;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
using System.Xml;
using System.Xml.Serialization;

namespace PaRTSIntegrationPlugin
{
public static class Extensions
{
private static readonly Dictionary<TransactionTypeEnum, string[]> CompletedStatusMappings = new Dictionary<TransactionTypeEnum, string[]>();

static Extensions()
{
CompletedStatusMappings.Add(TransactionTypeEnum.ADMISSION, new string[] { "Admitted" });
CompletedStatusMappings.Add(TransactionTypeEnum.DAY_TRIP, new string[] { "Scheduled" });
CompletedStatusMappings.Add(TransactionTypeEnum.DISCHARGE, new string[] { "Discharged" });
CompletedStatusMappings.Add(TransactionTypeEnum.HOUSING, new string[] { "Admitted" });
CompletedStatusMappings.Add(TransactionTypeEnum.RETURN_FROM_COURT, new string[] { "Scheduled" });
CompletedStatusMappings.Add(TransactionTypeEnum.TEMP_OUT_MEDICAL, new string[] { "Scheduled" });
CompletedStatusMappings.Add(TransactionTypeEnum.TEMP_OUT_COURT, new string[] { "Scheduled" });
CompletedStatusMappings.Add(TransactionTypeEnum.TRANSFER_HOSP_EXIT, new string[] { "Discharged" });
CompletedStatusMappings.Add(TransactionTypeEnum.TRANSFER_HOSP_IN, new string[] { "Admitted" });
}

//"Admitted", "Discharged"/*, "Scheduled", "Canceled", "Initiated", "In-Process", "Pending Re-Schedule", "Pending Scheduling", "Permanently Deferred"*/ };

public static string ToXml(this BedActivityDTO metadata)
{
var lateBoundSerializer = new XmlSerializer(metadata.GetType(), new XmlRootAttribute("Data"));
var ns = new XmlSerializerNamespaces(new[] { XmlQualifiedName.Empty });
var settings = new XmlWriterSettings();
settings.Indent = true;
settings.OmitXmlDeclaration = true;

string xml;

using (var stream = new StringWriter())
using (var writer = XmlWriter.Create(stream, settings))
{
lateBoundSerializer.Serialize(writer, metadata, ns);
xml = stream.ToString();
return xml;
}
}

public static void SetActivity(this BedActivityDTO dto, IOrganizationService _service, Entity scheduling, Entity person, Entity bed, TransactionTypeEnum transactionType)
{
dto.TransactionType = transactionType.ToString();
if (person != null)
{
dto.Dob = person.Contains("parts_dob") && person["parts_dob"] != null ? ((DateTime)person["parts_dob"]).ToString("MM/dd/yyyy") : "";
dto.PersonId = person.Contains("parts_personid") ? person["parts_personid"].ToString() : "";
dto.FirstHospitalCaseNumber = person.Contains("parts_firsthospitalcasenumberadt") ? (string)person["parts_firsthospitalcasenumberadt"] : "";
dto.FirstHospitalNumber = scheduling.Contains("parts_hospital") ? GetHospitalNumberByCaseNumber(_service, dto.FirstHospitalCaseNumber) : 0;
dto.SSN = person.Contains("parts_ssn") ? Convert.ToInt32(((string)person["parts_ssn"]).Replace("-", "")) : 0;
dto.Dob = person.Contains("parts_dob") && person["parts_dob"] != null ? ((DateTime)person["parts_dob"]).ToString("yyyy-MM-dd") : "";
dto.FirstName = person.Contains("parts_firstname") ? (string)person["parts_firstname"] : "";
dto.MiddleInitial = person.Contains("parts_middleinitial") ? (string)person["parts_middleinitial"] : "";
dto.LastName = person.Contains("parts_lastname") ? (string)person["parts_lastname"] : "";
dto.Gender = person.Contains("parts_gender") ? GetOptionSetLabel(_service, person, "parts_gender") : "";
dto.CurrentHospitalCaseNumber = person.Contains("parts_currenthospitalcasenumber") ? (string)person["parts_currenthospitalcasenumber"] : "";
dto.Race = person.Contains("parts_race") ? (string)GetEntityValueByProperty(_service, "parts_ethnicity", "parts_name", GetOptionSetLabel(_service, person, "parts_race"), "parts_adtcode") : "";
dto.Narcotics = person.Contains("parts_narcotics") ? FormatBoolean(person["parts_narcotics"]) : "";
dto.Registrant = person.Contains("parts_registrant") ? FormatBoolean(person["parts_registrant"]) : "";
dto.MaritalStatus = person.Contains("parts_maritalstatus") ? GetOptionSetLabel(_service, person, "parts_maritalstatus") : "";
dto.Religion = person.Contains("parts_religion") ? GetOptionSetLabel(_service, person, "parts_religion") : "";
dto.Citizenship = person.Contains("parts_citizenship") ? GetOptionSetLabel(_service, person, "parts_citizenship") : "";
dto.VeteranStatus = person.Contains("parts_veteranstatus") ? FormatBoolean(person["parts_veteranstatus"]) : "";
dto.CountryOfCitizenship = person.Contains("parts_countryofcitizenship") ? (string)GetEnityAttributeValueByEntityReference(_service, person["parts_countryofcitizenship"], "parts_code") : "";
dto.CDCNumber = person.Contains("parts_cdcnumber") ? (string)person["parts_cdcnumber"] : "";
dto.CIINumber = person.Contains("parts_ciinumber") ? (string)person["parts_ciinumber"] : "";
dto.State = person.Contains("parts_state") ? GetOptionSetLabel(_service, person, "parts_state") : "";
dto.Zip = person.Contains("parts_zip") ? (string)person["parts_zip"] : "";
dto.PhoneNumber = person.Contains("parts_phonenumber") ? (string)person["parts_phonenumber"] : "";
string unknown = person.Contains("parts_phunknown") ? GetOptionSetLabel(_service, person, "parts_phunknown") : "";
//dto.PriorHospHist = person.Contains("") ? FormatPriorHosp(person, unknown) : ""; //TODO
}
if (scheduling != null)
{
dto.Schedulingid = scheduling.Contains("parts_schedulingid") ? scheduling["parts_schedulingid"].ToString() : "";
dto.SchedulingStatus = scheduling.Contains("parts_schedulingstatusid") ? ((EntityReference)scheduling["parts_schedulingstatusid"]).Name : "";
dto.SchedulingType = scheduling.Contains("parts_schedulingtypeid") ? ((EntityReference)scheduling["parts_schedulingtypeid"]).Name : "";
dto.Id = scheduling.Contains("parts_id") ? scheduling["parts_id"].ToString() : "";
dto.HospitalCaseNumber = scheduling.Contains("parts_hospitalcasenumber") ? scheduling["parts_hospitalcasenumber"].ToString() : "";
dto.LevelofCare = scheduling.Contains("parts_levelofcare") ? scheduling["parts_levelofcare"].ToString() : "";
dto.ReferringSourceId = scheduling.Contains("parts_referringsourceid") ? ((EntityReference)scheduling["parts_referringsourceid"]).Id.ToString() : "";
dto.ReferringSourceCode = scheduling.Contains("parts_referringsourceid") ? (string)GetEnityAttributeValueByEntityReference(_service, scheduling["parts_referringsourceid"], "parts_code") : null;
dto.AdmissionDatetime = scheduling.Contains("parts_admissiondatetime") ? ((DateTime)scheduling["parts_admissiondatetime"]).ToString("yyyy-MM-dd HH:mm:ss") : DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
dto.CountyAuthEffectiveDate = scheduling.Contains("parts_countyautheffectivedate") ? ((DateTime)scheduling["parts_countyautheffectivedate"]).ToLocalTime().ToString("yyyy-MM-dd HH:mm:ss") : "";
dto.BillingCounty = scheduling.Contains("parts_billingcounty") ? ((EntityReference)scheduling["parts_billingcounty"]).Id.ToString() : "";
dto.BillingCountyADTId = scheduling.Contains("parts_billingcounty") ? ((int)GetEnityAttributeValueByEntityReference(_service, scheduling["parts_billingcounty"], "parts_adtid")).ToString("D2") : "";
dto.BillingCountyADTCode = scheduling.Contains("parts_billingcounty") ? (string)GetEnityAttributeValueByEntityReference(_service, scheduling["parts_billingcounty"], "parts_abbreviation") : "";
dto.BillToCounty = scheduling.Contains("parts_billtocounty") ? FormatBoolean(scheduling["parts_billtocounty"]) : "";
//dto.LegalStatus = scheduling.Contains("parts_legalclassid")? (string)GetEnityReferenceValue(_service, scheduling["parts_legalclassid"], "parts_codesection") : "";
dto.LegalStatusEffDateTime = scheduling.Contains("parts_legalstatuseffectivedate") ? ((DateTime)scheduling["parts_legalstatuseffectivedate"]).ToLocalTime().ToString("yyyy-MM-dd HH:mm:ss") : "";
dto.LegalStatusEndDate = scheduling.Contains("parts_legalstatusenddate") ? ((DateTime)scheduling["parts_legalstatusenddate"]).ToLocalTime().ToString("yyyy-MM-dd HH:mm:ss") : "";
dto.CommitingCountyADTId = scheduling.Contains("parts_committingcountyadtid") ? scheduling["parts_committingcountyadtid"].ToString() : "";
dto.LegalStatus = scheduling.Contains("parts_legalclassid") ? (string)GetEnityAttributeValueByEntityReference(_service, scheduling["parts_legalclassid"], "parts_codesection") : "";
dto.LegalStatusEffDateTime = scheduling.Contains("parts_legalstatuseffectivedate") ? ((DateTime)scheduling["parts_legalstatuseffectivedate"]).ToLocalTime().ToString("yyyy-MM-dd HH:mm:ss") : "";
dto.LegalStatusEndDate = scheduling.Contains("parts_legalstatusenddate") ? ((DateTime)scheduling["parts_legalstatusenddate"]).ToLocalTime().ToString("yyyy-MM-dd HH:mm:ss") : "";
dto.TransFromHospNbr = scheduling.Contains("parts_transferfromhospital") ? scheduling["parts_transferfromhospital"].ToString() : "";
dto.CommitingCountyADTId = scheduling.Contains("parts_committingcounty_countyid") ? ((int)GetEnityAttributeValueByEntityReference(_service, scheduling["parts_committingcounty_countyid"], "parts_adtid")).ToString("D2") : "";
dto.CommittingCountyCountyId = scheduling.Contains("parts_committingcounty_countyid") ? ((EntityReference)scheduling["parts_committingcounty_countyid"]).Id.ToString() : "";
dto.CountyOfCommitment = scheduling.Contains("parts_committingcounty_countyid") ? (string)GetEnityAttributeValueByEntityReference(_service, scheduling["parts_committingcounty_countyid"], "parts_abbreviation") : "";
dto.MHRegionAdmitCounty = scheduling.Contains("parts_mhregionadmitcounty") ? scheduling["parts_mhregionadmitcounty"].ToString() : "";
dto.LAMentalHealthRegion = scheduling.Contains("pars_lamentalhealthregion") ? scheduling["pars_lamentalhealthregion"].ToString() : "";
dto.RightsRead = scheduling.Contains("parts_rightsread") ? FormatBoolean(scheduling["parts_rightsread"]) : "";
dto.LegalStatusLsType = scheduling.Contains("parts_legalclassid") ? (string)GetEnityAttributeValueByEntityReference(_service, scheduling["parts_legalclassid"], "parts_ods_legal_class_code") : "";
dto.LegalStatusFundingSource = scheduling.Contains("parts_legalclassid") ? (string)GetEnityAttributeValueByEntityReference(_service, scheduling["parts_legalclassid"], "parts_fundingsource") : "";
dto.HospitalId = scheduling.Contains("parts_hospital") ? ((EntityReference)scheduling["parts_hospital"]).Id.ToString() : "";
dto.CurrentHospitalNumber = scheduling.Contains("parts_hospital") ? Convert.ToInt32(GetEntityValueByProperty(_service, "ttg_hospital", "ttg_siteid", ((EntityReference)scheduling["parts_hospital"]).Id, "ttg_adtid")) : 0;
dto.DischargeDate = scheduling.Contains("parts_dischargedate") ? ((DateTime)scheduling["parts_dischargedate"]).ToLocalTime().ToString("yyyy-MM-dd HH:mm:ss") : "";
}
if (bed != null)
{
dto.BedNumber = bed.Contains("ttg_actualbednumber") ? Convert.ToInt32(bed["ttg_actualbednumber"]) : 0;
dto.UnitName = bed.Contains("ttg_unitid") ? (string)GetEnityAttributeValueByEntityId(_service, "ttg_unit", ((EntityReference)bed["ttg_unitid"]).Id, "ttg_actualunitnumber") : "";
dto.Program = bed.Contains("ttg_unitid") ? (string)GetEnityAttributeValueByEntityId(_service, "ttg_unit", ((EntityReference)bed["ttg_unitid"]).Id, "ttg_program") : "";
}
}


public static void SetPatientCase(this Entity PatientCase, IOrganizationService orgSvc, TransactionTypeEnum transactionType, BedActivityDTO dto)
{
PatientCase["parts_hospitalcasenumber"] = dto.HospitalCaseNumber;
PatientCase["parts_personid"] = new EntityReference("parts_person", new Guid(dto.PersonId));
PatientCase["parts_hospital"] = new EntityReference("site", new Guid(dto.HospitalId));
PatientCase["parts_committingcounty_countyid"] = string.IsNullOrEmpty(dto.CommittingCountyCountyId) ? null : new EntityReference("parts_county", new Guid(dto.CommittingCountyCountyId));
PatientCase["parts_billingcounty"] = string.IsNullOrEmpty(dto.BillingCounty) ? null : new EntityReference("parts_county", new Guid(dto.BillingCounty));
PatientCase["parts_billtocounty"] = dto.BillToCounty == "Y" ? true : false;
PatientCase["parts_cdcnumber"] = dto.CDCNumber;
PatientCase["parts_ciinumber"] = dto.CIINumber;
switch (transactionType)
{
case TransactionTypeEnum.ADMISSION:
PatientCase["parts_admissiondatetime"] = string.IsNullOrEmpty(dto.AdmissionDatetime) ? (DateTime?)null : DateTime.SpecifyKind(Convert.ToDateTime(dto.AdmissionDatetime), DateTimeKind.Utc);
PatientCase["parts_locationstatus"] = GetEnityReferenceByPorperty(orgSvc, "parts_locationstatus", "parts_name", "RES. ON UNIT");
break;
case TransactionTypeEnum.DAY_TRIP:
break;
case TransactionTypeEnum.DISCHARGE:
PatientCase["parts_dischargedate"] = string.IsNullOrEmpty(dto.DischargeDate) ? (DateTime?)null : DateTime.SpecifyKind(Convert.ToDateTime(dto.DischargeDate), DateTimeKind.Utc);
PatientCase["parts_locationstatus"] = GetEnityReferenceByPorperty(orgSvc, "parts_locationstatus", "parts_name", "DISCHARGED");
break;
case TransactionTypeEnum.HOUSING:
PatientCase["parts_admissiondatetime"] = string.IsNullOrEmpty(dto.AdmissionDatetime) ? (DateTime?)null : DateTime.SpecifyKind(Convert.ToDateTime(dto.AdmissionDatetime), DateTimeKind.Utc);
PatientCase["parts_locationstatus"] = GetEnityReferenceByPorperty(orgSvc, "parts_locationstatus", "parts_name", "RES. ON UNIT");
break;
case TransactionTypeEnum.RETURN_FROM_COURT:
PatientCase["parts_admissiondatetime"] = string.IsNullOrEmpty(dto.AdmissionDatetime) ? (DateTime?)null : DateTime.SpecifyKind(Convert.ToDateTime(dto.AdmissionDatetime), DateTimeKind.Utc);
PatientCase["parts_locationstatus"] = GetEnityReferenceByPorperty(orgSvc, "parts_locationstatus", "parts_name", "RES. ON UNIT");
break;
case TransactionTypeEnum.TEMP_OUT_MEDICAL:
PatientCase["parts_dischargedate"] = string.IsNullOrEmpty(dto.DischargeDate) ? (DateTime?)null : DateTime.SpecifyKind(Convert.ToDateTime(dto.DischargeDate), DateTimeKind.Utc);
PatientCase["parts_locationstatus"] = GetEnityReferenceByPorperty(orgSvc, "parts_locationstatus", "parts_name", "OUTPATIENT");
break;
case TransactionTypeEnum.TEMP_OUT_COURT:
PatientCase["parts_dischargedate"] = string.IsNullOrEmpty(dto.DischargeDate) ? (DateTime?)null : DateTime.SpecifyKind(Convert.ToDateTime(dto.DischargeDate), DateTimeKind.Utc);
PatientCase["parts_locationstatus"] = GetEnityReferenceByPorperty(orgSvc, "parts_locationstatus", "parts_name", "COURT LEAVE");
break;
case TransactionTypeEnum.TRANSFER_HOSP_EXIT:
PatientCase["parts_dischargedate"] = string.IsNullOrEmpty(dto.DischargeDate) ? (DateTime?)null : DateTime.SpecifyKind(Convert.ToDateTime(dto.DischargeDate), DateTimeKind.Utc);
PatientCase["parts_locationstatus"] = GetEnityReferenceByPorperty(orgSvc, "parts_locationstatus", "parts_name", "DISCHARGED");
break;
case TransactionTypeEnum.TRANSFER_HOSP_IN:
PatientCase["parts_admissiondatetime"] = string.IsNullOrEmpty(dto.AdmissionDatetime) ? (DateTime?)null : DateTime.SpecifyKind(Convert.ToDateTime(dto.AdmissionDatetime), DateTimeKind.Utc);
PatientCase["parts_locationstatus"] = GetEnityReferenceByPorperty(orgSvc, "parts_locationstatus", "parts_name", "RES. ON UNIT");
break;
default:
break;
}
}

public static TransactionTypeEnum GetTransactionType(this Entity scheduling)
{
var schedulingType = ((EntityReference)scheduling["parts_schedulingtypeid"]).Name;
TransactionTypeEnum TransactionType;
switch (schedulingType)
{
case "Admission":
TransactionType = TransactionTypeEnum.ADMISSION;
break;
case "Day Trip":
TransactionType = TransactionTypeEnum.DAY_TRIP;
break;
case "Discharge":
TransactionType = TransactionTypeEnum.DISCHARGE;
break;
case "Housing":
TransactionType = TransactionTypeEnum.HOUSING;
break;
case "Return from Court":
TransactionType = TransactionTypeEnum.RETURN_FROM_COURT;
break;
case "Return from Medical":
TransactionType = TransactionTypeEnum.RETURN_FROM_MEDICAL;
break;
case "Temporary out on Medical":
TransactionType = TransactionTypeEnum.TEMP_OUT_MEDICAL;
break;
case "Temporary out to Court":
TransactionType = TransactionTypeEnum.TEMP_OUT_COURT;
break;
case "Transfer State Hospital: Exit":
TransactionType = TransactionTypeEnum.TRANSFER_HOSP_EXIT;
break;
case "Transfer State Hospital: In":
TransactionType = TransactionTypeEnum.TRANSFER_HOSP_IN;
break;
case "UNAUTH. ABS.":
TransactionType = TransactionTypeEnum.AWOL;
break;
default:
TransactionType = TransactionTypeEnum.UNKNOWN;
break;
}
return TransactionType;
}

public static bool IsSchedulingComplete(this Entity scheduling, TransactionTypeEnum transactionType)
{
if (scheduling.Contains("parts_schedulingstatusid") && CompletedStatusMappings.ContainsKey(transactionType))
{
var status = ((EntityReference)scheduling["parts_schedulingstatusid"]).Name;
if (CompletedStatusMappings[transactionType].Contains(status))
return true;
else
return false;
}
return false;
}

public static Entity GetActiveHospitalCase(this Entity scheduling, IOrganizationService orgSvc)
{
QueryByAttribute query = new QueryByAttribute("parts_patientcase");
query.AddAttributeValue("parts_personid", ((EntityReference)scheduling["parts_personid"]).Id);
query.ColumnSet = new ColumnSet("parts_hospitalcasenumber", "parts_hospital");

EntityCollection retrieved = orgSvc.RetrieveMultiple(query);
if (retrieved.Entities.Count == 1)
{
return retrieved.Entities[0];
}
return null;
}

public static EntityReference GetLocationStatusByTransactionType(this TransactionTypeEnum transactionType, IOrganizationService orgSvc)
{
switch(transactionType)
{
case TransactionTypeEnum.ADMISSION:
return Extensions.GetEnityReferenceByPorperty(orgSvc, "parts_locationstatus", "parts_name", "RES. ON UNIT");
case TransactionTypeEnum.DAY_TRIP:
return Extensions.GetEnityReferenceByPorperty(orgSvc, "parts_locationstatus", "parts_name", "RES. ON UNIT");
case TransactionTypeEnum.DISCHARGE:
return Extensions.GetEnityReferenceByPorperty(orgSvc, "parts_locationstatus", "parts_name", "DISCHARGED");
case TransactionTypeEnum.HOUSING:
return Extensions.GetEnityReferenceByPorperty(orgSvc, "parts_locationstatus", "parts_name", "RES. ON UNIT");
case TransactionTypeEnum.INTERNAL_TRANSFER:
return Extensions.GetEnityReferenceByPorperty(orgSvc, "parts_locationstatus", "parts_name", "RES. ON UNIT");
case TransactionTypeEnum.RETURN_FROM_COURT:
return Extensions.GetEnityReferenceByPorperty(orgSvc, "parts_locationstatus", "parts_name", "RES. ON UNIT");
case TransactionTypeEnum.RETURN_FROM_MEDICAL:
return Extensions.GetEnityReferenceByPorperty(orgSvc, "parts_locationstatus", "parts_name", "RES. ON UNIT");
case TransactionTypeEnum.TEMP_OUT_COURT:
return Extensions.GetEnityReferenceByPorperty(orgSvc, "parts_locationstatus", "parts_name", "COURT LEAVE");
case TransactionTypeEnum.TEMP_OUT_MEDICAL:
return Extensions.GetEnityReferenceByPorperty(orgSvc, "parts_locationstatus", "parts_name", "OUTPATIENT");
case TransactionTypeEnum.TRANSFER_HOSP_EXIT:
return Extensions.GetEnityReferenceByPorperty(orgSvc, "parts_locationstatus", "parts_name", "TRSF ST.HOSP");
case TransactionTypeEnum.TRANSFER_HOSP_IN:
return Extensions.GetEnityReferenceByPorperty(orgSvc, "parts_locationstatus", "parts_name", "RES. ON UNIT");
case TransactionTypeEnum.AWOL:
return Extensions.GetEnityReferenceByPorperty(orgSvc, "parts_locationstatus", "parts_name", "UNAUTH. ABS.");
default:
return Extensions.GetEnityReferenceByPorperty(orgSvc, "parts_locationstatus", "parts_name", "RES. ON UNIT");
}
}

private static string FormatBoolean(object value)
{
if (value != null)
{
if (Convert.ToBoolean(value))
return "Y";
else
return "N";
}
return null;
}

private static string FormatPriorHosp(Entity person, string unknownval)
{
string str = String.Empty;
string calstate = person.Contains("parts_PHCalState") ? FormatBoolean(person["parts_PHCalState"]) : "";
string opi = person.Contains("parts_PHOPI") ? FormatBoolean(person["parts_PHOPI"]) : "";
string cpi = person.Contains("parts_PHCPI") ? FormatBoolean(person["parts_PHCPI"]) : "";
string va = person.Contains("parts_PHVA") ? FormatBoolean(person["parts_PHVA"]) : "";
string unknown = unknownval;
string otherstate = person.Contains("parts_PHOtherState") ? FormatBoolean(person["parts_PHOtherState"]) : "";
string other = person.Contains("parts_PHOther") ? FormatBoolean(person["parts_PHOther"]) : "";
string noprior = person.Contains("parts_PHNoPrior") ? FormatBoolean(person["parts_PHNoPrior"]) : "";
noprior = (noprior == "Y") ? "Y" : "N";
calstate = (calstate == "Y") ? "Y" : "N";
opi = (opi == "Y") ? "Y" : "N";
cpi = (cpi == "Y") ? "Y" : "N";
va = (va == "Y") ? "Y" : "N";
otherstate = (otherstate == "Y") ? "Y" : "N";
other = (other == "Y") ? "Y" : "N";
str = noprior + calstate + otherstate + va + cpi + opi + other + unknown;
if (unknown == "Y")
{
str = "NNNNNNNY";
}
else if (noprior == "Y")
{
str = "NNNNNNNY";
}
return str;
}

private static object GetEnityAttributeValueByEntityReference(IOrganizationService _service, object _entityRef, string attributeName)
{
var entityRef = (EntityReference)_entityRef;
return GetEnityAttributeValueByEntityId(_service, entityRef.LogicalName, entityRef.Id, attributeName);
}

private static object GetEnityAttributeValueByEntityId(IOrganizationService _service, string entityLogicalName, Guid entityId, string attributeName)
{
Entity entity = _service.Retrieve(entityLogicalName, entityId, new ColumnSet(new string[] { attributeName }));

if (entity.Attributes.Contains(attributeName))
{
return entity[attributeName];
}
return null;
}

public static EntityReference GetEnityReferenceByPorperty(IOrganizationService orgSvc, string entityLogicName, string attributeName, string attributeValue)
{
QueryByAttribute query = new QueryByAttribute(entityLogicName);
query.AddAttributeValue(attributeName, attributeValue);
query.ColumnSet = new ColumnSet(attributeName);

//query passed to the service proxy
EntityCollection retrieved = orgSvc.RetrieveMultiple(query);
if (retrieved.Entities.Count == 1)
{
return new EntityReference(entityLogicName, retrieved.Entities[0].Id);
}
return null;
}
private static object GetEntityValueByProperty(IOrganizationService orgSvc, string entityLogicalName, string srcAttributeName, object srcAttributeValue, string tgtAttributeName)
{
QueryByAttribute query = new QueryByAttribute(entityLogicalName);
query.AddAttributeValue(srcAttributeName, srcAttributeValue);
query.ColumnSet = new ColumnSet(tgtAttributeName);

//query passed to the service proxy
EntityCollection retrieved = orgSvc.RetrieveMultiple(query);
if (retrieved.Entities.Count == 1 && retrieved.Entities[0].Contains(tgtAttributeName))
{
return retrieved.Entities[0][tgtAttributeName];
}
return null;
}


private static string GetOptionSetLabel(IOrganizationService _service, Entity entity, string attributeName)
{
string label = null;
if (entity.FormattedValues.Contains(attributeName))
{
label = entity.FormattedValues[attributeName];
}
else if (entity.Contains(attributeName))
{
var p = (OptionSetValue)entity[attributeName];
var attReq = new RetrieveAttributeRequest();
attReq.EntityLogicalName = entity.LogicalName;
attReq.LogicalName = attributeName;
attReq.RetrieveAsIfPublished = true;

var attResponse = (RetrieveAttributeResponse)_service.Execute(attReq);
var attMetadata = (EnumAttributeMetadata)attResponse.AttributeMetadata;

return attMetadata.OptionSet.Options.Where(x => x.Value == p.Value).FirstOrDefault().Label.UserLocalizedLabel.Label;

}
return label;
}

private static int GetHospitalNumberByCaseNumber(IOrganizationService _service, string hospitalCaseNumber)
{
string pattern = @"(?<facility>\S+-\S+)-(\d+)-(\d+)";
Regex r = new Regex(pattern);
Match match = r.Match(hospitalCaseNumber);
if (match.Success)
{
string facility = match.Groups["facility"].Value;
return Convert.ToInt32(GetEntityValueByProperty(_service, "ttg_hospital", "ttg_abbreviation", facility, "ttg_adtid"));
}
return 0;
}

}
}

*This post is locked for comments

I have the same question (0)
  • on-premise Profile Picture
    267 on at

    public static TransactionTypeEnum GetTransactionType(Entity scheduling, IOrganizationService service)
    {
    TransactionTypeEnum TransactionType=TransactionTypeEnum.UNKNOWN;
    EntityReference schedulingTypeId = GetAttributeValue<EntityReference>("parts_schedulingtypeid", scheduling);
    if (schedulingTypeId != null)
    {
    Entity typeEntity = service.Retrieve(schedulingTypeId.LogicalName, schedulingTypeId.Id, new Microsoft.Xrm.Sdk.Query.ColumnSet(new string[] { "" }));
    string schedulingType = GetAttributeValue<string>("", typeEntity);
    switch (schedulingType)
    {
    case "Admission":
    TransactionType = TransactionTypeEnum.ADMISSION;
    break;
    case "Day Trip":
    TransactionType = TransactionTypeEnum.DAY_TRIP;
    break;
    case "Discharge":
    TransactionType = TransactionTypeEnum.DISCHARGE;
    break;
    case "Housing":
    TransactionType = TransactionTypeEnum.HOUSING;
    break;
    case "Return from Court":
    TransactionType = TransactionTypeEnum.RETURN_FROM_COURT;
    break;
    case "Return from Medical":
    TransactionType = TransactionTypeEnum.RETURN_FROM_MEDICAL;
    break;
    case "Temporary out on Medical":
    TransactionType = TransactionTypeEnum.TEMP_OUT_MEDICAL;
    break;
    case "Temporary out to Court":
    TransactionType = TransactionTypeEnum.TEMP_OUT_COURT;
    break;
    case "Transfer State Hospital: Exit":
    TransactionType = TransactionTypeEnum.TRANSFER_HOSP_EXIT;
    break;
    case "Transfer State Hospital: In":
    TransactionType = TransactionTypeEnum.TRANSFER_HOSP_IN;
    break;
    case "UNAUTH. ABS.":
    TransactionType = TransactionTypeEnum.AWOL;
    break;
    default:
    TransactionType = TransactionTypeEnum.UNKNOWN;
    break;
    }
    }

    return TransactionType;
    }

    public static T GetAttributeValue<T>(string attributeLogicalName, Entity entity)
    {
    T rtnValue = default(T);

    if (!string.IsNullOrEmpty(attributeLogicalName))
    {
    attributeLogicalName = attributeLogicalName.ToLowerInvariant();
    try
    {
    if (entity != null && entity.Contains(attributeLogicalName)) rtnValue = entity.GetAttributeValue<T>(attributeLogicalName);
    }
    catch { rtnValue = default(T); }
    }

    return rtnValue;
    }

Under review

Thank you for your reply! To ensure a great experience for everyone, your content is awaiting approval by our Community Managers. Please check back later.

Helpful resources

Quick Links

Responsible AI policies

As AI tools become more common, we’re introducing a Responsible AI Use…

Neeraj Kumar – Community Spotlight

We are honored to recognize Neeraj Kumar as our Community Spotlight honoree for…

Leaderboard > 🔒一 Microsoft Dynamics CRM (Archived)

#1
SA-08121319-0 Profile Picture

SA-08121319-0 4

#1
Calum MacFarlane Profile Picture

Calum MacFarlane 4

#3
Alex Fun Wei Jie Profile Picture

Alex Fun Wei Jie 2

Last 30 days Overall leaderboard

Featured topics

Product updates

Dynamics 365 release plans