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

VENPCCYR.m

Go to the documentation of this file.
  1. VENPCCYR ; IHS/OIT/GIS - COMPONENT FRAMEWORK ; PROCESS ALL CF RPCs [ 03/05/09 4:39 PM ]
  1. ;;2.6;PCC+;**1,3,4**;APR 03, 2012;Build 24
  1. ;
  1. ;
  1. ;
  1. DEMOPT(OUT,IN) ; EP - RPC: VEN CF GET DEMO PT DFN ; RETRUN THE DEMO PATIENT'S DFN
  1. ; RETRUN STRING: DFN;NAME;LOCAL CHART NUMBER
  1. N HRN,DFN
  1. S OUT=""
  1. I $G(IN)="OB" S DFN=$O(^DPT("B","DEMO,OB PATIENT",0))
  1. I $G(IN)="WC" S DFN=$O(^DPT("B","DEMO,WELL CHILD",0))
  1. I $G(IN)="AM" S DFN=$O(^DPT("B","DEMO,ADULT MALE",0))
  1. I $G(IN)="AF" S DFN=$O(^DPT("B","DEMO,ADULT FEMALE",0))
  1. I 'DFN Q
  1. S HRN=$P($G(^AUPNPAT(+DFN,41,DUZ(2),0)),U,2) I 'HRN Q
  1. D PATIENT^VENPCCUR(.OUT,HRN)
  1. Q
  1. ;
  1. MOD(OUT,IN) ; EP - RPC: VEN CF TG STG GET MODULES
  1. S OUT="BMX ADO SS^VEN CF LIST MODULES^^B~~~~"
  1. Q
  1. ;
  1. CMP(OUT,IN) ; EP - RPC: VEN CF TG STG SHOW COMPONENTS
  1. S OUT="BMX ADO SS^VEN CF LIST COMPONENTS^^B~~~~"
  1. Q
  1. ;
  1. PRVLKUP(OUT,IN) ; EP - RPC: VEN CF LIST PROVIDERS
  1. S OUT="BMX ADO SS^VEN CF CHECKIN PROVIDERS^^~~~~~APRV~BMXADOV2"
  1. Q
  1. ;
  1. TX(OUT,IN) ; EP - RPC: VEN CF GET TX STG
  1. ; IN = COMPONENT IEN;DFN;VISIT_IEN;MODULE_IEN;FORM_IEN;USER_IEN The VISIT IEN and DFN CAN BE SET TO 0 FOR DEMO MODE.
  1. ; OUT = Tx STRING
  1. Q
  1. ;
  1. SUBMIT(OUT,IN) ; EP - RPC: VEN CF SUBMIT TX STRING
  1. ; SUBMIT THE UPDATED STRING FROM THE TRANSACTION
  1. ; A VERIFICATION STRING WILL BE RETURNED
  1. S OUT="",IN=$$STG(.IN)
  1. I '$L($G(IN)) Q
  1. Q
  1. ;
  1. ABORT(OUT,IN) ; EP - RPC: VEN CR ABORT A TRANSACTION
  1. ; IN = TXIEN, OUT = TXIEN IF TX WAS SUCCESSFULLY DELETED
  1. S OUT=""
  1. N DA,DIK,DIC,DIE,DR,X,Y
  1. S DA=+$G(IN) I 'DA Q
  1. S DIK="^VEN(7.66,",OUT=DA
  1. D ^DIK
  1. Q
  1. ;
  1. VALV(OUT,IN) ; EP - VEN CF LIST VISITS
  1. ; RETURN THE TX STRING FOR A LIST OF VALID VISITS
  1. S OUT=""
  1. I '$D(^DPT(+$G(IN),0)) Q
  1. S OUT="BMX ADO SS^VEN CF VISIT LIST^^~"_$$FMADD^XLFDT(DT,-3)_"~~20~~VALV~VENPCCYV~"_IN
  1. Q
  1. ;
  1. NEWV(OUT,IN) ; EP - VEN CF CREATE TEST VISIT
  1. ; GIVEN SOURCE VISIT IEN AND NEW TIMESTAMP (VIEN;TS), CLONE A VISIT STUB AND PRIMARY V PRV & V POV ENTRIES
  1. N TS,%DT,X,Y,Z,VIEN,VDT,NVIEN
  1. S (VDT,OUT)=""
  1. S VIEN=+$G(IN) I '$D(^AUPNVSIT(VIEN,0)) Q
  1. S TS=$P($G(IN),";",2) I '$L(TS) Q
  1. S X=TS,%DT="T" D ^%DT I Y=-1 Q
  1. S VDT=Y
  1. I 'VDT Q
  1. D NEWV^VENPCCYV(VIEN,VDT,.NVIEN)
  1. I NVIEN S OUT=NVIEN
  1. Q
  1. ;
  1. FLUSH(OUT,IN) ; EP - RPC: VEN CF FLUSH TX FILE
  1. ; IN = TXIEN;FILE
  1. I '$L($G(IN)) S OUT="MISSING TRANSACTION ID" Q
  1. N TXIEN,CIEN,XDA,X,Y,Z,%,GBL,VIEN,DFN,TXFILE,MODIEN,TFILE,OWNER
  1. S OUT="INVALID TRANSACTION PARAMETER"
  1. S TXIEN=+IN I 'TXIEN Q
  1. S TXFILE=+$P(IN,";",2) I 'TXFILE S TXFILE=19707.66
  1. S OWNER=$P(IN,"|",2)
  1. S GBL=$G(^DIC(TXFILE,0,"GL")) I GBL="" Q
  1. S %=$G(@(GBL_TXIEN_",0)")) I %="" Q
  1. S DFN=+% I 'DFN Q
  1. S MODIEN=$P(%,U,3) I 'MODIEN Q
  1. S VIEN=$P(%,U,2) I 'VIEN Q
  1. S TFILE=0
  1. I $L($T(XDAF^VENPCCYP)) F S TFILE=$O(^VEN(7.69,MODIEN,3,"B",TFILE)) Q:'TFILE D XDAF^VENPCCYP(TFILE,TXIEN,VIEN,DFN,.XDA) ; LOOP THROUGH ALL THE LINKED FILES & MAKE XDA ARRAY
  1. I '$O(XDA(0)) Q
  1. S OUT=""
  1. I $L($T(FLUSH^VENPCCYF)) D FLUSH^VENPCCYF(TXFILE,TXIEN,.XDA,.OUT,OWNER) ; FILE THE DATA, DELETE THE TX ROW
  1. Q
  1. ;
  1. MODEF(OUT,IN) ; EP - RPC: VEN CF GET MODULE DEFINITION ; RETRUN THE MODULE DEFINITION STRING (MODULE/FORM/COMPONENT)
  1. Q
  1. ;
  1. MODXML(OUT,IN) ; EP RPC: VEN CF GET MODULE DEF XML ; RETURN MODULE DEFINITION AS AN XML ARRAY
  1. Q
  1. ;
  1. STG(IN) ; EP - CONVERT AN ARRAY TO A STRING
  1. N X,STG
  1. I '$O(IN(0)) Q $G(IN)
  1. S STG="",X=0
  1. F S X=$O(IN(X)) Q:'X S STG=STG_IN(X)
  1. Q STG
  1. ;
  1. MAP(OUT,IN) ; EP - MAP GUI HEADERS AND COMPONENTS ; RPC = VEN CF GET HEADER MAP
  1. ; IN = FORM IEN
  1. ; OUT = HEADER NAME^COMPONENT NAME|COMPONENT IEN~COMPONENT NAME|COMPONENT IEN...
  1. Q
  1. ;
  1. TRIGGER(OUT,IN) ; EP - RPC: VEN CF TRIGGER
  1. ; IF A FIELD IN THE TX FILE IS A TRIGGER, SEND THAT QUAD HERE.
  1. ; RETURNS UPDATED QUAD STRING WITH ALL TRIGGERED ELEMENTS (INCLUDING TRIGGERED ELEMENTS IN OTHER COMPONENTS)
  1. Q
  1. ;
  1. CKTX(OUT,IN) ; EP - RPC: VEN CF CHECK TX ; CHECKS TO SEE IF THERE ALREADY IS AN ENTRY IN THE TX FILE FOR THIS PT
  1. ; INPUT: DFN|FORM_IEN|VISIT_IEN ; OUTUT = 1 OR 0
  1. S OUT=0
  1. I '$G(IN) Q
  1. N FIEN,VIEN,DFN,TXIEN,V,F,P,PIEN,TXUID,DATA
  1. S DFN=$P(IN,"|"),FIEN=$P(IN,"|",2),VIEN=$P(IN,"|",3),PIEN=$P(IN,"|",4)
  1. I FIEN,VIEN
  1. E Q
  1. S %=VIEN_";"_FIEN
  1. S TXIEN=$O(^VEN(7.66,"AU",%,0)) I 'TXIEN S OUT="0|" Q
  1. S DATA=$G(^VEN(7.66,TXIEN,0)) I DATA="" K ^VEN(7.66,TXIEN),^VEN(7.66,"AU",%) Q "0|"
  1. I $P(DATA,U,9) S OUT="2|" Q
  1. S P=$P(DATA,U,7)
  1. I P S P=P_"|"_$P($G(^VA(200,P,0)),U)
  1. S OUT="1|"_P
  1. Q
  1. ;
  1. DELTX(OUT,IN) ; EP - RPC: VEN CF DELETE TX ; DELETES AN ABORTED TX
  1. ; INPUT: DFN|FORM_IEN|VISIT_IEN ; OUTUT = 1 OR 0
  1. S OUT=0
  1. I '$G(IN) Q
  1. N DA,DIK,DIC,DIE,DR,X,Y,FIEN,VIEN,F,V,EDD,GBL,%
  1. S DFN=$P(IN,"|"),FIEN=$P(IN,"|",2),VIEN=$P(IN,"|",3)
  1. I DFN,FIEN,VIEN
  1. E Q
  1. TXCLEAN S DA=$O(^VEN(7.66,"AU",VIEN_";"_FIEN,0)) I 'DA Q
  1. I $P($G(^VEN(7.66,DA,0)),U,9) D Q ; TX CLOSED. DONT DELETE. JUST CREATE A STUB
  1. . S %=^VEN(7.66,DA,0)
  1. . S EDD=$P($G(^VEN(7.66,DA,101)),U)
  1. . S $P(%,U,6)="",$P(%,U,9)=1 ; CLEAR STUBS CREATED AND SET TX STATUS = "CLOSED"
  1. . S GBL=$NA(^VEN(7.66))
  1. . K @GBL@(DA)
  1. . I EDD K @GBL@("AEW",EDD,DA) ; KILL OFF EVERYTHING EXCEPT 0 NODE & 0 NODE INDICES
  1. . S @GBL@(DA,0)=%
  1. . Q
  1. S DIK="^VEN(7.66,"
  1. D ^DIK
  1. D ^XBFMK
  1. Q
  1. ;
  1. USER(OUT,IN) ; EP - RPC: VEN CF CURRENT USER
  1. ; IN = VIEN|FIEN|PRVIEN ; OUT = 1 IF REQUEST WAS SUCCESSFUL. IF NOT, OUT = 0
  1. ; IF PRVIEN IS DEFINED, TX IS ASSIGNED TO THAT PROVIDER. IF NOT, TX IS CLEARED OF ITS USER
  1. S OUT=0
  1. I $G(IN)="" Q
  1. N VIEN,PRVIEN,FIEN,X,Y,Z,%,TXIEN
  1. S VIEN=$P(IN,"|"),FIEN=$P(IN,"|",2),PRVIEN=$P(IN,"|",3)
  1. I VIEN,FIEN
  1. E Q
  1. S %=VIEN_";"_FIEN,TXIEN=+$O(^VEN(7.66,"AU",%,0)) I '$D(^VEN(7.66,TXIEN,0)) Q
  1. S OUT=1
  1. S $P(^VEN(7.66,TXIEN,0),U,7)=$S(PRVIEN:PRVIEN,1:"")
  1. Q
  1. ;
  1. AV(OUT,IN) ; EP - RPC: VEN CF AV CODES
  1. S OUT="",IN=""
  1. Q
  1. ;
  1. TVAL(OUT,IN) ; EP - RPC: VEN CF VALIDATION TEST
  1. S OUT=""
  1. I $G(IN)="" Q
  1. N FILE,FLD,VAL,X,Y,Z,%,RESULT
  1. S Z=$P(IN,"|",3) I Z'["~RPC" Q
  1. S VAL=$P($P(IN,"|",2),"~") I VAL="" Q
  1. S %=$P(IN,"|",4)
  1. S FILE=$P(%,"~") I 'FILE Q
  1. S FLD=$P(%,"~",2) I 'FLD Q
  1. D CHK^DIE(FILE,FLD,"",VAL,.RESULT)
  1. I RESULT'=U S OUT="OK" Q
  1. S OUT=$G(^DD(FILE,FLD,3))
  1. Q
  1. ;
  1. VAL(OUT,IN) ; EP - RPC: VEN CF VALIDATION MSG
  1. S OUT=""
  1. I $G(IN)="" S OUT=0 Q
  1. N X,Y,Z,%,PCE,MAX
  1. S MAX=$L(IN,"|")
  1. F PCE=1:1:MAX D
  1. . S X=$P(IN,"|",PCE),Z=""
  1. . D VAL1(.Z,X)
  1. . I Z="" S Z=0
  1. . I $L(OUT) S OUT=OUT_"|"
  1. . S OUT=OUT_Z
  1. . Q
  1. I OUT="" S OUT=0
  1. Q
  1. ;
  1. VAL1(OUT,IN) ; NEW CODE SUPPORTS MULTIPLE VALIDATION MESSAGES
  1. S OUT=""
  1. I $G(IN)="" Q
  1. N FILE,FLD,X,Y,Z,%,CIEN,FMT
  1. S FILE=$P(IN,"~") I 'FILE Q
  1. S FLD=$P(IN,"~",2) I 'FLD Q
  1. S CIEN=$P(IN,"~",3) I 'CIEN Q
  1. S FMT=$P($G(^VEN(7.68,CIEN,0)),U,4)
  1. I FMT="F",$E(FILE,9) S FMT="S"
  1. I FMT="S" D Q
  1. . I $P($G(^DD(FILE,FLD,0)),U,2)["S" S OUT="Pick a code from the list" Q
  1. . I $P($G(^DD(FILE,FLD,0)),U,2)["D",$G(^DD(FILE,FLD,3))="" S OUT="Enter a date (MM/DD/YYYY)" Q
  1. . S OUT=$G(^DD(FILE,FLD,3))
  1. . Q
  1. I FMT="M" S OUT="Add (or append) a note here" Q
  1. I FMT="C" S OUT="Select an item by checking it" Q
  1. I FMT="P" S OUT="Enter status: 'P' (Positive) or 'N' (Negative). Optionally check prompted items. If a prompted item is checked, the status will automatically be set to 'P'." Q
  1. I FMT="R" S OUT="Only one item can be selected from this list." Q
  1. I FMT="W" S OUT="If an item has no current value, you may type a value next to the item." Q
  1. I FMT="T"!(FMT="G") S OUT="This component can not be edited" Q
  1. I FMT="F" D Q
  1. . S %=$G(^VEN(7.68,CIEN,0)) I %="" S OUT=0 Q
  1. . I $P(%,U,16) S OUT="This flowchart can not be edited" Q
  1. . I $P(%,U,14) S OUT="You may add a new row to this flowchart. "
  1. . E S OUT="You may not add a new row to this flowchart. "
  1. . I $P(%,U,13) S OUT=OUT_"You may edit past flowchart entries." Q
  1. . S OUT=OUT_"You may not edit past entries."
  1. . Q
  1. Q
  1. ;
  1. CLTX(OUT,IN) ; EP - RPC: VEN CF TX SCRUB
  1. ; CLEAN OUT ENTIRE TX FILE
  1. S OUT=0
  1. N DA,X,DIK
  1. S DIK="^VEN(7.66,",DA=0
  1. F S DA=$O(^VEN(7.66,DA)) Q:'DA D ^DIK
  1. S X=""
  1. F S X=$O(^VEN(7.66,X)) Q:X="" I X'=0 K ^VEN(7.66,X)
  1. D ^XBFMK
  1. S OUT=1
  1. Q
  1. ;
  1. KBSEC(OUT,USER) ; EP - RPC: VEN KB PRIVILEGES
  1. S OUT=0
  1. I $G(USER)
  1. E Q
  1. I $D(^XUSEC("VENZKBEDIT",USER)) S OUT=1 Q
  1. I $D(^XUSEC("VENZMGUI",USER)) S OUT=1 Q
  1. Q
  1. ;
  1. GUISEC(OUT,USER) ; EP - RPC:VEN WCM GUI PRIVILEGES
  1. S OUT=0
  1. I $G(USER)
  1. E Q
  1. I $D(^XUSEC("VENZDESKTOP",USER)) S OUT=1 Q
  1. I $D(^XUSEC("VENZPRINT",USER)) S OUT=1 Q
  1. I $D(^XUSEC("PROVIDER",USER)) S OUT=1 Q
  1. I $D(^XUSEC("VENZMGUI",USER)) S OUT=1 Q
  1. Q
  1. ;
  1. IEN(X) ; EP - BMX CALL, GENERIC IEN
  1. Q +$G(X)
  1. ;
  1. VIEN(OUT,IN) ; EP - RPC: VEN EHR VISIT STUB ; CONVERT EHR ENCOUNTER STUB TO RPMS VISIT STUB ; IN = DFN|"HLIEN;VDT;A"|PRVIEN ; IF PERFECT MATCH '> 1 HR, OLD VIEN WILL BE RETURNED
  1. S OUT=""
  1. I $L($T(VSTR2VIS^BEHOENCX)),$L($G(IN))
  1. E Q
  1. N X,Y,Z,VSTG,DFN,HLIEN,VDT,PRVIEN,VIEN
  1. S DFN=+IN I '$D(^DPT(DFN,0)) Q
  1. S %=$P(IN,"|",2) I %="" Q
  1. I '$D(^DIC(40.7,+%,0)) Q
  1. I $P(%,";",3)'="A" Q
  1. S VDT=$P(%,";",2) I (VDT\1)'?7N Q
  1. S PRVIEN=$P(IN,"|",3) I PRVIEN,'$D(^VA(200,PRVIEN,0)) Q
  1. S OUT=$$VSTR2VIS^BEHOENCX(DFN,%,1,PRVIEN)
  1. Q
  1. ;