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

BPCMEAS.m

Go to the documentation of this file.
  1. BPCMEAS ; IHS/OIT/MJL - GUI V MEASUREMENT VISIT CREATION ;
  1. ;;1.5;BPC;;MAY 26, 2005
  1. ;;
  1. GETVISIT(BGUARRAY,BPCPIEN,BPCTYPE,BPCVDT,BPCLOC,BPCCAT,BPCMOD,BPCMTYP,BPCMVAL,BPCPROV,BPCEPRV) ;EP CALL
  1. ; FROM REMOTE PROC: BPC MEASVISIT SAVE
  1. ;BGUARRAY is return array
  1. ;BPCPIEN is patient IEN
  1. ;BPCTYPE is VISIT type ex: I FOR IHS
  1. ;BPCVDT is visit date and time in fm format
  1. ;BPCLOC is DUZ(2)
  1. ;BPCCAT is service category
  1. ;BPCMOD is flag ex: C is create/add new entry, M is modify entry
  1. ;BPCMTYP is meas type IEN
  1. ;BPCMVAL is meas value
  1. ;BPCPROV is ordering provider IEN
  1. ;BPCEPRV is encounter provider IEN usually DUZ
  1. ;
  1. EN ;ENTRY POINT FOR TESTING
  1. ;S BPCPIEN=25241,BPCTYPE="I",BPCVDT="3010924.1200"
  1. ;S BPCLOC=DUZ(2),BPCCAT="A",BPCMOD="C",BPCMTYP="4"
  1. ;S BPCMVAL="120/88",BPCPROV=2,BPCEPRV=2
  1. S JOB=$J,XWBWRAP=1,BPCGUI=1
  1. S BGUARRAY="^XTMP(""BPCMV"","_$J_")"
  1. K @BGUARRAY
  1. ;
  1. ;check patient IEN
  1. S BPCERR=0
  1. I $G(BPCPIEN)="" D Q:BPCERR
  1. .S ^XTMP("BPCMV",JOB,1)=-1,^(2)="PATIENT IEN NOT SENT!"
  1. .D KILL
  1. .S BPCERR=1
  1. .Q
  1. ;
  1. ;check patient
  1. S BPCERR=0
  1. I '$D(^AUPNPAT(BPCPIEN,0)) D Q:BPCERR
  1. .S ^XTMP("BPCMV",JOB,1)=-1,^XTMP(2)="PATIENT IEN IS NOT DEFINED!"
  1. .D KILL
  1. .S BPCERR=1
  1. .Q
  1. ;
  1. ;check for DUZ(2)
  1. S BPCERR=0
  1. I 'BPCLOC D Q:BPCERR
  1. .S ^XTMP("BPCMV",JOB,1)=-1,^(2)="LOCATION (DUZ(2)) NOT SENT!"
  1. .D KILL
  1. .S BPCERR=1
  1. .Q
  1. ;
  1. ;check VISIT TYPE
  1. S BPCERR=0
  1. I $G(BPCTYPE)="" D Q:BPCERR
  1. .S:'$D(^APCCCTRL(BPCLOC,0)) BPCERR=1
  1. .S:BPCERR ^XTMP("BPCMV",JOB,1)=-1,^XTMP(2)="VISIT TYPE NOT DEFINED!"
  1. .Q:BPCERR
  1. .S BPCTYPE=$S($P($G(^APCCCTRL(BPCLOC,0)),U,4)'="":$P(^(0),U,4),1:"I")
  1. ;
  1. ;check for SERVICE CATEGORY
  1. S BPCERR=0
  1. I $G(BPCCAT)="" D Q:BPCERR
  1. .S ^XTMP("BPCMV",JOB,1)=-1,^(2)="SERVICE CATEGORY NOT SENT!"
  1. .D KILL
  1. .S BPCERR=1
  1. .Q
  1. ;
  1. ;check for CREATE/MOD flag
  1. S BPCERR=0
  1. I $G(BPCMOD)="" D Q:BPCERR
  1. .S ^XTMP("BPCMV",JOB,1)=-1,^(2)="CREATE/MOD FLAG NOT SENT!"
  1. .D KILL
  1. .S BPCERR=1
  1. .Q
  1. ;
  1. VISIT ;CALLS APCDALV TO CREATE PCC VISIT
  1. K APCDALVR ;KILL PCC DATA ARRAY
  1. K X,Y,DINUM,DLAYGO,DR,DIC,DA,D0,DIU,DIW,DIY,DIV ; KILL FILEMAN VAR
  1. S APCDALVR("APCDAUTO")="" ;BACKGROUND SILENT VISIT CREATION
  1. S APCDALVR("AUPNTALK")="" ;BACKGROUND SILENT VISIT CREATION
  1. S (APCDAUTO,AUPNTALK)=""
  1. S APCDALVR("APCDPAT")=$G(BPCPIEN)
  1. S APCDALVR("APCDTYPE")=$G(BPCTYPE)
  1. S APCDALVR("APCDDATE")=$G(BPCVDT)
  1. S APCDALVR("APCDLOC")=$G(BPCLOC)
  1. S APCDALVR("APCDCAT")=$G(BPCCAT)
  1. D ^APCDALV
  1. ;
  1. ;if no visit is created
  1. S BPCERR=0
  1. I $D(APCDALVR("APCDAFLG")) D Q:BPCERR
  1. .S ^XTMP("BPCMV",JOB,1)=-1
  1. .S ^XTMP("BPCMV",JOB,2)="PCC Visit not created APCDFLG = "
  1. .S ^XTMP("BPCMV",JOB,2)=^XTMP("BPCMV",JOB,2)_APCDALVR("APCDAFLG")
  1. .D KILL
  1. .S BPCERR=1
  1. .Q
  1. S BPCVSIT=APCDALVR("APCDVSIT")
  1. ;
  1. VBUILD ; create APCDALVR array containing the elements to be passed to PCC
  1. ;assume VISIT created and stored in APCDALVR(""APCDVSIT"")
  1. ;
  1. K APCDALVR ;KILL PCC DATA ARRAY
  1. S APCDALVR("APCDAUTO")="" ;BACKGROUND SILENT VISIT CREATION
  1. S APCDALVR("AUPNTALK")="" ;BACKGROUND SILENT VISIT CREATION
  1. S (APCDAUTO,AUPNTALK)=""
  1. S APCDALVR("APCDVSIT")=BPCVSIT
  1. S APCDALVR("APCDPAT")=$G(BPCPIEN)
  1. S BPCERR=0
  1. I '$D(APCDALVR("APCDVSIT")) D Q:BPCERR
  1. .S ^XTMP("BPCMV",JOB,1)=-1,^(2)="PCC Visit not created"
  1. .D KILL
  1. .S BPCERR=1
  1. .Q
  1. ;
  1. ;check for ORDERING PROVIDER
  1. S BPCERR=0
  1. I '+$G(BPCPROV) D Q:BPCERR
  1. .S ^XTMP("BPCMV",JOB,1)=-1,^(2)="INVALID ORDERING PROVIDER SENT!"
  1. .D KILL
  1. .S BPCERR=1
  1. .Q
  1. ;
  1. ;check for ORDERING PROVIDER ENTRY IN VA200
  1. S BPCERR=0
  1. I '$D(^VA(200,+BPCPROV,0)) D Q:BPCERR
  1. .S ^XTMP("BPCMV",JOB,1)=-1,^(2)="ORDERING PROVIDER NOT DEFINED!"
  1. .D KILL
  1. .S BPCERR=1
  1. .Q
  1. ;
  1. ;check for ENCOUNTER PROVIDER
  1. S BPCERR=0
  1. I '+$G(BPCEPRV) D Q:BPCERR
  1. .S ^XTMP("BPCMV",JOB,1)=-1,^(2)="INVALID ENCOUNTER PROVIDER SENT!"
  1. .D KILL
  1. .S BPCERR=1
  1. .Q
  1. ;
  1. ;check for ENCOUNTER PROVIDER ENTRY IN VA200
  1. S BPCERR=0
  1. I '$D(^VA(200,+BPCEPRV,0)) D Q:BPCERR
  1. .S ^XTMP("BPCMV",JOB,1)=-1,^(2)="ENCOUNTER PROVIDER NOT DEFINED!"
  1. .D KILL
  1. .S BPCERR=1
  1. .Q
  1. ;
  1. ;set measurement variables
  1. ;date,meastype,measval previously validated in Client
  1. S APCDALVR("APCDTVAL")=$G(BPCMVAL)
  1. S APCDALVR("APCDTTYP")="`"_BPCMTYP
  1. S APCDALVR("APCDTCDT")=$G(BPCVDT)
  1. S APCDALVR("APCDTEPR")="`"_BPCEPRV
  1. S APCDALVR("APCDTPRV")="`"_BPCPROV
  1. ;
  1. ;define PCC TEMPLATE and run
  1. S BPCVFILE="9000010.01" ;pcc V MEAS file number
  1. S APCDALVR("APCDATMP")="[APCDALVR "_BPCVFILE_" (ADD)]"
  1. I $G(BPCMOD)="M" S APCDALVR("APCDATMP")="[APCDALVR "_BPCVFILE_" (MOD)]"
  1. D ^APCDALVR
  1. ;if no V MEAS is created
  1. S BPCERR=0
  1. I $D(APCDALVR("APCDAFLG")) D Q:BPCERR
  1. .S ^XTMP("BPCMV",JOB,1)=-1
  1. .S ^XTMP("BPCMV",JOB,2)="PCC Measurement not created APCDFLG = "
  1. .S ^XTMP("BPCMV",JOB,2)=^XTMP("BPCMV",JOB,2)_APCDALVR("APCDAFLG")
  1. .D KILL
  1. .S BPCERR=1
  1. .Q
  1. ;
  1. S BPCERR=0
  1. I '$D(APCDALVR("APCDAFLG")) D Q:BPCERR
  1. .S ^XTMP("BPCMV",JOB,1)=3
  1. .S ^XTMP("BPCMV",JOB,2)="PCC Measurement Saved"
  1. .S ^XTMP("BPCMV",JOB,3)=+$G(APCDALVR("APCDADFN"))
  1. .D KILL
  1. .S BPCERR=1
  1. .Q
  1. Q
  1. ;
  1. KILL ;kill variables
  1. K APCDALVR,BPCPIEN,BPCTIEN,BPCLOC,BPCCAT,BPCCTR,BPCEPRV,BPCERR
  1. K BPCGUI,BPCL,BPCLOC,BPCMOD,BPCMTYP,BPCVAL,BPCPIEN,BPCPROV,BPCRTN
  1. K BPCTIEN,BPCTYPE,BPVVDT,BPCVFILE,BPCVSIT,BPCX
  1. Q
  1. ;
  1. HELP(BGUARRAY,BPCMTYP) ;EP CALL
  1. ; FROM REMOTE PROC: BPC MEASTYPE HELP
  1. ;
  1. ENH ;ENTRY POINT FOR TESTING HELP
  1. ;S BPCMTYP=1
  1. S JOB=$J,BPCGUI=1
  1. S XWBWRAP=1,BGUARRAY="^XTMP(""BPCMV"","_$J_")"
  1. K @BGUARRAY
  1. ;
  1. ;check MEASUREMENT TYPE
  1. S BPCERR=0
  1. I '$G(BPCMTYP) D Q:BPCERR
  1. .S ^XTMP("BPCMV",JOB,1)=-1,^XTMP(2)="MEASUREMENT TYPE NOT DEFINED!"
  1. .D KILL
  1. .S BPCERR=1
  1. .Q
  1. ;
  1. S BPCERR=0
  1. I '$D(^AUTTMSR(BPCMTYP,0)) D Q:BPCERR
  1. .S ^XTMP("BPCMV",JOB,1)=-1,^XTMP(2)="MEASUREMENT TYPE IEN NOT DEFINED!"
  1. .D KILL
  1. .S BPCERR=1
  1. .Q
  1. ;
  1. ;called BPCMTYP already set
  1. S BPCMTYP="H"_$P(^AUTTMSR(BPCMTYP,0),U,1)
  1. S:BPCMTYP="HVU" BPCMTYP="HVC"
  1. I BPCMTYP="HHT" S ^XTMP("BPCMV",JOB,1)=2,^XTMP(2)="Enter height in inches and fractions (64 3/4), or inches and",^XTMP(3)="decimal (64.75) Height must be between 10 and 90 inches" Q
  1. I BPCMTYP="HWT" S ^XTMP("BPCMV",JOB,1)=2,^XTMP(2)="Enter weight in LBS and OZs (132 12) or (132 3/4) or (132.75)",^XTMP(3)="Weight must be between 2 and 750 lbs and fractional/decimal part must be a multiple of 1/16 (.0625).i" Q
  1. ;S ^XTMP("BPCMV",JOB,1)=-1,^XTMP(2)="MEASUREMENT TYPE IEN NOT DEFINED!"
  1. S BPCRTN="AUPNVMS2"
  1. S BPCERR=0
  1. I $T(@BPCMTYP^@BPCRTN)="" D Q:BPCERR
  1. .S ^XTMP("BPCMV",JOB,1)=-1,^(2)="MEASUREMENT TYPE HELP NOT AVAILABLE!"
  1. .S BPCERR=1
  1. .Q
  1. ;
  1. S BPCCTR=1
  1. S BPCERR=0
  1. ;
  1. F BPCX=1:1 D Q:BPCERR
  1. .S BPCL=$T(@BPCMTYP+BPCX^@BPCRTN)
  1. .S:BPCL=""!($P(BPCL,";;",1)'=" ") BPCERR=1
  1. .Q:BPCERR
  1. .S ^XTMP("BPCMV",JOB,BPCCTR)=$P(BPCL,";;",2)
  1. .S BPCCTR=BPCCTR+1
  1. ;
  1. S ^XTMP("BPCMV",JOB,.5)=BPCCTR-1
  1. Q
  1. ;
  1. VAL(BGUARRAY,BPCMTYP,BPCMVAL) ;EP CALL
  1. ; FROM REMOTE PROC: BPC MEASVAL VALIDATE
  1. ;
  1. ENV ;ENTRY POINT FOR TESTING VALIDATE
  1. ;S BPCMTYP=4
  1. ;S BPCMVAL="100/80"
  1. S JOB=$J,BPCGUI=1
  1. S XWBWRAP=1,BGUARRAY="^XTMP(""BPCMV"","_$J_")"
  1. K @BGUARRAY
  1. ;
  1. ;check MEASUREMENT VALUE
  1. S BPCERR=0
  1. I $G(BPCMVAL)="" D Q:BPCERR
  1. .S ^XTMP("BPCMV",JOB,1)=-1,^XTMP(2)="MEASUREMENT VALUE NOT DEFINED!"
  1. .D KILL
  1. .S BPCERR=1
  1. .Q
  1. ;
  1. S BPCERR=0
  1. I '$D(^AUTTMSR(BPCMTYP,0)) D Q:BPCERR
  1. .S ^XTMP("BPCMV",JOB,1)=-1,^XTMP(2)="MEASUREMENT TYPE IEN NOT DEFINED!"
  1. .D KILL
  1. .S BPCERR=1
  1. .Q
  1. ;
  1. ;called BPCMTYP already set
  1. S BPCMTYP=$P(^AUTTMSR(BPCMTYP,0),U,1)
  1. S:BPCMTYP="VU" BPCMTYP="VC"
  1. S BPCRTN="AUPNVMSR"
  1. S BPCERR=0
  1. I $T(@BPCMTYP^@BPCRTN)="" D Q:BPCERR
  1. .S ^XTMP("BPCMV",JOB,1)=-1,^(2)="MEASUREMENT VALIDATE NOT AVAILABLE!"
  1. .S BPCERR=1
  1. .Q
  1. ;
  1. S BPCCTR=1
  1. S BPCERR=0
  1. S X=BPCMVAL
  1. D @BPCMTYP^@BPCRTN
  1. I '$D(X) D Q:BPCERR
  1. .S ^XTMP("BPCMV",JOB,1)=-1,^(2)="MEASUREMENT VALUE IS NOT ACCEPTABLE!"
  1. .S BPCERR=1
  1. .Q
  1. ;
  1. S ^XTMP("BPCMV",JOB,.5)=2
  1. S ^XTMP("BPCMV",JOB,1)="INPUT TRANSFORM OK!"
  1. Q