Home   Package List   Routine Alphabetical List   Global Alphabetical List   FileMan Files List   FileMan Sub-Files List   Package Component Lists   Package-Namespace Mapping  
Routine: VPSPDO3M

VPSPDO3M.m

Go to the documentation of this file.
  1. VPSPDO3M ;DALOI/KML,WOIFO/BT - PDO OUTPUT DISPLAY - Additional MEDS ;11/20/11 15:30
  1. ;;1.0;VA POINT OF SERVICE (KIOSKS);**3**;Oct 21, 2011;Build 64
  1. ;;Per VHA Directive 2004-038, this routine should not be modified.
  1. ;
  1. Q
  1. ;IA #10103 - supported use of XLFDT functions
  1. ;IA #10104 - supported use of XLFSTR function
  1. ;
  1. ADDMEDS(OREF) ;produce additional meds section
  1. ; INPUT
  1. ; OREF : Object Reference for the VPS PDO object
  1. ;
  1. N PTIEN S PTIEN=$$GETDFN^VPSOBJ(OREF)
  1. N LMRARDT S LMRARDT=$$GETLSTMR^VPSOBJ(OREF)
  1. N STAFF S STAFF=$$GETSTAFF^VPSOBJ(OREF)
  1. ;
  1. N PFVIEW,SFSTVIEW,SFVTVIEW
  1. N M1 S M1=0
  1. N M2 S M2=0
  1. ;
  1. F S M1=$O(^VPS(853.5,PTIEN,"MRAR",LMRARDT,"MEDSADD","B",M1)) Q:'M1 S M2=$O(^(M1,M2)) D
  1. . N FLD1 S FLD1=$$GET1^DIQ(853.55,M2_","_LMRARDT_","_PTIEN_",",1) ; additional medication name entered by patient-facing (kiosk)
  1. . N FLD2 S FLD2=$$GET1^DIQ(853.55,M2_","_LMRARDT_","_PTIEN_",",2) ; additional medication name entered by staff-facing staff view
  1. . N FLD3 S FLD3=$$GET1^DIQ(853.55,M2_","_LMRARDT_","_PTIEN_",",3) ; additional medication name entered by staff-facing vet view
  1. . S:FLD1]"" PFVIEW(M2)="" ; set up additional medication names array to be used in subsequent algorithm
  1. . S:FLD2]"" SFSTVIEW(M2)=""
  1. . S:FLD3]"" SFVTVIEW(M2)=""
  1. ;
  1. N STAFMEDS M STAFMEDS=PFVIEW,STAFMEDS=SFSTVIEW,STAFMEDS=SFVTVIEW ; merge patient-facing and staff-facing added meds into a single array for the patient facilitated note logic
  1. I 'STAFF,$D(PFVIEW) D GETAM(OREF,.PFVIEW)
  1. I STAFF,$D(STAFMEDS) D GETAM(OREF,.STAFMEDS)
  1. K PFVIEW,SFSTVIEW,SFVTVIEW
  1. Q
  1. ;
  1. GETAM(OREF,AMEDITMS) ; get the additional medications data for each sub-entry at 853.55
  1. ; INPUT
  1. ; OREF : Object Reference for the VPS PDO object
  1. ; AMEDITMS : passed in by reference. array represents the list of additional medications to display at a given section
  1. ;
  1. N PTIEN S PTIEN=$$GETDFN^VPSOBJ(OREF)
  1. N LMRARDT S LMRARDT=$$GETLSTMR^VPSOBJ(OREF)
  1. N STAFF S STAFF=$$GETSTAFF^VPSOBJ(OREF)
  1. ;
  1. D ADDUNDLN^VPSOBJ(OREF)
  1. D ADDCJ^VPSOBJ(OREF,"***ADDITIONAL MEDICATIONS/NOT IN SYSTEM***")
  1. ;
  1. N FLD D GETAMDTA(PTIEN,LMRARDT,.AMEDITMS,.FLD) ; Build FLD array of Additional Med data
  1. ;
  1. I 'STAFF D AMVET(OREF,.FLD) ; add additional med data (patient) to result array
  1. I STAFF D AMSTAFF1(OREF,.FLD),AMSTAFF2(OREF,.FLD) ; add additional med data (staff) to result array
  1. Q
  1. ;
  1. AMVET(OREF,FLD) ; add additional med data (veteran-facing) to result array
  1. ; INPUT
  1. ; OREF : Object Reference for the VPS PDO object
  1. ; FLD : array of additional medication data by fieldname
  1. ;
  1. N COL D GETFORMT^VPSOBJ(OREF,.COL)
  1. N HDR S HDR=0
  1. N MIEN S MIEN=0
  1. N VPSX S VPSX=""
  1. ;
  1. F S MIEN=$O(FLD(MIEN)) Q:'MIEN D
  1. . I 'HDR D
  1. . . S HDR=1
  1. . . S VPSX=""
  1. . . S VPSX=$$SETFLD^VPSPUTL1("Name",VPSX,COL("MRNAME"))
  1. . . S VPSX=$$SETFLD^VPSPUTL1("Direction",VPSX,COL("MRDIR"))
  1. . . S VPSX=$$SETFLD^VPSPUTL1("Frequency",VPSX,COL("MRFREQ"))
  1. . . D ADDPDO^VPSOBJ(OREF,VPSX)
  1. . S VPSX=""
  1. . S VPSX=$$SETFLD^VPSPUTL1(FLD(MIEN,1,"E"),VPSX,COL("MRNAME"))
  1. . S VPSX=$$SETFLD^VPSPUTL1(FLD(MIEN,6,"E"),VPSX,COL("MRDIR"))
  1. . S VPSX=$$SETFLD^VPSPUTL1(FLD(MIEN,5,"E"),VPSX,COL("MRFREQ"))
  1. . D ADDPDO^VPSOBJ(OREF,VPSX)
  1. . S VPSX=""
  1. . I FLD(MIEN,4,"I")="Y" S VPSX=$$SETFLD^VPSPUTL1("Patient wants to discuss this with the provider",VPSX,COL("DISCUSS"))
  1. . D ADDPDO^VPSOBJ(OREF,VPSX)
  1. Q
  1. ;
  1. AMSTAFF1(OREF,FLD) ; add additional med data (staff-facing) to result array - first section
  1. ; INPUT
  1. ; OREF : Object Reference for the VPS PDO object
  1. ; FLD : array of additional medication data by fieldname
  1. ;
  1. N COL D GETFORMT^VPSOBJ(OREF,.COL)
  1. N PTIEN S PTIEN=$$GETDFN^VPSOBJ(OREF)
  1. N LMRARDT S LMRARDT=$$GETLSTMR^VPSOBJ(OREF)
  1. ;
  1. ; -- displays only the patient entered meds and any comments made
  1. N HDR S HDR=0
  1. N MIEN S MIEN=0
  1. N VPSX S VPSX=""
  1. ;
  1. F S MIEN=$O(FLD(MIEN)) Q:'MIEN D
  1. . I 'HDR D
  1. . . S VPSX=$$SETFLD^VPSPUTL1("Name/Directions/Frequency (Pt input)",VPSX,COL("ADDMED"))
  1. . . S VPSX=$$SETFLD^VPSPUTL1("Staff Comments",VPSX,COL("ADDSTAFFCOMM"))
  1. . . D ADDPDO^VPSOBJ(OREF,VPSX)
  1. . . S HDR=1
  1. . ;
  1. . ; -- format name/directions/frequency
  1. . N VETADD,NVETADD
  1. . I FLD(MIEN,1,"E")]"" S VETADD(1)=FLD(MIEN,1,"E")_";"_FLD(MIEN,6,"E")_";"_FLD(MIEN,5,"E") ; fields to be displayed at Name/Directions/Frequency column
  1. . I $D(VETADD) S ^TMP("VPSPUTL1",$J)=0 D FCOMM^VPSPUTL1(.VETADD,$P(COL("ADDMED"),U,2),.NVETADD)
  1. . ;
  1. . ; -- format staff comment
  1. . N NSTFCMT
  1. . N STFCMT S STFCMT=$$GET1^DIQ(853.55,MIEN_","_LMRARDT_","_PTIEN_",",7,"","STFCMT") ; comments to be displayed at Staff Comments column
  1. . I STFCMT]"" S ^TMP("VPSPUTL1",$J)=0 D FCOMM^VPSPUTL1(.STFCMT,$P(COL("ADDSTAFFCOMM"),U,2),.NSTFCMT)
  1. . ;
  1. . ;-- add formatted name/directions/frequency and STAFF comment to result array
  1. . N COL1 S COL1=$O(NVETADD(""),-1)
  1. . N COL2 S COL2=$O(NSTFCMT(""),-1)
  1. . N END S END=$S(COL1>COL2:COL1,1:COL2)
  1. . N RSS
  1. . ;
  1. . F RSS=1:1:END D
  1. . . S VPSX=""
  1. . . S VPSX=$$SETFLD^VPSPUTL1($G(NVETADD(RSS)),VPSX,COL("ADDMED"))
  1. . . S VPSX=$$SETFLD^VPSPUTL1($G(NSTFCMT(RSS)),VPSX,COL("ADDSTAFFCOMM"))
  1. . . D ADDPDO^VPSOBJ(OREF,VPSX)
  1. . ;
  1. . K VETADD,NVETADD,STFCMT,NSTFCMT
  1. . D ADDBLANK^VPSOBJ(OREF) ; add blank line between additional medications display
  1. Q
  1. ;
  1. AMSTAFF2(OREF,FLD) ; add additional med data (staff) to result array - first section
  1. ; INPUT
  1. ; OREF : Object Reference for the VPS PDO object
  1. ; FLD : array of additional medication data by fieldname
  1. ;
  1. N COL D GETFORMT^VPSOBJ(OREF,.COL)
  1. N PTIEN S PTIEN=$$GETDFN^VPSOBJ(OREF)
  1. N LMRARDT S LMRARDT=$$GETLSTMR^VPSOBJ(OREF)
  1. ;
  1. ; -- display staff entered meds and any comments made
  1. N HDR S HDR=0
  1. N MIEN S MIEN=0
  1. N VPSX S VPSX=""
  1. ;
  1. F S MIEN=$O(FLD(MIEN)) Q:'MIEN D
  1. . I 'HDR D
  1. . . S VPSX=""
  1. . . S VPSX=$$SETFLD^VPSPUTL1("Name/Dose/Indication",VPSX,COL("ADDMEDSTAFF"))
  1. . . S VPSX=$$SETFLD^VPSPUTL1("Comments",VPSX,COL("ADDSTAFFCOMM"))
  1. . . D ADDPDO^VPSOBJ(OREF,VPSX)
  1. . . S HDR=1
  1. . ; -- format name/dose/indication
  1. . N STAFFADD,NSTAFADD
  1. . S STAFFADD(1)=FLD(MIEN,2,"E")_" "_FLD(MIEN,3,"E") ;fields to be displayed at Name/Dose/Indication column
  1. . S ^TMP("VPSPUTL1",$J)=0 D FCOMM^VPSPUTL1(.STAFFADD,$P(COL("ADDMEDSTAFF"),U,2),.NSTAFADD)
  1. . ;
  1. . ; -- format staff comment
  1. . N STFCMT,NSTFCMT
  1. . S STFCMT=$$GET1^DIQ(853.55,MIEN_","_LMRARDT_","_PTIEN_",",12,"","STFCMT") ; comments to be displayed at Comments column
  1. . I STFCMT]"" S ^TMP("VPSPUTL1",$J)=0 D FCOMM^VPSPUTL1(.STFCMT,$P(COL("ADDSTAFFCOMM"),U,2),.NSTFCMT)
  1. . ;
  1. . ; -- add name/dose/indication and staff comment to result array
  1. . N COL1 S COL1=$O(NSTAFADD(""),-1)
  1. . N COL2 S COL2=$O(NSTFCMT(""),-1)
  1. . N END S END=$S(COL1>COL2:COL1,1:COL2)
  1. . N RSS
  1. . F RSS=1:1:END D
  1. . . S VPSX=""
  1. . . N ADMSTAFF S VPSX=$$SETFLD^VPSPUTL1($G(NSTAFADD(RSS)),VPSX,COL("ADDMEDSTAFF"))
  1. . . N ADSTAFFC S VPSX=$$SETFLD^VPSPUTL1($G(NSTFCMT(RSS)),VPSX,COL("ADDSTAFFCOMM"))
  1. . . D ADDPDO^VPSOBJ(OREF,VPSX)
  1. . ;
  1. . K STAFFADD,NSTAFADD,STFCMT,NSTFCMT
  1. . D ADDBLANK^VPSOBJ(OREF) ; add blank line between additional medications display
  1. Q
  1. ;
  1. GETAMDTA(PTIEN,LMRARDT,AMEDITMS,FLD) ; Build FLD array of Additional Med data
  1. ; INPUT
  1. ; AMEDITMS : passed in by reference. array represents the list of additional medications to display at a given section
  1. ; OUTPUT
  1. ; FLD : array of additional medication data by fieldname
  1. ;
  1. N MIEN S MIEN=0
  1. F S MIEN=$O(AMEDITMS(MIEN)) Q:'MIEN D
  1. . N ADMEDLST D GETS^DIQ(853.55,MIEN_","_LMRARDT_","_PTIEN_",","1;2;3;4;5;6;8;9;10;11","IE","ADMEDLST") ;refer to routine VPSMRAR2 for field references at subfile 853.55
  1. . ; assign data to a simpler array for ease of handling
  1. . S FLD=0 F S FLD=$O(ADMEDLST(853.55,MIEN_","_LMRARDT_","_PTIEN_",",FLD)) Q:'FLD F EXTINT="E","I" S FLD(MIEN,FLD,EXTINT)=ADMEDLST(853.55,MIEN_","_LMRARDT_","_PTIEN_",",FLD,EXTINT)
  1. . K ADMEDLST
  1. Q