/// <summary> /// Create original identifier for a link /// </summary> private void CreateOriginalIdentifier(IDbConnection conn, IDbTransaction tx, decimal identifier, HealthServiceRecordSite healthServiceRecordSite, DomainIdentifier id) { IDbCommand cmd = DbUtil.CreateCommandStoredProc(conn, tx); try { // Participant HealthcareParticipant paticipantComponent = healthServiceRecordSite.Component as HealthcareParticipant; cmd.CommandText = "add_link_hc_ptcpt_orig_id"; cmd.Parameters.Add(DbUtil.CreateParameterIn(cmd, "hsr_id_in", DbType.Decimal, identifier)); cmd.Parameters.Add(DbUtil.CreateParameterIn(cmd, "ptcpt_id_in", DbType.Decimal, paticipantComponent.Id)); cmd.Parameters.Add(DbUtil.CreateParameterIn(cmd, "ptcpt_cls_in", DbType.Decimal, (decimal)healthServiceRecordSite.SiteRoleType)); cmd.Parameters.Add(DbUtil.CreateParameterIn(cmd, "orig_id_domain_in", DbType.StringFixedLength, id.Domain)); cmd.Parameters.Add(DbUtil.CreateParameterIn(cmd, "orig_id_in", DbType.StringFixedLength, (object)id.Identifier ?? DBNull.Value)); cmd.Parameters.Add(DbUtil.CreateParameterIn(cmd, "license_ind_in", DbType.Boolean, id.IsLicenseAuthority)); // Insert cmd.ExecuteNonQuery(); } finally { cmd.Dispose(); } }
/// <summary> /// Link a service delivery location record to an HSR /// </summary> private void LinkHealthServiceRecord(IDbConnection conn, IDbTransaction tx, decimal hsrId, HealthServiceRecordSite loc) { IDbCommand cmd = DbUtil.CreateCommandStoredProc(conn, tx); try { cmd.CommandText = "link_plc"; // Parameters cmd.Parameters.Add(DbUtil.CreateParameterIn(cmd, "hsr_id_in", DbType.Decimal, hsrId)); cmd.Parameters.Add(DbUtil.CreateParameterIn(cmd, "plc_id_in", DbType.Decimal, (loc.Component as Place).Id)); cmd.Parameters.Add(DbUtil.CreateParameterIn(cmd, "plc_cls_in", DbType.Decimal, (decimal)loc.SiteRoleType)); // Insert cmd.ExecuteNonQuery(); } finally { cmd.Dispose(); } }
/// <summary> /// Link participant to a health service record /// </summary> private void LinkHealthServiceRecord(IDbConnection conn, IDbTransaction tx, decimal identifier, HealthServiceRecordSite healthServiceRecordSite) { IDbCommand cmd = DbUtil.CreateCommandStoredProc(conn, tx); try { cmd.CommandText = "link_hc_ptcpt"; // Represented organization HealthcareParticipant paticipantComponent = healthServiceRecordSite.Component as HealthcareParticipant; var repOrganizations = from HealthServiceRecordComponent comp in paticipantComponent.Components where (comp.Site as HealthServiceRecordSite).SiteRoleType == HealthServiceRecordSiteRoleType.RepresentitiveOf select comp; HealthcareParticipant representedOrganization = repOrganizations.Count() > 0 ? repOrganizations.First() as HealthcareParticipant : null; if (representedOrganization != null) { representedOrganization.Id = Convert.ToDecimal(Persist(conn, tx, representedOrganization, false).Identifier); } // Parameters cmd.Parameters.Add(DbUtil.CreateParameterIn(cmd, "hsr_id_in", DbType.Decimal, identifier)); cmd.Parameters.Add(DbUtil.CreateParameterIn(cmd, "ptcpt_id_in", DbType.Decimal, paticipantComponent.Id)); cmd.Parameters.Add(DbUtil.CreateParameterIn(cmd, "ptcpt_cls_in", DbType.Decimal, (decimal)healthServiceRecordSite.SiteRoleType)); cmd.Parameters.Add(DbUtil.CreateParameterIn(cmd, "ptcpt_rep_org_id_in", DbType.Decimal, representedOrganization == null ? DBNull.Value : (object)representedOrganization.Id)); // Insert cmd.ExecuteNonQuery(); // Insert original identifiers if (healthServiceRecordSite.OriginalIdentifier != null) { foreach (var id in healthServiceRecordSite.OriginalIdentifier) { CreateOriginalIdentifier(conn, tx, identifier, healthServiceRecordSite, id); } } } finally { cmd.Dispose(); } }