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

VENPCCC.m

Go to the documentation of this file.
  1. VENPCCC ; IHS/OIT/GIS - CHECK LIST MANAGEMENT ;
  1. ;;2.6;PCC+;;NOV 12, 2007
  1. ;
  1. ;
  1. ;
  1. POP(DEFEF,DFN) ; EP - POPULATE CHECKLIST ITEM MM FIELDS
  1. N DEMO,GIEN,IIEN,STG,MM,C1,C2,TMP,GRP,CKIEN,DOB,SEX,AGE,CAT,LIEN,OGIEN,MN,CNT,FLD,NAME,PRE,POST
  1. S TMP=$NA(^TMP("VEN PRNT",$J,1))
  1. I '$O(^VEN(7.41,+$G(DEFEF),17,0)) Q ; NO CHECKLISTS ASSOCIATED WITH THIS FORM
  1. S DEMO=$G(^DPT(+$G(DFN),0)) I '$L(DEMO) Q
  1. S SEX=$P(DEMO,U,2) I SEX'="M",SEX'="F" Q
  1. S DOB=$P(DEMO,U,3) I 'DOB Q
  1. S AGE=DT-DOB\10000
  1. S GRP=$S(AGE<2:1,AGE<13:2,SEX="M":3,1:4)
  1. S GIEN=0
  1. F S GIEN=$O(^VEN(7.41,DEFEF,17,GIEN)) Q:'GIEN D
  1. . S LIEN=$P($G(^VEN(7.41,DEFEF,17,GIEN,0)),U) I 'LIEN Q ; CKLIST SUBFILE IEN
  1. . S %=$G(^VEN(7.9,LIEN,0)) I '$L(%) Q ; PATCHED GIS/OIT 10/4/2005 ; CHECKLIST FILE ; PCC+ 2.5 PATCH 1
  1. . S OGIEN=$P(%,U,2) I 'OGIEN Q ; CHECKLIST CATEGORY
  1. . S PRE=$P(%,U,3) S POST=$P(%,U,4) ; PRE AND POST NOW ASSOCIATED WITH THE CHECKLIST - NOT THE ITEM
  1. . S MN=$P($G(^VEN(7.98,OGIEN,0)),U,3) I MN="" Q ; MAIL MERGE MNEMONIC
  1. . S IIEN=0 S CNT=0
  1. . F S IIEN=$O(^VEN(7.91,"AB",LIEN,IIEN)) Q:'IIEN D
  1. .. S STG=$G(^VEN(7.91,IIEN,0)) I STG="" Q
  1. .. I '$P(STG,U,GRP+2) Q ; CK GROUP
  1. .. S NAME=$P(STG,U) I NAME="" Q
  1. .. S C1=$P(STG,U,7) S C2=$P(STG,U,8)
  1. .. S PRE=$P(STG,U,9),POST=$P(STG,U,10)
  1. .. S CNT=CNT+1
  1. .. S FLD=MN_CNT S @TMP@(FLD)=PRE_NAME_POST ; CHECKLIST ITEM
  1. .. I $L(C1) S FLD=MN_CNT_"a" S @TMP@(FLD)=C1 ; PRIMARY CODE - TYPICALLY THE CPT
  1. .. I $L(C2) S FLD=FLD_CNT_"x" S @TMP@(FLD)=C2 ; SECONDARY CODE
  1. .. Q
  1. . Q
  1. Q
  1. ;
  1. CONVERT ; EP-CONVERT ORDERABLE SETS/GROUPS TO CHECK LISTS
  1. I '$O(^VEN(7.9,0)),'$O(^VEN(7.91,0)) ; MAKE SURE THAT THIS IS A VIRGIN CONVERSION
  1. E W !,"Conversion has already been completed! Request cancelled..." Q
  1. N SIEN,SET,%,%Y
  1. W "Want to convert order sets and orderables to checklists and items"
  1. S %=1 D YN^DICN
  1. I %'=1 W !,"Request cancelled..." Q
  1. I '$O(^VEN(7.92,0)) S SET="GENERIC CHECK LIST",SIEN="" D CKLIST(SET,SIEN) I 1 ; ORDER SETS HAVE NOT BEEN SET UP YET
  1. E S SIEN=0 F S SIEN=$O(^VEN(7.92,SIEN)) Q:'SIEN S SET=$P($G(^VEN(7.92,SIEN,0)),U) I $L(SET) D CKLIST(SET,SIEN)
  1. D ITEMS
  1. S DIE="^VEN(7.5," S DA=$$CFG^VENPCCU S DR=".17////1"
  1. L +^VEN(7.5,DA):0 I $T D ^DIE L -^VEN(7.5,DA) ; SET THE "USE CHECKLIST" PARAMETER IN THE CONFIG FILE
  1. I $O(^VEN(7.91,0)) W !,"Orderables have been successfully converted to checklist items!"
  1. E D ^XBFMK Q
  1. S DA=$O(^DIC(19,"B","VEN CL INITIALIZE CHECKLISTS",0)) I 'DA D ^XBFMK Q
  1. S DIE="^DIC(19,",DR="2////Conversion completed..." ; OUT OF ORDER MESSAGE
  1. L +^DIC(19,DA):0 I $T D ^DIE L -^DIC(19,DA)
  1. D ^XBFMK
  1. Q
  1. ;
  1. CKLIST(SET,SIEN) ; EP-POPULATE THE CHECKLIST FILE
  1. N DIC,GIEN,GROUP,X,Y,%,GMN,LIST,TYPE,TIEN,OSIEN,GSTG,PCE
  1. S DIC="^VEN(7.9,",DLAYGO=19707.9
  1. S DIE=DIC
  1. S DR=".02///^S X=TYPE"
  1. S GIEN=0 S GSTG=""
  1. F S GIEN=$O(^VEN(7.98,GIEN)) Q:'GIEN D ; WITHIN EACH SET, GET ALL ORDERABLE GROUPS
  1. . S %=$G(^VEN(7.98,GIEN,0)) I '$L(%) Q
  1. . S GMN=$P(%,U,2) I '$L(GMN) Q
  1. . I GMN'="HMR",GMN'="EDU" ; REMINDERS AND PT ED TOPICS ARE NOW HANDLED ELSEWHERE
  1. . E Q
  1. . S LIST=SET_" ("_GMN_")"
  1. . S X=LIST S DIC(0)="L"
  1. . D ^DIC I Y=-1 Q ; SET X GROUP = CHECKLIST
  1. . S DA=+Y
  1. . S TYPE="`"_GIEN
  1. . L +^VEN(7.9,DA):0 I $T D ^DIE L -^VEN(7.9,DA)
  1. . S:$L(GSTG) GSTG=GSTG_U
  1. . S GSTG=GSTG_GIEN ; THE GSTG CONTAINS THE IENS OF ALL ORDERABLE GROUPS
  1. . Q
  1. I $L(GSTG) D TEMPLATE(SIEN,GSTG) ; REGISER THE NEW CKLISTS IN THE APPROPRIATE TEMPLATE FILES
  1. Q
  1. ;
  1. TEMPLATE(SIEN,GSTG) ; EP-POPULATE THE CHECKLIST SUBFILE IN THE VEN EHP EF TEMPLATES FILE
  1. ; IF THE TEMPLATE CONTAINS THE ORDER SET, ADD ALL THE ORDER GROUPS TO THE CHECKLIST MULTIPLE
  1. N DA,DIC,DIE,DR,OSIEN,TIEN,X,PCE
  1. S TIEN=0,SIEN=$G(SIEN)
  1. F S TIEN=$O(^VEN(7.41,TIEN)) Q:'TIEN D ; POPULATE THE TEMPLATE FILE
  1. . S OSIEN=$P($G(^VEN(7.41,TIEN,0)),U,9)
  1. . I OSIEN'=SIEN Q ; MUST BE A MATCH (OR IF BOTH ARE BLANK)
  1. . S DA(1)=TIEN,DIC(0)="L",DLAYGO=19707.4117
  1. . S DIC="^VEN(7.41,"_DA(1)_",17,",DIC("P")="19707.4117P"
  1. . F PCE=1:1:$L(GSTG,U) D
  1. .. S X=$P(GSTG,U,PCE) I 'X Q
  1. .. S X="`"_X
  1. .. D ^DIC ; ADD CHECK LISTS TO THE SUBFILE
  1. .. Q
  1. . Q
  1. Q
  1. ;
  1. ITEMS ; EP-CONVERT ORDERABLES TO CHECKLIST ITEMS
  1. ; GO THRU ALL THE ORDERABLES, CONVERT EACH TO A CHECKLIST ITEM
  1. N GIEN,GRP,CKIEN,IGRP,OIEN,%,CAT,MMMN,PMN,ONAME,STG,SIEN,SNAME,CNAME,C1,C2,MN,NAME,PRE,POST
  1. N DIC,DIE,DR,DA,X,Y
  1. S GIEN=0
  1. MNIX F S GIEN=$O(^VEN(7.98,GIEN)) Q:'GIEN D ; MAKE INDEX FOR MAIL MERGE/PREFERENCE MNEMONICS
  1. . S MMMN=$P($G(^VEN(7.98,GIEN,0)),U,3) ; MAIL MERGE MNEMONIC
  1. . I '$L(MMMN) Q
  1. . I MMMN'="y",MMMN'="h"
  1. . E Q
  1. . S PMN=$P(^VEN(7.98,GIEN,0),U,2) ; PREFERENCE MNEMONIC
  1. . I '$L(PMN) Q
  1. . S MN(MMMN)=PMN
  1. . Q
  1. COI ; CONVERT ORDERABLES TO ITEMS
  1. S (DIC,DIE)="^VEN(7.91,",DIC(0)="LX",DLAYGO=19707.91
  1. S ONAME="" F S ONAME=$O(^VEN(7.93,"B",ONAME)) Q:ONAME="" S OIEN=$O(^VEN(7.93,"B",ONAME,0)) I OIEN D
  1. . S STG=$G(^VEN(7.93,OIEN,0)) I '$L(STG) Q
  1. . S SIEN=+$P(STG,U,2) I 'SIEN S SNAME="GENERIC CHECK LIST"
  1. . E S SNAME=$P($G(^VEN(7.92,SIEN,0)),U) I '$L(SNAME) Q
  1. . S CAT=$P(STG,U,10) I CAT="" Q
  1. . S MMMN=$E(CAT,2) I MMMN="" Q
  1. . S GRP=+CAT I GRP,GRP=GRP\1,GRP>0,GRP<5
  1. . E Q
  1. . S PMN=$G(MN(MMMN)) I PMN="" Q
  1. . S CNAME=SNAME_" ("_PMN_")"
  1. . S CKIEN=$O(^VEN(7.9,"B",CNAME,0)) I 'CKIEN Q
  1. . S C1=$P(STG,U,6) S C2=$P(STG,U,7) ; CODES
  1. . S PRE="",POST="",NAME=ONAME
  1. . S %=$E(NAME) I %="_"!(%=" ") D ; GET PRE STRING
  1. .. F I=1:1:$L(NAME) Q:$E(NAME,I)?1A
  1. .. S PRE=$E(NAME,1,I-1) S NAME=$E(NNAME,I,999)
  1. .. Q
  1. . S %=$E(NAME,$L(NAME)) I %="_"!(%=" ") D
  1. .. S %=$L(NAME)
  1. .. F I=%:-1:1 Q:$E(NAME,I)?1A
  1. .. S POST=$E(NAME,I+1,%) S NAME=$E(NAME,1,I)
  1. .. Q
  1. . S X=$$NAME(NAME) ; STANDARDIZE NAME WITH CAPS
  1. . D ^DIC I Y=-1 Q
  1. . S DA=+Y
  1. . D CSUB(CKIEN,DA) ; POPULATE THE CHECKLIST MULTIPLE
  1. . S DR=$$DR(DA,GRP,C1,C2,CKIEN) I DR="" Q ; MAKE DR STRING
  1. . L +^VEN(7.91,DA):0 I $T D ^DIE L -^VEN(7.91,DA)
  1. . F S OIEN=$O(^VEN(7.93,"B",ONAME,OIEN)) Q:'OIEN D ; UPDATE ITEM WITH THE OTHER ENTRIES OF THE SAME NAME
  1. .. S %=$G(^VEN(7.93,OIEN,0)) I '$L(%) Q
  1. .. S CAT=$P(%,U,10) I CAT="" Q
  1. .. S GRP=+CAT I GRP,GRP=GRP\1,GRP>0,GRP<5
  1. .. E Q
  1. .. S C1=$P(%,U,6) S C2=$P(%,U,7)
  1. .. I PRE="" S PRE=$P(%,U,4)
  1. .. S PRE=$E(PRE,1,9) S POST=$E(POST,1,9)
  1. .. S DR=$$DR(DA,GRP,C1,C2,CKIEN,PRE,POST) I DR="" Q
  1. .. L +^VEN(7.91,DA):0 I $T D ^DIE L -^VEN(7.91,DA)
  1. .. Q
  1. . Q
  1. D ^XBFMK
  1. Q
  1. ;
  1. NAME(NAME) ; EP - CAPITALIZE THE 1ST LETTER OF EVERY WORD
  1. N L,I,F,X,Y,A
  1. I '$L($G(NAME)) Q ""
  1. I NAME?1.U Q NAME
  1. S NAME=$$LOW^XLFSTR(NAME),A=""
  1. S L=$L(NAME),F=0,Y=1
  1. F I=1:1:L S X=$E(NAME,I) D
  1. . I Y,X?1L S Y=0,X=$$UP^XLFSTR(X),A=A_X Q ; CAP THE IST LETTER
  1. . I X=" " S F=1,A=A_X Q
  1. . I F,X?1L S F=0,X=$$UP^XLFSTR(X) ; CAP THE IT LETTER AFTER A SPACE
  1. . S A=A_X
  1. . Q
  1. Q A
  1. ;
  1. CSUB(X,Y) ; EP - MAKE ENTRY IN CHECKIN GROUP SUBFILE
  1. N DIC,DIE,DA,DR
  1. I '$D(^VEN(7.9,+$G(X),0)) Q
  1. I '$G(Y) Q
  1. S DA(1)=Y
  1. S DIC="^VEN(7.91,"_DA(1)_",2,"
  1. S DIC(0)="L",DIC("P")="19707.912P",DLAYGO=19707.912
  1. S X="`"_X
  1. D ^DIC
  1. D ^XBFMK
  1. Q
  1. ;
  1. DR(DA,GRP,C1,C2,CKIEN,PRE,POST) ; EP - MAKE DR STG
  1. N DR,STG
  1. S %=$G(GRP) I '% Q
  1. S DR=".0"_(%+2)_"////1"
  1. S STG=$G(^VEN(7.91,+$G(DA),0)) I STG="" Q
  1. I $D(^VEN(7.9,+$G(CKIEN),0)) D ; SET PROPERTIES RELATED TO THE CHECKLIST
  1. . I $P(STG,U,2)="" S DR=DR_";.02////"_CKIEN
  1. . I $L($G(PRE)),$P(^VEN(7.9,CKIEN,0),U,3)="" S $P(^(0),U,3)=PRE ; SET PRE FOR THE CHECKLIST - IF NECESSARY
  1. . I $L($G(POST)),$P(^VEN(7.9,CKIEN,0),U,4)="" S $P(^(0),U,4)=POST ; SET POST FOR THE CHECKLIST - IF NECESSARY
  1. . Q
  1. I $L($G(C1)),$P(STG,U,7)="",C1'[":",C1'[";" S DR=DR_";.07////"_C1
  1. I $L($G(C2)),$P(STG,U,8)="",C2'[":",C2'[";" S DR=DR_";.08////"_C2
  1. Q DR
  1. ;
  1. MM(DA) ; EP - COMPUTE MM FIELD VALUE
  1. N GIEN,IEN,CNT,MM
  1. S MM=""
  1. S GIEN=$P($G(^VEN(7.91,+$G(DA),0)),U,2) I 'GIEN Q MM
  1. S MN=$P($G(^VEN(7.98,GIEN,0)),U,3) I '$L(MN) Q
  1. S CNT=0,IEN=0
  1. F S IEN=$O(^VEN(7.91,"AC",GIEN,IEN)) Q:'IEN S CNT=CNT+1 I IEN=DA Q
  1. I 'CNT Q MM
  1. S MM=MN_CNT
  1. Q MM
  1. ;
  1. CL(OUT,IN) ; EP - RPC: VEN PCC+ GET CL CATEGORIES
  1. ; RETURN THE ADO TEBLE GEN STRING TO VIEW CHECKLIST CATEGORIES
  1. S OUT=""
  1. Q
  1. ;
  1. CLI(OUT,IN) ; EP - RPC: VNE PCC+ GET CL ITEMS
  1. ; RETURN THE ADO TEBLE GEN STRING TO VIEW CHECKLIST ITEMS
  1. S OUT=""
  1. I '$D(^VEN(7.9,+$G(IN),0)) Q
  1. S OUT="BMX ADO SS^VEN CL ITEMS^^AB~"_IN_"~"_IN_"~999999"
  1. Q
  1. ;