- ORWU2 ;SLC/JEH - General Utilities for Windows Calls [2/25/04 11:10am]
- ;;3.0;ORDER ENTRY/RESULTS REPORTING;**243**;Dec 17, 1997;Build 242
- ;
- Q
- ;
- ; Return a set of names from the NEW PERSON file.
- COSIGNER(ORY,ORFROM,ORDIR,ORDATE,ORTIUTYP,ORTIUDA) ;
- ; (Set up for the DC Summary)
- ; (to use TIU doc requirments and USR PROVIDER)
- ;
- ; PARAMS from ORWU2 COSIGNER RPC call:
- ; .ORY=returned list.
- ; ORFROM=Starting name for this set.
- ; ORDIR=Direction to move through the x-ref with $O.
- ; ORDATE=Checks for an USR PROVIDER on this date (optional).
- ; ORTIUTYP is + of the 0 node of the 8925 docmt.
- ; ORTIUDA is the docmt IEN,
- ;
- ;
- ;
- N ORDD,ORDIV,ORDUP,ORGOOD,ORI,ORIEN1,ORIEN2,ORLAST,ORMAX,ORMRK,ORMULTI,ORPREV,ORSRV,ORTTL,ORERR
- ;
- S ORI=0,ORMAX=44,(ORLAST,ORPREV)="",ORDATE=$G(ORDATE) ;ORKEY=$G(ORKEY)
- I +$G(ORTIUDA) S ORTIUTYP=+$G(^TIU(8925,+$G(ORTIUDA),0))
- S ORMULTI=$$ALL^VASITE ; IA# 10112. Do once at beginning of call.
- ;
- F Q:ORI'<ORMAX S ORFROM=$O(^VA(200,"AUSER",ORFROM),ORDIR) Q:ORFROM="" D
- .S ORIEN1=""
- .F S ORIEN1=$O(^VA(200,"AUSER",ORFROM,ORIEN1),ORDIR) Q:'ORIEN1 D
- ..;
- ..I '$$PROVIDER^XUSER(ORIEN1,1) Q ; Terminated?
- ..I '$$ISA^USRLM(+ORIEN1,"PROVIDER",.ORERR,ORDATE) Q ;(USR PROVIDER CLASS CHECK?)
- TIU .. I $$REQCOSIG^TIULP(ORTIUTYP,ORTIUDA,ORIEN1,ORDATE) Q ; User requiers cosigner
- ..;I ($L(ORKEY)),(ORKEY'="COSIGNER"),('$D(^XUSEC(ORKEY,+ORIEN1))) Q ; Check for key?
- ..;I ORDATE>0,$$GET^XUA4A72(ORIEN1,ORDATE)<1 Q ; Check date?
- ..S ORI=ORI+1,ORY(ORI)=ORIEN1_"^"_$$NAMEFMT^XLFNAME(ORFROM,"F","DcMPC")
- ..S ORDUP=0 ; Init flag, check dupe.
- ..I ($P(ORPREV_" "," ")=$P(ORFROM_" "," ")) S ORDUP=1
- ..;
- ..; Append Title if not duplicated:
- ..I 'ORDUP D
- ...S ORIEN2=ORIEN1
- ...D COS4(0) ; Get Title.
- ...I ORTTL="" Q
- ...S ORY(ORI)=ORY(ORI)_U_"- "_ORTTL
- ..;
- ..; Get data in case of dupes:
- ..I ORDUP D
- ...S ORIEN2=ORLAST ; Prev IEN for NP2 call.
- ...;
- ...; Reset, use previous array element, call for extended data:
- ...S ORI=ORI-1,ORY(ORI)=$P(ORY(ORI),U)_U_$P(ORY(ORI),U,2) D COS2
- ...;
- ...; Then return to current user for second extended data call:
- ...S ORIEN2=ORIEN1,ORI=ORI+1 D COS2
- ..S ORLAST=ORIEN1,ORPREV=ORFROM ; Reassign vars for next pass.
- ;
- END Q
- ;
- COS2 ; Retrieve subset of data for dupes in COSIGNER.
- ; (Assumes certain vars already set/new'd in calling code.)
- ;
- ; Variables used:
- ; ORZ = Memory array storage variable.
- ; ORZERR = Error storage for LIST^DIC call.
- ;
- N ORZ,ORZERR ; Initialize variables.
- S ORDIV="" ; Reset each time.
- D COS4(1) ; Get Title, Service/Section.
- ;
- ; For multi-divisional site, get Division if determinable:
- I ORMULTI D
- .D LIST^DIC(200.02,","_ORIEN2_",","@;.01;1","QP","","","","","","","ORZ","ORZERR")
- .S (ORDD,ORGOOD)=0 ; Initialize variables.
- .I $P(ORZ("DILIST",0),U)=0 Q ; Division not listed.
- .I $P(ORZ("DILIST",0),U)=1 D Q ; Only one, so use it.
- ..S ORDD=$O(ORZ("DILIST",ORDD)) ; Get the node's entry.
- ..S ORDIV=$P(ORDD,U,2) ; Get actual name value.
- .;
- .; More than one Division entry, so:
- .F S ORDD=$O(ORZ("DILIST",ORDD)) Q:+ORDD=0!'($L(ORDD)) D Q:ORGOOD
- ..;
- ..; See if current entry being processed is "Default" (done if so):
- ..I $P(ORZ("DILIST",ORDD,0),U,3)["Y" S ORDIV=$P(ORZ("DILIST",ORDD,0),U,2),ORGOOD=1 Q ; Division text.
- ;
- ; Append new pieces to array string:
- S ORMRK=""
- I (ORTTL="")&(ORSRV="")&(ORDIV="") Q ; Nothing to append.
- S ORY(ORI)=ORY(ORI)_U_"- " ; At least something exists.
- I (ORTTL'="") S ORY(ORI)=ORY(ORI)_ORTTL,ORMRK=", " ; Title.
- I (ORSRV'="") S ORY(ORI)=ORY(ORI)_ORMRK_ORSRV,ORMRK=", " ; Service.
- I (ORDIV'="") S ORY(ORI)=ORY(ORI)_ORMRK_ORDIV ; Division.
- ;
- Q
- ;
- ;
- COS4(ORSS) ; Retrieve Title or Title and Service/Section.
- ; (Assumes certain vars already set/new'd in calling code.)
- ;
- ; Passed variable ORSS: If true, get Service/Section also.
- ;
- S (ORTTL,ORSRV)="" ; Init each time.
- ; DBIA# 4329:
- S ORTTL=$P($G(^VA(200,ORIEN2,0)),U,9) ; Get Title pointer.
- I ORTTL<1 S ORTTL="" ; Reset var if none.
- ; DBIA# 1234:
- I ORTTL>0 S ORTTL=$G(^DIC(3.1,ORTTL,0)) ; Actual Title value.
- S ORSS=$G(ORSS)
- I ORSS D ; Get Service/Section?
- .; DBIA# 4329:
- .S ORSRV=$P($G(^VA(200,ORIEN2,5)),U,1) ; Get S/S pointer.
- .I ORSRV<1 S ORSRV="" ; Reset var if none.
- .; DBIA# 4330:
- .I ORSRV>0 S ORSRV=$P($G(^DIC(49,ORSRV,0)),U) ; Actual S/S value.
- ;
- Q
- ;
- ORWU2 ;SLC/JEH - General Utilities for Windows Calls [2/25/04 11:10am]
- +1 ;;3.0;ORDER ENTRY/RESULTS REPORTING;**243**;Dec 17, 1997;Build 242
- +2 ;
- +3 QUIT
- +4 ;
- +5 ; Return a set of names from the NEW PERSON file.
- COSIGNER(ORY,ORFROM,ORDIR,ORDATE,ORTIUTYP,ORTIUDA) ;
- +1 ; (Set up for the DC Summary)
- +2 ; (to use TIU doc requirments and USR PROVIDER)
- +3 ;
- +4 ; PARAMS from ORWU2 COSIGNER RPC call:
- +5 ; .ORY=returned list.
- +6 ; ORFROM=Starting name for this set.
- +7 ; ORDIR=Direction to move through the x-ref with $O.
- +8 ; ORDATE=Checks for an USR PROVIDER on this date (optional).
- +9 ; ORTIUTYP is + of the 0 node of the 8925 docmt.
- +10 ; ORTIUDA is the docmt IEN,
- +11 ;
- +12 ;
- +13 ;
- +14 NEW ORDD,ORDIV,ORDUP,ORGOOD,ORI,ORIEN1,ORIEN2,ORLAST,ORMAX,ORMRK,ORMULTI,ORPREV,ORSRV,ORTTL,ORERR
- +15 ;
- +16 ;ORKEY=$G(ORKEY)
- SET ORI=0
- SET ORMAX=44
- SET (ORLAST,ORPREV)=""
- SET ORDATE=$GET(ORDATE)
- +17 IF +$GET(ORTIUDA)
- SET ORTIUTYP=+$GET(^TIU(8925,+$GET(ORTIUDA),0))
- +18 ; IA# 10112. Do once at beginning of call.
- SET ORMULTI=$$ALL^VASITE
- +19 ;
- +20 FOR
- IF ORI'<ORMAX
- QUIT
- SET ORFROM=$ORDER(^VA(200,"AUSER",ORFROM),ORDIR)
- IF ORFROM=""
- QUIT
- Begin DoDot:1
- +21 SET ORIEN1=""
- +22 FOR
- SET ORIEN1=$ORDER(^VA(200,"AUSER",ORFROM,ORIEN1),ORDIR)
- IF 'ORIEN1
- QUIT
- Begin DoDot:2
- +23 ;
- +24 ; Terminated?
- IF '$$PROVIDER^XUSER(ORIEN1,1)
- QUIT
- +25 ;(USR PROVIDER CLASS CHECK?)
- IF '$$ISA^USRLM(+ORIEN1,"PROVIDER",.ORERR,ORDATE)
- QUIT
- TIU ; User requiers cosigner
- IF $$REQCOSIG^TIULP(ORTIUTYP,ORTIUDA,ORIEN1,ORDATE)
- QUIT
- +1 ;I ($L(ORKEY)),(ORKEY'="COSIGNER"),('$D(^XUSEC(ORKEY,+ORIEN1))) Q ; Check for key?
- +2 ;I ORDATE>0,$$GET^XUA4A72(ORIEN1,ORDATE)<1 Q ; Check date?
- +3 SET ORI=ORI+1
- SET ORY(ORI)=ORIEN1_"^"_$$NAMEFMT^XLFNAME(ORFROM,"F","DcMPC")
- +4 ; Init flag, check dupe.
- SET ORDUP=0
- +5 IF ($PIECE(ORPREV_" "," ")=$PIECE(ORFROM_" "," "))
- SET ORDUP=1
- +6 ;
- +7 ; Append Title if not duplicated:
- +8 IF 'ORDUP
- Begin DoDot:3
- +9 SET ORIEN2=ORIEN1
- +10 ; Get Title.
- DO COS4(0)
- +11 IF ORTTL=""
- QUIT
- +12 SET ORY(ORI)=ORY(ORI)_U_"- "_ORTTL
- End DoDot:3
- +13 ;
- +14 ; Get data in case of dupes:
- +15 IF ORDUP
- Begin DoDot:3
- +16 ; Prev IEN for NP2 call.
- SET ORIEN2=ORLAST
- +17 ;
- +18 ; Reset, use previous array element, call for extended data:
- +19 SET ORI=ORI-1
- SET ORY(ORI)=$PIECE(ORY(ORI),U)_U_$PIECE(ORY(ORI),U,2)
- DO COS2
- +20 ;
- +21 ; Then return to current user for second extended data call:
- +22 SET ORIEN2=ORIEN1
- SET ORI=ORI+1
- DO COS2
- End DoDot:3
- +23 ; Reassign vars for next pass.
- SET ORLAST=ORIEN1
- SET ORPREV=ORFROM
- End DoDot:2
- End DoDot:1
- +24 ;
- END QUIT
- +1 ;
- COS2 ; Retrieve subset of data for dupes in COSIGNER.
- +1 ; (Assumes certain vars already set/new'd in calling code.)
- +2 ;
- +3 ; Variables used:
- +4 ; ORZ = Memory array storage variable.
- +5 ; ORZERR = Error storage for LIST^DIC call.
- +6 ;
- +7 ; Initialize variables.
- NEW ORZ,ORZERR
- +8 ; Reset each time.
- SET ORDIV=""
- +9 ; Get Title, Service/Section.
- DO COS4(1)
- +10 ;
- +11 ; For multi-divisional site, get Division if determinable:
- +12 IF ORMULTI
- Begin DoDot:1
- +13 DO LIST^DIC(200.02,","_ORIEN2_",","@;.01;1","QP","","","","","","","ORZ","ORZERR")
- +14 ; Initialize variables.
- SET (ORDD,ORGOOD)=0
- +15 ; Division not listed.
- IF $PIECE(ORZ("DILIST",0),U)=0
- QUIT
- +16 ; Only one, so use it.
- IF $PIECE(ORZ("DILIST",0),U)=1
- Begin DoDot:2
- +17 ; Get the node's entry.
- SET ORDD=$ORDER(ORZ("DILIST",ORDD))
- +18 ; Get actual name value.
- SET ORDIV=$PIECE(ORDD,U,2)
- End DoDot:2
- QUIT
- +19 ;
- +20 ; More than one Division entry, so:
- +21 FOR
- SET ORDD=$ORDER(ORZ("DILIST",ORDD))
- IF +ORDD=0!'($LENGTH(ORDD))
- QUIT
- Begin DoDot:2
- +22 ;
- +23 ; See if current entry being processed is "Default" (done if so):
- +24 ; Division text.
- IF $PIECE(ORZ("DILIST",ORDD,0),U,3)["Y"
- SET ORDIV=$PIECE(ORZ("DILIST",ORDD,0),U,2)
- SET ORGOOD=1
- QUIT
- End DoDot:2
- IF ORGOOD
- QUIT
- End DoDot:1
- +25 ;
- +26 ; Append new pieces to array string:
- +27 SET ORMRK=""
- +28 ; Nothing to append.
- IF (ORTTL="")&(ORSRV="")&(ORDIV="")
- QUIT
- +29 ; At least something exists.
- SET ORY(ORI)=ORY(ORI)_U_"- "
- +30 ; Title.
- IF (ORTTL'="")
- SET ORY(ORI)=ORY(ORI)_ORTTL
- SET ORMRK=", "
- +31 ; Service.
- IF (ORSRV'="")
- SET ORY(ORI)=ORY(ORI)_ORMRK_ORSRV
- SET ORMRK=", "
- +32 ; Division.
- IF (ORDIV'="")
- SET ORY(ORI)=ORY(ORI)_ORMRK_ORDIV
- +33 ;
- +34 QUIT
- +35 ;
- +36 ;
- COS4(ORSS) ; Retrieve Title or Title and Service/Section.
- +1 ; (Assumes certain vars already set/new'd in calling code.)
- +2 ;
- +3 ; Passed variable ORSS: If true, get Service/Section also.
- +4 ;
- +5 ; Init each time.
- SET (ORTTL,ORSRV)=""
- +6 ; DBIA# 4329:
- +7 ; Get Title pointer.
- SET ORTTL=$PIECE($GET(^VA(200,ORIEN2,0)),U,9)
- +8 ; Reset var if none.
- IF ORTTL<1
- SET ORTTL=""
- +9 ; DBIA# 1234:
- +10 ; Actual Title value.
- IF ORTTL>0
- SET ORTTL=$GET(^DIC(3.1,ORTTL,0))
- +11 SET ORSS=$GET(ORSS)
- +12 ; Get Service/Section?
- IF ORSS
- Begin DoDot:1
- +13 ; DBIA# 4329:
- +14 ; Get S/S pointer.
- SET ORSRV=$PIECE($GET(^VA(200,ORIEN2,5)),U,1)
- +15 ; Reset var if none.
- IF ORSRV<1
- SET ORSRV=""
- +16 ; DBIA# 4330:
- +17 ; Actual S/S value.
- IF ORSRV>0
- SET ORSRV=$PIECE($GET(^DIC(49,ORSRV,0)),U)
- End DoDot:1
- +18 ;
- +19 QUIT
- +20 ;