/**
* function to get up to the hourly difference between two dates
* return even negatives
* @param: $date1, $time1 - should be greater than $date2, $time2 for a positive
* @param: $date2, $time2
*/
function getStandardDetailedDateDifference($date1,$time1,$date2,$time2) {
	if(isDateAuthentic($date1) && isDateAuthentic($date2)) {
		//duration
		$duration=0;
		$duration=getStandardDateDifference($date1,$date2);
		if($duration==0) {
			//get the hourly difference
			$timeStamp1=0;
			$timeStamp1=strtotime("$date1 $time1");
			$timeStamp2=0;
			$timeStamp2=strtotime("$date2 $time2");
			$timeDuration=0;
			$timeDuration=strftime('%H',$timeStamp1)-strftime('%H',$timeStamp2);
			if($timeStamp1 && $timeStamp2) {
				return $timeDuration;
			}
		} else {
			return $duration;
		}
	}
}
		}
	}
	
	if($receiptDateYear && $receiptDateMonth && $receiptDateDay) {
		$receiptDate=0;
		$receiptDate="$receiptDateYear-$receiptDateMonth-$receiptDateDay";
		//ensure received at CPHL date is not greater than the current date
		if(getStandardDateDifference($datetime,$receiptDate)<0) {
			$error.="<br /><strong>Received at CPHL Date ".getFormattedDateLessDay($receiptDate)." should not be in the future.</strong><br />Kindly provide an alternative Date<br />";
		}
		//ensure received at CPHL date is not before 01-05-2014
		if(getStandardDateDifference($receiptDate,"2014-05-01")<0) {
			$error.="<br /><strong>Received at CPHL Date ".getFormattedDateLessDay($receiptDate)." should not be prior to 01/May/2014.</strong><br />Kindly provide an alternative Date<br />";
		}
		//ensure collection date is not greater than the received at CPHL date
		if($collectionDateYear && $collectionDateMonth && $collectionDateDay && getStandardDateDifference($receiptDate,$collectionDate)<0) {
			$error.="<br /><strong>Sample Collection Date ".getFormattedDateLessDay($collectionDate)." should not be greater than the Received at CPHL Date ".getFormattedDateLessDay($receiptDate).".</strong><br />Kindly provide an alternative Sample Collection Date<br />";
		}
	}

	//input data
	if(!$error) {
		//log changes
		logTableChange("vl_samples","lrCategory",$modify,getDetailedTableInfo2("vl_samples","id='$modify'","lrCategory"),$lrCategory);
		logTableChange("vl_samples","lrEnvelopeNumber",$modify,getDetailedTableInfo2("vl_samples","id='$modify'","lrEnvelopeNumber"),$lrEnvelopeNumber);
		logTableChange("vl_samples","lrNumericID",$modify,getDetailedTableInfo2("vl_samples","id='$modify'","lrNumericID"),$lrNumericID);
		
		logTableChange("vl_samples","formNumber",$modify,getDetailedTableInfo2("vl_samples","id='$modify'","formNumber"),$formNumber);
		logTableChange("vl_samples","districtID",$modify,getDetailedTableInfo2("vl_samples","id='$modify'","districtID"),$districtID);
		logTableChange("vl_samples","hubID",$modify,getDetailedTableInfo2("vl_samples","id='$modify'","hubID"),$hubID);
		logTableChange("vl_samples","facilityID",$modify,getDetailedTableInfo2("vl_samples","id='$modify'","facilityID"),$facilityID);
					mysqlquery("insert into vl_logs_warnings 
								(logCategory,logDetails,logTableID,created,createdby) 
								values 
								('changedPatientsDateOfBirth','Date of Birth changed from ".getDetailedTableInfo2("vl_patients","uniqueID='$uniqueID' and (artNumber='$artNumber' or otherID='$otherID') order by created desc limit 1","dateOfBirth")." to $dateOfBirth for Patient with ".($artNumber?"ART $artNumber":"").($artNumber && $otherID?", ":"").($otherID?"Other ID $otherID":"")." from Facility ".getDetailedTableInfo2("vl_facilities","id='$facilityID' limit 1","facility").".','$dateOfBirthChangeLogID','$datetime','$trailSessionUser')");
				}
				*/
			}
		}

		//log the repeated viral load test
		if($proceedWithWarningVLRepeatTesting) {
			//log the change of gender warning
			mysqlquery("insert into vl_logs_warnings 
						(logCategory,logDetails,logTableID,created,createdby) 
						values 
						('capturedRepeatVLTest','Captured a repeat VL Test after ".round(getStandardDateDifference($datetime,$mostRecentPatientIDTested)/30.5)." month(s) or ".getStandardDateDifference($datetime,$mostRecentPatientIDTested)." day(s) instead of the recommended $default_viralLoadRepeatTestWindow month(s) for Patient with ".($artNumber?"ART $artNumber":"").($artNumber && $otherID?", ":"").($otherID?"Other ID $otherID":"")." from Facility ".getDetailedTableInfo2("vl_facilities","id='$facilityID' limit 1","facility").".','','$datetime','$trailSessionUser')");
		}

		//log the alternative facility captured
		if($proceedWithWarningAlternativeFacilities) {
			//log the change of gender warning
			mysqlquery("insert into vl_logs_warnings 
						(logCategory,logDetails,logTableID,created,createdby) 
						values 
						('capturedAlternativeFacilityForFormNumber','Form Number $formNumber dispatched to Facility ".getDetailedTableInfo2("vl_facilities","id='$facilityID' limit 1","facility")." but received from Facility ".getDetailedTableInfo2("vl_facilities","id='$facilityIDByFormNumber' limit 1","facility").".','','$datetime','$trailSessionUser')");
		}

		//log patient phone number, if unique
		if($patientPhone && !getDetailedTableInfo2("vl_patients_phone","patientID='$patientID' and phone='$patientPhone' limit 1","id")) {
			mysqlquery("insert into vl_patients_phone 
							(patientID,phone,created,createdby)