/// <summary> /// If the visit does not have a NidaDrugQuestionnaire, then it returns a newly created NidaDrugQuestionnaire, /// else, it returns an existing one from the visit. /// </summary> /// <param name="visit">The visit.</param> /// <returns>A NidaDrugQuestionnaire.</returns> public NidaDrugQuestionnaire CreateNidaDrugQuestionnaire(Visit visit) { Check.IsNotNull(visit, "visit is required."); NidaDrugQuestionnaire nidaDrugQuestionnaire; var existingNidaDrugQuestionnaire = _nidaDrugQuestionnaireRepository.GetNidaDrugQuestionnaireInVisit(visit.Key); if (existingNidaDrugQuestionnaire != null) { nidaDrugQuestionnaire = existingNidaDrugQuestionnaire; } else { var activityType = _lookupValueRepository.GetLookupByWellKnownName <ActivityType> (WellKnownNames.VisitModule.ActivityType.NidaDrugQuestionnaire); nidaDrugQuestionnaire = new NidaDrugQuestionnaire(visit, activityType); _nidaDrugQuestionnaireRepository.MakePersistent(nidaDrugQuestionnaire); DomainEvent.Raise(new NidaDrugQuestionnaireCreatedEvent { NidaDrugQuestionnaire = nidaDrugQuestionnaire }); } return(nidaDrugQuestionnaire); }
/// <summary> /// Revises the and calculate. /// </summary> /// <param name="haveYouUsedDrugsIndicator">The have you used drugs indicator.</param> /// <param name="doYouAbuseMoreThanOneDrugIndicator">The do you abuse more than one drug indicator.</param> /// <param name="areYouAbleToStopUsingDrugsIndicator">The are you able to stop using drugs indicator.</param> /// <param name="haveYouHadBlackoutsOrFlashbacksIndicator">The have you had blackouts or flashbacks indicator.</param> /// <param name="doYouFeelBadOrGuiltyIndicator">The do you feel bad or guilty indicator.</param> /// <param name="doesYourSpouseOrParentComplainIndicator">The does your spouse or parent complain indicator.</param> /// <param name="haveYouNeglectedYourFamilyIndicator">The have you neglected your family indicator.</param> /// <param name="haveYouEngagedInIllegalActivitiesIndicator">The have you engaged in illegal activities indicator.</param> /// <param name="haveYouEverExperiencedWithdrawalSymptomsIndicator">The have you ever experienced withdrawal symptoms indicator.</param> /// <param name="haveYouHadMedicalProblemsIndicator">The have you had medical problems indicator.</param> public virtual void ReviseAndCalculate(bool?haveYouUsedDrugsIndicator, bool?doYouAbuseMoreThanOneDrugIndicator, bool?areYouAbleToStopUsingDrugsIndicator, bool?haveYouHadBlackoutsOrFlashbacksIndicator, bool?doYouFeelBadOrGuiltyIndicator, bool?doesYourSpouseOrParentComplainIndicator, bool?haveYouNeglectedYourFamilyIndicator, bool?haveYouEngagedInIllegalActivitiesIndicator, bool?haveYouEverExperiencedWithdrawalSymptomsIndicator, bool?haveYouHadMedicalProblemsIndicator) { HaveYouUsedDrugsIndicator = haveYouUsedDrugsIndicator; DoYouAbuseMoreThanOneDrugIndicator = doYouAbuseMoreThanOneDrugIndicator; AreYouAbleToStopUsingDrugsIndicator = areYouAbleToStopUsingDrugsIndicator; HaveYouHadBlackoutsOrFlashbacksIndicator = haveYouHadBlackoutsOrFlashbacksIndicator; DoYouFeelBadOrGuiltyIndicator = doYouFeelBadOrGuiltyIndicator; DoesYourSpouseOrParentComplainIndicator = doesYourSpouseOrParentComplainIndicator; HaveYouNeglectedYourFamilyIndicator = haveYouNeglectedYourFamilyIndicator; HaveYouEngagedInIllegalActivitiesIndicator = haveYouEngagedInIllegalActivitiesIndicator; HaveYouEverExperiencedWithdrawalSymptomsIndicator = haveYouEverExperiencedWithdrawalSymptomsIndicator; HaveYouHadMedicalProblemsIndicator = haveYouHadMedicalProblemsIndicator; SeverityScore = InterpretAnswer(_haveYouUsedDrugsIndicator) + InterpretAnswer(_doYouAbuseMoreThanOneDrugIndicator) + InterpretAnswer(_areYouAbleToStopUsingDrugsIndicator, true) + InterpretAnswer(_haveYouHadBlackoutsOrFlashbacksIndicator) + InterpretAnswer(_doYouFeelBadOrGuiltyIndicator) + InterpretAnswer(_doesYourSpouseOrParentComplainIndicator) + InterpretAnswer(_haveYouNeglectedYourFamilyIndicator) + InterpretAnswer(_haveYouEngagedInIllegalActivitiesIndicator) + InterpretAnswer(_haveYouEverExperiencedWithdrawalSymptomsIndicator) + InterpretAnswer(_haveYouHadMedicalProblemsIndicator); NidaDrugQuestionnaire nidaDrugQuestionnaire = null; if (SeverityScore > 0) { nidaDrugQuestionnaire = ScheduleNidaDrugQuestionnaire(); } else { var socialHistoryRepository = IoC.CurrentContainer.Resolve <ISocialHistoryRepository> (); SocialHistory socialHistory = socialHistoryRepository.GetSocialHistoryInVisit(Visit.Key); if (socialHistory != null && socialHistory.SocialHistoryDast10.Dast10TimesPastYearUsedIllegalDrugOrPrescriptionMedicationForNonMedicalReasonsNumber.GetValueOrDefault() > 0) { nidaDrugQuestionnaire = ScheduleNidaDrugQuestionnaire(); } } SetDast10Result(nidaDrugQuestionnaire); }
/// <summary> /// Sets the dast10 result. /// </summary> /// <param name="nidaDrugQuestionnaire">The nida drug questionnaire.</param> /// <returns>A boolean value.</returns> public virtual bool SetDast10Result(NidaDrugQuestionnaire nidaDrugQuestionnaire) { int severityScore = SeverityScore.GetValueOrDefault(); int dast10Result = 0; if (SeverityScore.GetValueOrDefault() < MinConsiderableSeverityScore) { dast10Result = ResultAsReassesAnnually; } else { if (severityScore >= SeverityScoreThreshold) { dast10Result = ResultAsScheduleFollowUp; } else { if (severityScore >= MinConsiderableSeverityScore && severityScore < SeverityScoreThreshold) { if (nidaDrugQuestionnaire != null && nidaDrugQuestionnaire.NidaDrugQuestionnaireIndicator.HasValue) { dast10Result = nidaDrugQuestionnaire.NidaDrugQuestionnaireIndicator.Value ? ResultAsScheduleFollowUp : ResultAsBriefAdvice; } } else { dast10Result = ResultAsReassesAnnually; } } } bool dast10ResultChanged = false; if (Dast10Result != dast10Result) { Dast10Result = dast10Result; dast10ResultChanged = true; } return(dast10ResultChanged); }
/// <summary> /// Destroys the NidaDrugQuestionnaire questionnaire. /// </summary> /// <param name="nidaDrugQuestionnaire">The Nida drug questionnaire.</param> public void DestroyNidaDrugQuestionnaire(NidaDrugQuestionnaire nidaDrugQuestionnaire) { _nidaDrugQuestionnaireRepository.MakeTransient(nidaDrugQuestionnaire); }
/// <summary> /// If the visit does not have a NidaDrugQuestionnaire, then it returns a newly created NidaDrugQuestionnaire, /// else, it returns an existing one from the visit. /// </summary> /// <param name="visit">The visit.</param> /// <returns>A NidaDrugQuestionnaire.</returns> public NidaDrugQuestionnaire CreateNidaDrugQuestionnaire( Visit visit ) { Check.IsNotNull(visit, "visit is required."); NidaDrugQuestionnaire nidaDrugQuestionnaire; var existingNidaDrugQuestionnaire = _nidaDrugQuestionnaireRepository.GetNidaDrugQuestionnaireInVisit ( visit.Key ); if ( existingNidaDrugQuestionnaire != null ) { nidaDrugQuestionnaire = existingNidaDrugQuestionnaire; } else { var activityType = _lookupValueRepository.GetLookupByWellKnownName<ActivityType> ( WellKnownNames.VisitModule.ActivityType.NidaDrugQuestionnaire ); nidaDrugQuestionnaire = new NidaDrugQuestionnaire ( visit, activityType ); _nidaDrugQuestionnaireRepository.MakePersistent ( nidaDrugQuestionnaire ); DomainEvent.Raise(new NidaDrugQuestionnaireCreatedEvent { NidaDrugQuestionnaire = nidaDrugQuestionnaire }); } return nidaDrugQuestionnaire; }
/// <summary> /// Destroys the NidaDrugQuestionnaire questionnaire. /// </summary> /// <param name="nidaDrugQuestionnaire">The Nida drug questionnaire.</param> public void DestroyNidaDrugQuestionnaire( NidaDrugQuestionnaire nidaDrugQuestionnaire ) { _nidaDrugQuestionnaireRepository.MakeTransient ( nidaDrugQuestionnaire ); }
/// <summary> /// Sets the dast10 result. /// </summary> /// <param name="nidaDrugQuestionnaire">The nida drug questionnaire.</param> /// <returns>A boolean value.</returns> public virtual bool SetDast10Result( NidaDrugQuestionnaire nidaDrugQuestionnaire ) { int severityScore = SeverityScore.GetValueOrDefault (); int dast10Result = 0; if ( SeverityScore.GetValueOrDefault () < MinConsiderableSeverityScore ) { dast10Result = ResultAsReassesAnnually; } else { if ( severityScore >= SeverityScoreThreshold ) { dast10Result = ResultAsScheduleFollowUp; } else { if ( severityScore >= MinConsiderableSeverityScore && severityScore < SeverityScoreThreshold ) { if (nidaDrugQuestionnaire != null && nidaDrugQuestionnaire.NidaDrugQuestionnaireIndicator.HasValue) { dast10Result = nidaDrugQuestionnaire.NidaDrugQuestionnaireIndicator.Value ? ResultAsScheduleFollowUp : ResultAsBriefAdvice; } } else { dast10Result = ResultAsReassesAnnually; } } } bool dast10ResultChanged = false; if (Dast10Result != dast10Result) { Dast10Result = dast10Result; dast10ResultChanged = true; } return dast10ResultChanged; }