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

  • on-premise Profile Picture
    267 on at
    RE: schedule type

    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

🌸 Community Spring Festival 2025 Challenge Winners! 🌸

Congratulations to all our community participants!

Adis Hodzic – Community Spotlight

We are honored to recognize Adis Hodzic as our May 2025 Community…

Kudos to the April Top 10 Community Stars!

Thanks for all your good work in the Community!

Leaderboard > Microsoft Dynamics CRM (Archived)

#1
Mohamed Amine Mahmoudi Profile Picture

Mohamed Amine Mahmoudi 83 Super User 2025 Season 1

#2
Community Member Profile Picture

Community Member 52

#3
Victor Onyebuchi Profile Picture

Victor Onyebuchi 6

Overall leaderboard

Featured topics

Product updates

Dynamics 365 release plans