- VPSPDO2 ;DALOI/KML,WOIFO/BT - PDO OUTPUT DISPLAY - ALLERGIES (Continue);11/20/11 15:30
- ;;1.0;VA POINT OF SERVICE (KIOSKS);**3**;Oct 21, 2011;Build 64
- ;;Per VHA Directive 2004-038, this routine should not be modified.
- ;
- Q
- ;
- BLDADD(OREF) ; build additional allergies section for Patient Entered allergy medication review note
- ; INPUT
- ; OREF : Object Reference for the VPS PDO object
- ;
- D ADDCJ^VPSOBJ(OREF,"Patient-entered allergy reactions/comments")
- N PTIEN S PTIEN=$$GETDFN^VPSOBJ(OREF)
- N LASTMRAR S LASTMRAR=$$GETLSTMR^VPSOBJ(OREF)
- ;
- N HDR S HDR=0
- N VPSX S VPSX=""
- N ALRID,ALRIEN S (ALRID,ALRIEN)=0
- ;
- F S ALRID=$O(^VPS(853.5,PTIEN,"MRAR",LASTMRAR,"ALLERGYADD","B",ALRID)) Q:'ALRID F S ALRIEN=$O(^(ALRID,ALRIEN)) Q:'ALRIEN D
- . D INTADDAL(OREF,ALRIEN) ; initialize additional allergy info
- . D PREPCOM(OREF) ; prepare additional allergies comments to build
- . I 'HDR S HDR=1 D ADDADHDR(OREF) ; build additional allergy header
- . D ADDADALR(OREF) ; build additional allergy items
- . D ADDBLANK^VPSOBJ(OREF) ; add a blank line between each additional allergies
- ;
- D ADDBLANK^VPSOBJ(OREF) ; add a blank line between additional allergies and next section
- Q
- ;
- INTADDAL(OREF,ALRIEN) ; initialize additional allergy info
- ; INPUT
- ; OREF : Object Reference for the VPS PDO object
- ; ALRIEN : Additional Allergy IEN
- ;
- N PTIEN S PTIEN=$$GETDFN^VPSOBJ(OREF)
- N LASTMRAR S LASTMRAR=$$GETLSTMR^VPSOBJ(OREF)
- N STAFF S STAFF=$$GETSTAFF^VPSOBJ(OREF)
- ;
- N ADALRVT S ADALRVT=$$GET1^DIQ(853.53,ALRIEN_","_LASTMRAR_","_PTIEN_",",1,"","ADALRVT") ; Additional allergy entered by the patient
- D SETADDVT^VPSOBJ(OREF,.ADALRVT)
- K ADALRVT
- ;
- N ADALRPR S ADALRPR=$$GET1^DIQ(853.53,ALRIEN_","_LASTMRAR_","_PTIEN_",",1.5,"","ADALRPR") ; Additional allergy typed in by provider
- D SETADDPR^VPSOBJ(OREF,.ADALRPR)
- K ADALRPR
- ;
- N ADDREACT S ADDREACT=$$GET1^DIQ(853.53,ALRIEN_","_LASTMRAR_","_PTIEN_",",2) ; REACTION to the additional allergy typed in by the provider (staff-facing)
- D SETADRCT^VPSOBJ(OREF,ADDREACT)
- ;
- I STAFF D
- . N MARKFOL S MARKFOL=$S($$GET1^DIQ(853.53,ALRIEN_","_LASTMRAR_","_PTIEN_",",4)]"":">>",1:"") ; mark for follow-up for patient facilitated output
- . D SETADDMF^VPSOBJ(OREF,MARKFOL)
- Q
- ;
- PREPCOM(OREF) ; prepare additional allergies comments to build
- ; INPUT
- ; OREF : Object Reference for the VPS PDO object
- ;
- N COL D GETFORMT^VPSOBJ(OREF,.COL)
- N STAFF S STAFF=$$GETSTAFF^VPSOBJ(OREF)
- ;
- I 'STAFF D ; prepare additional veteran comment
- . N ALRVET D GETADDVT^VPSOBJ(OREF,.ALRVET)
- . Q:$G(ALRVET)']""
- . S ^TMP("VPSPUTL1",$J)=0
- . N FALRVET D FCOMM^VPSPUTL1(.ALRVET,$P(COL("ADDALLERGY-VET"),U,2),.FALRVET)
- . N DONTKNOW S DONTKNOW=$$GETDKNW^VPSOBJ(OREF)
- . N FDONTKNW
- . I DONTKNOW]"" S DONTKNOW(1)=" ;"_DONTKNOW D FCOMM^VPSPUTL1(.DONTKNOW,$P(COL("ADDALLERGY-VET"),U,2),.FDONTKNW)
- . N TEMP M TEMP=FALRVET,TEMP=FDONTKNW
- . S ^TMP("VPSPUTL1",$J)=0
- . N ADDCOMM D FCOMM^VPSPUTL1(.TEMP,$P(COL("ADDALLERGY-VET"),U,2),.ADDCOMM)
- . D SETADDFV^VPSOBJ(OREF,.ADDCOMM)
- . K FALRVET,FDONTKNOW,ALRVET,ADDCOMM
- ;
- I STAFF D ; prepare additional comment by provider
- . N ALRPR D GETADDPR^VPSOBJ(OREF,.ALRPR)
- . I $G(ALRPR)]"" D
- . . S ^TMP("VPSPUTL1",$J)=0
- . . N FALRPR D FCOMM^VPSPUTL1(.ALRPR,$P(COL("ALLERNM"),U,2),.FALRPR)
- . . D SETADDFP^VPSOBJ(OREF,.FALRPR)
- . . K FALRPR
- . ;
- . N ADDREACT S ADDREACT=$$GETADRCT^VPSOBJ(OREF)
- . I ADDREACT]"" D
- . . S ADDREACT(1)=ADDREACT
- . . S ^TMP("VPSPUTL1",$J)=0
- . . N FADDRCT D FCOMM^VPSPUTL1(.ADDREACT,$P(COL("REACTION"),U,2),.FADDRCT)
- . . D SETADDFR^VPSOBJ(OREF,.FADDRCT)
- . . K FADDRCT
- Q
- ;
- ADDADHDR(OREF) ; build additional allergy header
- ; INPUT
- ; OREF : Object Reference for the VPS PDO object
- ;
- N COL D GETFORMT^VPSOBJ(OREF,.COL)
- N VPSX S VPSX=""
- S VPSX=$$SETFLD^VPSPUTL1("Name",VPSX,COL("ALLERNM"))
- S VPSX=$$SETFLD^VPSPUTL1("Reaction",VPSX,COL("REACTION"))
- D ADDPDO^VPSOBJ(OREF,VPSX)
- Q
- ;
- ADDADALR(OREF) ; build additional allergy items
- ; INPUT
- ; OREF : Object Reference for the VPS PDO object
- ;
- N COL D GETFORMT^VPSOBJ(OREF,.COL)
- N STAFF S STAFF=$$GETSTAFF^VPSOBJ(OREF)
- ;
- I 'STAFF D
- . N ADDCOMM D GETADDFV^VPSOBJ(OREF,.ADDCOMM)
- . N VPSX S VPSX=""
- . N RSS S RSS=0
- . F S RSS=$O(ADDCOMM(RSS)) Q:'RSS D
- . . S VPSX=$$SETFLD^VPSPUTL1(ADDCOMM(RSS),VPSX,COL("ADDALLERGY-VET"))
- . . D ADDPDO^VPSOBJ(OREF,VPSX)
- ;
- I STAFF D
- . N ADDCOMM D GETADDFP^VPSOBJ(OREF,.ADDCOMM)
- . N REACT D GETADDFR^VPSOBJ(OREF,.REACT)
- . N MARKFOL S MARKFOL=0
- . N VPSX S VPSX=""
- . N RSS S RSS=0
- . F S RSS=$O(ADDCOMM(RSS)) Q:'RSS D
- . . I RSS=1 D
- . . . S MARKFOL=$$GETADDMF^VPSOBJ(OREF)
- . . . S VPSX=$$SETFLD^VPSPUTL1(MARKFOL,VPSX,COL("FOLLOWUP"))
- . . S VPSX=$$SETFLD^VPSPUTL1(ADDCOMM(RSS),VPSX,COL("ALLERNM"))
- . . S VPSX=$$SETFLD^VPSPUTL1($G(REACT(RSS)),VPSX,COL("REACTION"))
- . . D ADDPDO^VPSOBJ(OREF,VPSX)
- . ;build the rest of reaction incase reaction lines are longer than allergy lines
- . S RSS=$O(ADDCOMM(""),-1)
- . S VPSX=""
- . F S RSS=$O(REACT(RSS)) Q:'RSS D
- . . S VPSX=$$SETFLD^VPSPUTL1(MARKFOL,VPSX,COL("FOLLOWUP"))
- . . S VPSX=$$SETFLD^VPSPUTL1($G(REACT(RSS)),VPSX,COL("REACTION"))
- . . D ADDPDO^VPSOBJ(OREF,VPSX)
- Q
- ;
- GETCH(OREF) ;retrieve any changes to allergy profile since last MRAR
- ; ICR 5843 - Controlled Subscription for read of PATIENT ALLERGIES file (120.8)
- ; INPUT
- ; OREF : Object Reference for the VPS PDO object
- ;
- N PTIEN S PTIEN=$$GETDFN^VPSOBJ(OREF)
- N LASTMRAR S LASTMRAR=$$GETLSTMR^VPSOBJ(OREF)
- N ALLITMS D GETALLR^VPSOBJ(OREF,.ALLITMS)
- ;
- N HDR S HDR=0
- N VPSX S VPSX=""
- N VDA S VDA=0
- ;
- F S VDA=$O(^GMR(120.8,"B",PTIEN,VDA)) Q:'VDA D
- . Q:LASTMRAR>+$$GET1^DIQ(120.8,VDA_",",20,"I") ; if VPS trxn date/time is greater than what is stored in patient allergy profile then not a changed or added allergy so skip this allergy entry
- . Q:+$$GET1^DIQ(120.8,VDA_",",21,"I")=0 ; if VERIFIED BY is not populated do not display the allergy
- . ;
- . ; -- get the newly entered allergy
- . N ANAME S ANAME=$$GET1^DIQ(120.8,VDA_",",.02)
- . ;
- . ; -- set action
- . N ENTERR S ENTERR=+$$GET1^DIQ(120.8,VDA_",",22,"I") ;entered in error
- . N ACTION
- . I '$D(ALLITMS(ANAME)) S ACTION=$S(ENTERR:"Deleted",1:"Added")
- . I $D(ALLITMS(ANAME)) S ACTION=$S(ENTERR:"Deleted",1:"Changed")
- . ;
- . ; -- get reactions
- . N REACTION
- . N VIEN S VIEN=0
- . N SEQ S SEQ=0
- . F S VIEN=$O(^GMR(120.8,VDA,10,VIEN)) Q:'VIEN D
- . . N VIENS S VIENS=VIEN_","_VDA_","
- . . S SEQ=SEQ+1,REACTION(SEQ)=$$GET1^DIQ(120.81,VIENS,".01")
- . ;
- . ; build allergies changes
- . I 'HDR S HDR=1 D ADDCHGHD(OREF)
- . D ADDCHG(OREF,ANAME,.REACTION,ACTION)
- . D ADDBLANK^VPSOBJ(OREF) ; add a blank line between allergy sets with multiple reactions
- Q
- ;
- ADDCHGHD(OREF) ; build allergies changes header
- D ADDCJ^VPSOBJ(OREF,"*** CHANGES TO ALLERGIES SINCE MRAR LAST COMPLETED ***")
- N COL D GETFORMT^VPSOBJ(OREF,.COL)
- N VPSX S VPSX=""
- S VPSX=$$SETFLD^VPSPUTL1("Name",VPSX,COL("ALLERNM"))
- S VPSX=$$SETFLD^VPSPUTL1("Reaction",VPSX,COL("REACTION"))
- S VPSX=$$SETFLD^VPSPUTL1("Action",VPSX,COL("ACTION"))
- D ADDPDO^VPSOBJ(OREF,VPSX)
- Q
- ;
- ADDCHG(OREF,ANAME,REACTION,ACTION) ; build allergies changes
- ; INPUT
- ; OREF : Object Reference for the VPS PDO object
- ; ANAME : newly entered Allergy name
- ; REACTION : array of reactions of the allergy
- ; ACTION : what to do with the reaction review
- ;
- N COL D GETFORMT^VPSOBJ(OREF,.COL)
- N VPSX S VPSX=""
- S VPSX=$$SETFLD^VPSPUTL1(ANAME,VPSX,COL("ALLERNM"))
- S VPSX=$$SETFLD^VPSPUTL1(REACTION(1),VPSX,COL("REACTION"))
- S VPSX=$$SETFLD^VPSPUTL1(ACTION,VPSX,COL("ACTION"))
- D ADDPDO^VPSOBJ(OREF,VPSX)
- ;
- N RSS S RSS=1
- S VPSX=""
- F S RSS=$O(REACTION(RSS)) Q:'RSS D
- . S VPSX=$$SETFLD^VPSPUTL1(REACTION(RSS),VPSX,COL("REACTION"))
- . D ADDPDO^VPSOBJ(OREF,VPSX)
- Q
- --- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HVPSPDO2 7929 printed Mar 13, 2025@21:48:19 Page 2
- VPSPDO2 ;DALOI/KML,WOIFO/BT - PDO OUTPUT DISPLAY - ALLERGIES (Continue);11/20/11 15:30
- +1 ;;1.0;VA POINT OF SERVICE (KIOSKS);**3**;Oct 21, 2011;Build 64
- +2 ;;Per VHA Directive 2004-038, this routine should not be modified.
- +3 ;
- +4 QUIT
- +5 ;
- BLDADD(OREF) ; build additional allergies section for Patient Entered allergy medication review note
- +1 ; INPUT
- +2 ; OREF : Object Reference for the VPS PDO object
- +3 ;
- +4 DO ADDCJ^VPSOBJ(OREF,"Patient-entered allergy reactions/comments")
- +5 NEW PTIEN
- SET PTIEN=$$GETDFN^VPSOBJ(OREF)
- +6 NEW LASTMRAR
- SET LASTMRAR=$$GETLSTMR^VPSOBJ(OREF)
- +7 ;
- +8 NEW HDR
- SET HDR=0
- +9 NEW VPSX
- SET VPSX=""
- +10 NEW ALRID,ALRIEN
- SET (ALRID,ALRIEN)=0
- +11 ;
- +12 FOR
- SET ALRID=$ORDER(^VPS(853.5,PTIEN,"MRAR",LASTMRAR,"ALLERGYADD","B",ALRID))
- if 'ALRID
- QUIT
- FOR
- SET ALRIEN=$ORDER(^(ALRID,ALRIEN))
- if 'ALRIEN
- QUIT
- Begin DoDot:1
- +13 ; initialize additional allergy info
- DO INTADDAL(OREF,ALRIEN)
- +14 ; prepare additional allergies comments to build
- DO PREPCOM(OREF)
- +15 ; build additional allergy header
- IF 'HDR
- SET HDR=1
- DO ADDADHDR(OREF)
- +16 ; build additional allergy items
- DO ADDADALR(OREF)
- +17 ; add a blank line between each additional allergies
- DO ADDBLANK^VPSOBJ(OREF)
- End DoDot:1
- +18 ;
- +19 ; add a blank line between additional allergies and next section
- DO ADDBLANK^VPSOBJ(OREF)
- +20 QUIT
- +21 ;
- INTADDAL(OREF,ALRIEN) ; initialize additional allergy info
- +1 ; INPUT
- +2 ; OREF : Object Reference for the VPS PDO object
- +3 ; ALRIEN : Additional Allergy IEN
- +4 ;
- +5 NEW PTIEN
- SET PTIEN=$$GETDFN^VPSOBJ(OREF)
- +6 NEW LASTMRAR
- SET LASTMRAR=$$GETLSTMR^VPSOBJ(OREF)
- +7 NEW STAFF
- SET STAFF=$$GETSTAFF^VPSOBJ(OREF)
- +8 ;
- +9 ; Additional allergy entered by the patient
- NEW ADALRVT
- SET ADALRVT=$$GET1^DIQ(853.53,ALRIEN_","_LASTMRAR_","_PTIEN_",",1,"","ADALRVT")
- +10 DO SETADDVT^VPSOBJ(OREF,.ADALRVT)
- +11 KILL ADALRVT
- +12 ;
- +13 ; Additional allergy typed in by provider
- NEW ADALRPR
- SET ADALRPR=$$GET1^DIQ(853.53,ALRIEN_","_LASTMRAR_","_PTIEN_",",1.5,"","ADALRPR")
- +14 DO SETADDPR^VPSOBJ(OREF,.ADALRPR)
- +15 KILL ADALRPR
- +16 ;
- +17 ; REACTION to the additional allergy typed in by the provider (staff-facing)
- NEW ADDREACT
- SET ADDREACT=$$GET1^DIQ(853.53,ALRIEN_","_LASTMRAR_","_PTIEN_",",2)
- +18 DO SETADRCT^VPSOBJ(OREF,ADDREACT)
- +19 ;
- +20 IF STAFF
- Begin DoDot:1
- +21 ; mark for follow-up for patient facilitated output
- NEW MARKFOL
- SET MARKFOL=$SELECT($$GET1^DIQ(853.53,ALRIEN_","_LASTMRAR_","_PTIEN_",",4)]"":">>",1:"")
- +22 DO SETADDMF^VPSOBJ(OREF,MARKFOL)
- End DoDot:1
- +23 QUIT
- +24 ;
- PREPCOM(OREF) ; prepare additional allergies comments to build
- +1 ; INPUT
- +2 ; OREF : Object Reference for the VPS PDO object
- +3 ;
- +4 NEW COL
- DO GETFORMT^VPSOBJ(OREF,.COL)
- +5 NEW STAFF
- SET STAFF=$$GETSTAFF^VPSOBJ(OREF)
- +6 ;
- +7 ; prepare additional veteran comment
- IF 'STAFF
- Begin DoDot:1
- +8 NEW ALRVET
- DO GETADDVT^VPSOBJ(OREF,.ALRVET)
- +9 if $GET(ALRVET)']""
- QUIT
- +10 SET ^TMP("VPSPUTL1",$JOB)=0
- +11 NEW FALRVET
- DO FCOMM^VPSPUTL1(.ALRVET,$PIECE(COL("ADDALLERGY-VET"),U,2),.FALRVET)
- +12 NEW DONTKNOW
- SET DONTKNOW=$$GETDKNW^VPSOBJ(OREF)
- +13 NEW FDONTKNW
- +14 IF DONTKNOW]""
- SET DONTKNOW(1)=" ;"_DONTKNOW
- DO FCOMM^VPSPUTL1(.DONTKNOW,$PIECE(COL("ADDALLERGY-VET"),U,2),.FDONTKNW)
- +15 NEW TEMP
- MERGE TEMP=FALRVET,TEMP=FDONTKNW
- +16 SET ^TMP("VPSPUTL1",$JOB)=0
- +17 NEW ADDCOMM
- DO FCOMM^VPSPUTL1(.TEMP,$PIECE(COL("ADDALLERGY-VET"),U,2),.ADDCOMM)
- +18 DO SETADDFV^VPSOBJ(OREF,.ADDCOMM)
- +19 KILL FALRVET,FDONTKNOW,ALRVET,ADDCOMM
- End DoDot:1
- +20 ;
- +21 ; prepare additional comment by provider
- IF STAFF
- Begin DoDot:1
- +22 NEW ALRPR
- DO GETADDPR^VPSOBJ(OREF,.ALRPR)
- +23 IF $GET(ALRPR)]""
- Begin DoDot:2
- +24 SET ^TMP("VPSPUTL1",$JOB)=0
- +25 NEW FALRPR
- DO FCOMM^VPSPUTL1(.ALRPR,$PIECE(COL("ALLERNM"),U,2),.FALRPR)
- +26 DO SETADDFP^VPSOBJ(OREF,.FALRPR)
- +27 KILL FALRPR
- End DoDot:2
- +28 ;
- +29 NEW ADDREACT
- SET ADDREACT=$$GETADRCT^VPSOBJ(OREF)
- +30 IF ADDREACT]""
- Begin DoDot:2
- +31 SET ADDREACT(1)=ADDREACT
- +32 SET ^TMP("VPSPUTL1",$JOB)=0
- +33 NEW FADDRCT
- DO FCOMM^VPSPUTL1(.ADDREACT,$PIECE(COL("REACTION"),U,2),.FADDRCT)
- +34 DO SETADDFR^VPSOBJ(OREF,.FADDRCT)
- +35 KILL FADDRCT
- End DoDot:2
- End DoDot:1
- +36 QUIT
- +37 ;
- ADDADHDR(OREF) ; build additional allergy header
- +1 ; INPUT
- +2 ; OREF : Object Reference for the VPS PDO object
- +3 ;
- +4 NEW COL
- DO GETFORMT^VPSOBJ(OREF,.COL)
- +5 NEW VPSX
- SET VPSX=""
- +6 SET VPSX=$$SETFLD^VPSPUTL1("Name",VPSX,COL("ALLERNM"))
- +7 SET VPSX=$$SETFLD^VPSPUTL1("Reaction",VPSX,COL("REACTION"))
- +8 DO ADDPDO^VPSOBJ(OREF,VPSX)
- +9 QUIT
- +10 ;
- ADDADALR(OREF) ; build additional allergy items
- +1 ; INPUT
- +2 ; OREF : Object Reference for the VPS PDO object
- +3 ;
- +4 NEW COL
- DO GETFORMT^VPSOBJ(OREF,.COL)
- +5 NEW STAFF
- SET STAFF=$$GETSTAFF^VPSOBJ(OREF)
- +6 ;
- +7 IF 'STAFF
- Begin DoDot:1
- +8 NEW ADDCOMM
- DO GETADDFV^VPSOBJ(OREF,.ADDCOMM)
- +9 NEW VPSX
- SET VPSX=""
- +10 NEW RSS
- SET RSS=0
- +11 FOR
- SET RSS=$ORDER(ADDCOMM(RSS))
- if 'RSS
- QUIT
- Begin DoDot:2
- +12 SET VPSX=$$SETFLD^VPSPUTL1(ADDCOMM(RSS),VPSX,COL("ADDALLERGY-VET"))
- +13 DO ADDPDO^VPSOBJ(OREF,VPSX)
- End DoDot:2
- End DoDot:1
- +14 ;
- +15 IF STAFF
- Begin DoDot:1
- +16 NEW ADDCOMM
- DO GETADDFP^VPSOBJ(OREF,.ADDCOMM)
- +17 NEW REACT
- DO GETADDFR^VPSOBJ(OREF,.REACT)
- +18 NEW MARKFOL
- SET MARKFOL=0
- +19 NEW VPSX
- SET VPSX=""
- +20 NEW RSS
- SET RSS=0
- +21 FOR
- SET RSS=$ORDER(ADDCOMM(RSS))
- if 'RSS
- QUIT
- Begin DoDot:2
- +22 IF RSS=1
- Begin DoDot:3
- +23 SET MARKFOL=$$GETADDMF^VPSOBJ(OREF)
- +24 SET VPSX=$$SETFLD^VPSPUTL1(MARKFOL,VPSX,COL("FOLLOWUP"))
- End DoDot:3
- +25 SET VPSX=$$SETFLD^VPSPUTL1(ADDCOMM(RSS),VPSX,COL("ALLERNM"))
- +26 SET VPSX=$$SETFLD^VPSPUTL1($GET(REACT(RSS)),VPSX,COL("REACTION"))
- +27 DO ADDPDO^VPSOBJ(OREF,VPSX)
- End DoDot:2
- +28 ;build the rest of reaction incase reaction lines are longer than allergy lines
- +29 SET RSS=$ORDER(ADDCOMM(""),-1)
- +30 SET VPSX=""
- +31 FOR
- SET RSS=$ORDER(REACT(RSS))
- if 'RSS
- QUIT
- Begin DoDot:2
- +32 SET VPSX=$$SETFLD^VPSPUTL1(MARKFOL,VPSX,COL("FOLLOWUP"))
- +33 SET VPSX=$$SETFLD^VPSPUTL1($GET(REACT(RSS)),VPSX,COL("REACTION"))
- +34 DO ADDPDO^VPSOBJ(OREF,VPSX)
- End DoDot:2
- End DoDot:1
- +35 QUIT
- +36 ;
- GETCH(OREF) ;retrieve any changes to allergy profile since last MRAR
- +1 ; ICR 5843 - Controlled Subscription for read of PATIENT ALLERGIES file (120.8)
- +2 ; INPUT
- +3 ; OREF : Object Reference for the VPS PDO object
- +4 ;
- +5 NEW PTIEN
- SET PTIEN=$$GETDFN^VPSOBJ(OREF)
- +6 NEW LASTMRAR
- SET LASTMRAR=$$GETLSTMR^VPSOBJ(OREF)
- +7 NEW ALLITMS
- DO GETALLR^VPSOBJ(OREF,.ALLITMS)
- +8 ;
- +9 NEW HDR
- SET HDR=0
- +10 NEW VPSX
- SET VPSX=""
- +11 NEW VDA
- SET VDA=0
- +12 ;
- +13 FOR
- SET VDA=$ORDER(^GMR(120.8,"B",PTIEN,VDA))
- if 'VDA
- QUIT
- Begin DoDot:1
- +14 ; if VPS trxn date/time is greater than what is stored in patient allergy profile then not a changed or added allergy so skip this allergy entry
- if LASTMRAR>+$$GET1^DIQ(120.8,VDA_",",20,"I")
- QUIT
- +15 ; if VERIFIED BY is not populated do not display the allergy
- if +$$GET1^DIQ(120.8,VDA_",",21,"I")=0
- QUIT
- +16 ;
- +17 ; -- get the newly entered allergy
- +18 NEW ANAME
- SET ANAME=$$GET1^DIQ(120.8,VDA_",",.02)
- +19 ;
- +20 ; -- set action
- +21 ;entered in error
- NEW ENTERR
- SET ENTERR=+$$GET1^DIQ(120.8,VDA_",",22,"I")
- +22 NEW ACTION
- +23 IF '$DATA(ALLITMS(ANAME))
- SET ACTION=$SELECT(ENTERR:"Deleted",1:"Added")
- +24 IF $DATA(ALLITMS(ANAME))
- SET ACTION=$SELECT(ENTERR:"Deleted",1:"Changed")
- +25 ;
- +26 ; -- get reactions
- +27 NEW REACTION
- +28 NEW VIEN
- SET VIEN=0
- +29 NEW SEQ
- SET SEQ=0
- +30 FOR
- SET VIEN=$ORDER(^GMR(120.8,VDA,10,VIEN))
- if 'VIEN
- QUIT
- Begin DoDot:2
- +31 NEW VIENS
- SET VIENS=VIEN_","_VDA_","
- +32 SET SEQ=SEQ+1
- SET REACTION(SEQ)=$$GET1^DIQ(120.81,VIENS,".01")
- End DoDot:2
- +33 ;
- +34 ; build allergies changes
- +35 IF 'HDR
- SET HDR=1
- DO ADDCHGHD(OREF)
- +36 DO ADDCHG(OREF,ANAME,.REACTION,ACTION)
- +37 ; add a blank line between allergy sets with multiple reactions
- DO ADDBLANK^VPSOBJ(OREF)
- End DoDot:1
- +38 QUIT
- +39 ;
- ADDCHGHD(OREF) ; build allergies changes header
- +1 DO ADDCJ^VPSOBJ(OREF,"*** CHANGES TO ALLERGIES SINCE MRAR LAST COMPLETED ***")
- +2 NEW COL
- DO GETFORMT^VPSOBJ(OREF,.COL)
- +3 NEW VPSX
- SET VPSX=""
- +4 SET VPSX=$$SETFLD^VPSPUTL1("Name",VPSX,COL("ALLERNM"))
- +5 SET VPSX=$$SETFLD^VPSPUTL1("Reaction",VPSX,COL("REACTION"))
- +6 SET VPSX=$$SETFLD^VPSPUTL1("Action",VPSX,COL("ACTION"))
- +7 DO ADDPDO^VPSOBJ(OREF,VPSX)
- +8 QUIT
- +9 ;
- ADDCHG(OREF,ANAME,REACTION,ACTION) ; build allergies changes
- +1 ; INPUT
- +2 ; OREF : Object Reference for the VPS PDO object
- +3 ; ANAME : newly entered Allergy name
- +4 ; REACTION : array of reactions of the allergy
- +5 ; ACTION : what to do with the reaction review
- +6 ;
- +7 NEW COL
- DO GETFORMT^VPSOBJ(OREF,.COL)
- +8 NEW VPSX
- SET VPSX=""
- +9 SET VPSX=$$SETFLD^VPSPUTL1(ANAME,VPSX,COL("ALLERNM"))
- +10 SET VPSX=$$SETFLD^VPSPUTL1(REACTION(1),VPSX,COL("REACTION"))
- +11 SET VPSX=$$SETFLD^VPSPUTL1(ACTION,VPSX,COL("ACTION"))
- +12 DO ADDPDO^VPSOBJ(OREF,VPSX)
- +13 ;
- +14 NEW RSS
- SET RSS=1
- +15 SET VPSX=""
- +16 FOR
- SET RSS=$ORDER(REACTION(RSS))
- if 'RSS
- QUIT
- Begin DoDot:1
- +17 SET VPSX=$$SETFLD^VPSPUTL1(REACTION(RSS),VPSX,COL("REACTION"))
- +18 DO ADDPDO^VPSOBJ(OREF,VPSX)
- End DoDot:1
- +19 QUIT