Beispiel #1
0
 /// <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;
 }
Beispiel #2
0
        /// <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;
        }
Beispiel #4
0
        /// <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;
        }
Beispiel #5
0
        /// <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;
        }
Beispiel #6
0
 /// <summary>
 /// Revises the encounter.
 /// </summary>
 /// <param name="encounter">The encounter.</param>
 public virtual void ReviseEncounter( Encounter encounter)
 {
     Check.IsNotNull ( encounter, () => Encounter );
     Encounter = encounter;
 }
Beispiel #7
0
 /// <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;
 }
Beispiel #8
0
 /// <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;
 }
Beispiel #9
0
 /// <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;
 }