VistA-WorldVistAEHR/r/MEDICINE-MC/MCARUTL5.m

39 lines
1.6 KiB
Mathematica

MCARUTL5 ;HOIFO/WAA-UTILITY FOR VALIDATING ENTRY ;04/13/01 12:00
;;2.3;Medicine;**33**;09/13/1996
;
; VALID Validation function
;
; MC*2.3*33 this is a new module to validate the entry
; is for the stated patient and matched the one on the "AC"
; The subroutine will work out the "AC" from the procedure.
; This will ensure that "AC" that the main program is using
; and the "AC" that I am building are one and the same.
; if they don't match I will not validate it.
;
;Input:
; ROOT = The root Global Reference for the entry.
; IEN = The Internal entry number for the procedure being checked
; DFN = The Patient DFN with in the Medicine Patient file.
;
;Outout:
; VALID = 1 or 0
; 1 = The entry is a procedure for the indicated Patient
; 0 = The entry is not a procedure for the indicated Patient
;
VALID(ROOT,IEN,DFN) ; Main entry point for this function
N VALID,LINE,FN
S VALID=0 ; Init VALID to 0
S FN=$P(ROOT,"(",2) ; parce out the internal entry number
S LINE=$G(^MCAR(FN,IEN,0)) ; validate that the entry exists
I LINE'="" D
. N IEN697,PL,PRODFN,PRODT
. S IEN697=$O(^MCAR(697.2,"C",ROOT,0)) Q:IEN697<1 ; get the procedure info
. S PL=$P(^MCAR(697.2,IEN697,0),U,12) Q:PL="" ; get the location if the pat DFN within the procedure
. S PRODFN=$$GET1^DIQ(FN,IEN,PL,"I") Q:PRODFN<1 ; get the pat DFN
. Q:PRODFN'=DFN ; compare the pat DFN from the procedure with the passed DFN
. S PRODT=9999999.9999-$P(LINE,U) ; get the Procedure date and invert it
. I '$D(^MCAR(690,"AC",PRODFN,PRODT,ROOT,IEN)) Q ; check to see if the entry is in the a valid entry within 690 "AC" Xref
. S VALID=1 ; Valid entry
. Q
Q VALID