/// <summary> /// Creates the service. /// </summary> /// <param name="encounter">The encounter.</param> /// <param name="diagnosis">The diagnosis.</param> /// <param name="medicalProcedure">The medical procedure.</param> /// <param name="primaryIndicator">If set to <c>true</c> [primary indicator].</param> /// <param name="trackingNumber">The tracking number.</param> /// <returns>A service.</returns> public Service CreateService( Encounter encounter, CodedConcept diagnosis, MedicalProcedure medicalProcedure, bool primaryIndicator, long trackingNumber ) { var service = new Service(encounter, diagnosis, medicalProcedure, primaryIndicator, trackingNumber); encounter.AddService ( service ); _serviceRepository.MakePersistent(service); return service; }
/// <summary> /// Creates the claim. /// </summary> /// <param name="encounter">The encounter.</param> /// <param name="payor">The payor.</param> /// <param name="chargeAmount">The charge amount.</param> /// <param name="patientAccount">The patient account.</param> /// <param name="placeOfService">The place of service.</param> /// <param name="serviceDate">The service date.</param> /// <returns> /// A claim object. /// </returns> public Claim CreateClaim(Encounter encounter, Payor payor, Money chargeAmount, PatientAccount patientAccount, Location placeOfService, DateTime serviceDate ) { var claim = new Claim (encounter, payor, chargeAmount, patientAccount, placeOfService, serviceDate ); _claimRepository.MakePersistent ( claim ); return claim; }
/// <summary> /// Synchronizes the service. /// </summary> /// <param name="encounter">The encounter.</param> /// <param name="procedure">The procedure.</param> /// <param name="diagnosis">The diagnosis.</param> /// <returns>A service.</returns> public Service SynchronizeService(Encounter encounter, Procedure procedure, CodedConcept diagnosis) { Check.IsNotNull(encounter, "Encounter is required."); Check.IsNotNull(procedure, "Procedure is required."); Check.IsNotNull(diagnosis, "Diagnosis is required."); var medicalProcedure = _medicalProcedureTranslator.Translate ( procedure ); var service = _serviceRepository.GetByTrackingNumber ( procedure.Key ); var primaryIndicator = ( procedure.ProcedureType != ProcedureType.Activity ); if (service == null) { service = _serviceFactory.CreateService ( encounter, diagnosis, medicalProcedure, primaryIndicator, procedure.Key ); } else { if (encounter.Key != service.Encounter.Key) { service.ReviseEncounter(encounter); } if (diagnosis != service.Diagnosis) { service.ReviseDiagnosis(diagnosis); } if (medicalProcedure != service.MedicalProcedure) { service.ReviseMedicalProcedure(medicalProcedure); } if (procedure.Key != service.TrackingNumber) { service.ReviseTrackingNumber(procedure.Key); } if (primaryIndicator != service.PrimaryIndicator) { service.RevisePrimaryIndicator(primaryIndicator); } if (procedure.BillingUnitCount != service.BillingUnitCount) { service.ReviseBillingUnitCount(procedure.BillingUnitCount); } } //TODO: move them to ctor var currency = _lookupValueRepository.GetLookupByWellKnownName<Currency>(WellKnownNames.CommonModule.Currency.USDollars); service.ReviseChargeAmount(new Money(currency, 1)); var c = new UnitCount ( 1 ); service.ReviseBillingUnitCount ( c ); return service; }
/// <summary> /// Initializes a new instance of the <see cref="Service"/> class. /// </summary> /// <param name="encounter">The encounter.</param> /// <param name="diagnosis">The diagnosis.</param> /// <param name="medicalProcedure">The medical procedure.</param> /// <param name="primaryIndicator">If set to <c>true</c> [primary indicator].</param> /// <param name="trackingNumber">The tracking number.</param> protected internal Service(Encounter encounter, CodedConcept diagnosis, MedicalProcedure medicalProcedure, bool primaryIndicator, long trackingNumber) { Check.IsNotNull(encounter, "Encounter is required."); Check.IsNotNull(diagnosis, "Diagnosis is required."); Check.IsNotNull(medicalProcedure, "Medical procedure is required."); PrimaryIndicator = primaryIndicator; Encounter = encounter; Diagnosis = diagnosis; MedicalProcedure = medicalProcedure; TrackingNumber = trackingNumber; }
/// <summary> /// Initializes a new instance of the <see cref="Claim"/> class. /// </summary> /// <param name="encounter">The encounter.</param> /// <param name="payor">The payor.</param> /// <param name="chargeAmount">The charge amount.</param> /// <param name="patientAccount">The patient account.</param> /// <param name="placeOfService">The place of service.</param> /// <param name="serviceDate">The service date.</param> public Claim(Encounter encounter, Payor payor, Money chargeAmount, PatientAccount patientAccount, Location placeOfService, DateTime serviceDate ) : this() { Check.IsNotNull ( encounter, () => Encounter ); Check.IsNotNull ( payor, () => Payor ); Check.IsNotNull ( chargeAmount, () => ChargeAmount ); Check.IsNotNull ( patientAccount, () => PatientAccount ); Check.IsNotNull ( placeOfService, () => ServiceLocation ); Check.IsNotNull ( serviceDate, () => ServiceDate ); Encounter = encounter; Payor = payor; ChargeAmount = chargeAmount; PatientAccount = patientAccount; ServiceLocation = placeOfService; ServiceDate = serviceDate; }
/// <summary> /// Revises the encounter. /// </summary> /// <param name="encounter">The encounter.</param> public virtual void ReviseEncounter( Encounter encounter) { Check.IsNotNull ( encounter, () => Encounter ); Encounter = encounter; }
/// <summary> /// Creates the encounter. /// </summary> /// <param name="patientAccount">The patient account.</param> /// <param name="placeOfService">The place of service.</param> /// <param name="serviceProvider">The service provider.</param> /// <param name="trackingNumber">The tracking number.</param> /// <param name="serviceDate">The service date.</param> /// <returns>An encounter.</returns> public Encounter CreateEncounter(PatientAccount patientAccount, Location placeOfService, Staff serviceProvider, long trackingNumber, DateTime serviceDate ) { var encounter = new Encounter(patientAccount, placeOfService, serviceProvider, trackingNumber, serviceDate); _encounterRepository.MakePersistent(encounter); return encounter; }
/// <summary> /// Revises the encounter. /// </summary> /// <param name="encounter">The encounter.</param> public virtual void ReviseEncounter(Encounter encounter) { Check.IsNotNull(encounter, "Encounter is required."); Encounter = encounter; }